Skip to content

Commit 4787a6b

Browse files
Fix ls implementation: handle -1 flag correctly
1 parent 50ae619 commit 4787a6b

File tree

1 file changed

+11
-9
lines changed
  • implement-shell-tools/ls/sample-files

1 file changed

+11
-9
lines changed

implement-shell-tools/ls/sample-files/myLs.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,19 @@ const fs = require("fs");
44
const path = require("path");
55

66
function listDirectory(dir, options) {
7+
let stats;
78
try {
8-
const stats = fs.statSync(dir);
9-
9+
stats = fs.statSync(dir);
1010
if (stats.isFile()) {
1111
console.log(dir);
12-
return;
12+
return;
1313
}
1414
} catch (e) {
1515
console.error(`ls: cannot access '${dir}': No such file or directory`);
1616
return;
1717
}
1818

1919
let entries;
20-
2120
try {
2221
entries = fs.readdirSync(dir, { withFileTypes: true });
2322
} catch (e) {
@@ -34,18 +33,21 @@ function listDirectory(dir, options) {
3433
}
3534

3635
names.sort();
37-
names.forEach(name => console.log(name));
36+
if (options.one) {
37+
names.forEach(name => console.log(name));
38+
} else {
39+
console.log(names.join(" "));
40+
}
3841
}
3942

4043
program
4144
.name("myls")
4245
.description("Custom implementation of ls")
43-
.option("-1", "list one file per line (required)")
44-
45-
.option("-a, --all", "include hidden files")
46+
.option("-1, --one", "list one file per line ")
47+
.option("-a, --all", "include hidden files and . and ..")
4648
.argument("[dir]", "directory to list", ".")
4749
.action((dir, options) => {
4850
listDirectory(dir, options);
4951
});
5052

51-
program.parse();
53+
program.parse();

0 commit comments

Comments
 (0)