-
-
Notifications
You must be signed in to change notification settings - Fork 92
Expand file tree
/
Copy pathls.js
More file actions
37 lines (30 loc) · 918 Bytes
/
Copy pathls.js
File metadata and controls
37 lines (30 loc) · 918 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import {program} from "commander";
import {promises as fs} from "node:fs";
program
.name ("ls")
.description("List the file directory")
.option("-1","List one file per line")
.option("-a","Include hidden file")
.argument("[dir]", "Directory to list",".")
.parse();
const options = program.opts();
const dir = program.args[0] || ".";
try {
const items = await fs.readdir(dir, { withFileTypes: true });
let fileNames = items.map(item => item.name);
// Filter out hidden files unless -a
if (!options.a) {
fileNames = fileNames.filter(name => !name.startsWith("."));
}
// Print output
if (options["1"]) {
// One file per line
fileNames.forEach(name => console.log(name));
} else {
// Default: space-separated (like regular `ls`)
console.log(fileNames.join(" "));
}
} catch (err) {
console.error(`Error reading directory "${dir}":`, err.message);
process.exit(1);
}