Skip to content

Commit 8b0816b

Browse files
committed
feat(api/commit): add ls.dirs scope enumeration helper
1 parent 8daaa61 commit 8b0816b

File tree

5 files changed

+31
-1
lines changed

5 files changed

+31
-1
lines changed

src/api/__tests__/__fixtures__/ls/dirs/.baz/.gitkeep

Whitespace-only changes.

src/api/__tests__/__fixtures__/ls/dirs/bar/.gitkeep

Whitespace-only changes.

src/api/__tests__/__fixtures__/ls/dirs/foo/.gitkeep

Whitespace-only changes.

src/api/__tests__/commit.js

+18
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,22 @@ describe('ls', () => {
1515

1616
expect(result.sort()).toEqual(expected.sort())
1717
})
18+
19+
describe('dirs', () => {
20+
test('without prefix', () => {
21+
const result = ls.dirs(`${fixtures}/ls/dirs`)
22+
23+
const expected = ['.baz', 'bar', 'foo']
24+
25+
expect(result.sort()).toEqual(expected.sort())
26+
})
27+
28+
test('with prefix', () => {
29+
const result = ls.dirs(`${fixtures}/ls/dirs`, 'prefix')
30+
31+
const expected = ['prefix/.baz', 'prefix/bar', 'prefix/foo']
32+
33+
expect(result.sort()).toEqual(expected.sort())
34+
})
35+
})
1836
})

src/api/commit.js

+13-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,18 @@ const configs = path =>
4444
)}`,
4545
)
4646

47-
const ls = {configs}
47+
/**
48+
* Enumerate one level of directories
49+
*
50+
* @param {string} path - directory to enumerate
51+
* @param {string} [prefix] - prefix for each scope entry (e.g: `prefix/entry`)
52+
*/
53+
const dirs = (path, prefix) =>
54+
readdirSync(path)
55+
.filter(f => statSync(join(path, f)).isDirectory())
56+
.map(item => (prefix ? `${prefix}/${item}` : item))
57+
.map(item => item.toLowerCase())
58+
59+
const ls = {configs, dirs}
4860

4961
module.exports = {ls, scopes}

0 commit comments

Comments
 (0)