Skip to content

Commit c6da9e7

Browse files
committed
feat(ls): add -d flag to ls()
1 parent f47a8e2 commit c6da9e7

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

src/ls.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ function _ls(options, paths) {
2525
options = common.parseOptions(options, {
2626
'R': 'recursive',
2727
'A': 'all',
28-
'a': 'all_deprecated'
28+
'a': 'all_deprecated',
29+
'd': 'directory'
2930
});
3031

3132
if (options.all_deprecated) {
@@ -72,7 +73,10 @@ function _ls(options, paths) {
7273
}
7374

7475
// Simple dir?
75-
if (stats.isDirectory()) {
76+
if (options.directory) {
77+
pushFile(p, p);
78+
return;
79+
} else if (stats.isDirectory()) {
7680
// Iterate over p contents
7781
fs.readdirSync(p).forEach(function(file) {
7882
if (!pushFile(file, p))

test/ls.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,4 +191,33 @@ assert.equal(result.indexOf('resources/ls/a_dir/b_dir') > -1, true);
191191
assert.equal(result.indexOf('resources/ls/a_dir/b_dir/z') > -1, true);
192192
assert.equal(result.length, 9);
193193

194+
// directory option, single arg
195+
var result = shell.ls('-d', 'resources/ls');
196+
assert.equal(shell.error(), null);
197+
assert.equal(result.length, 1);
198+
199+
// directory option, single arg with trailing '/'
200+
var result = shell.ls('-d', 'resources/ls/');
201+
assert.equal(shell.error(), null);
202+
assert.equal(result.length, 1);
203+
204+
// directory option, multiple args
205+
var result = shell.ls('-d', 'resources/ls/a_dir', 'resources/ls/file1');
206+
assert.equal(shell.error(), null);
207+
assert.ok(result.indexOf('resources/ls/a_dir') > -1);
208+
assert.ok(result.indexOf('resources/ls/file1') > -1);
209+
assert.equal(result.length, 2);
210+
211+
// directory option, globbed arg
212+
var result = shell.ls('-d', 'resources/ls/*');
213+
assert.equal(shell.error(), null);
214+
assert.ok(result.indexOf('resources/ls/a_dir') > -1);
215+
assert.ok(result.indexOf('resources/ls/file1') > -1);
216+
assert.ok(result.indexOf('resources/ls/file1.js') > -1);
217+
assert.ok(result.indexOf('resources/ls/file2') > -1);
218+
assert.ok(result.indexOf('resources/ls/file2.js') > -1);
219+
assert.ok(result.indexOf('resources/ls/file2') > -1);
220+
assert.ok(result.indexOf('resources/ls/filename(with)[chars$]^that.must+be-escaped') > -1);
221+
assert.equal(result.length, 6);
222+
194223
shell.exit(123);

0 commit comments

Comments
 (0)