Skip to content

Commit 288404b

Browse files
Boshra MahmoudiBoshra Mahmoudi
authored andcommitted
use parseArgs for CLI arguments
1 parent 4a99c04 commit 288404b

1 file changed

Lines changed: 18 additions & 15 deletions

File tree

  • implement-shell-tools/cat

‎implement-shell-tools/cat/cat.js‎

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,31 @@
11
import { readFile } from "node:fs/promises";
22
import process from "node:process";
3+
import { parseArgs } from "node:util";
34

4-
const argv = process.argv.slice(2);
5+
const { values, positionals: files } = parseArgs({
6+
args: process.argv.slice(2),
7+
options: {
8+
number: {
9+
type: "boolean",
10+
short: "n",
11+
},
12+
numberNonBlank: {
13+
type: "boolean",
14+
short: "b",
15+
},
16+
},
17+
allowPositionals: true,
18+
});
519

6-
let showLineNumbers = false;
7-
let numberNonBlankLines = false;
8-
const files = [];
9-
10-
for (const arg of argv) {
11-
if (arg === "-n") {
12-
showLineNumbers = true;
13-
} else if (arg === "-b") {
14-
numberNonBlankLines = true;
15-
} else {
16-
files.push(arg);
17-
}
18-
}
20+
const showLineNumbers = values.number ?? false;
21+
const numberNonBlankLines = values.numberNonBlank ?? false;
1922

2023
let lineNumber = 1;
2124

2225
for (const file of files) {
2326
try {
2427
const content = await readFile(file, "utf-8");
25-
28+
2629
const lines = content.split("\n");
2730

2831
if (numberNonBlankLines) {

0 commit comments

Comments
 (0)