Skip to content

Commit ad8b9a6

Browse files
committed
refactor(cli): replaces commander with node:util/parseArgs - depcruise-baseline
1 parent 9db465e commit ad8b9a6

1 file changed

Lines changed: 51 additions & 25 deletions

File tree

bin/depcruise-baseline.mjs

Lines changed: 51 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,69 @@
11
#!/usr/bin/env node
2-
import { program } from "commander";
2+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
3+
import { parseArgs } from "node:util";
34
import assertNodeEnvironmentSuitable from "#cli/assert-node-environment-suitable.mjs";
45
import cli from "#cli/index.mjs";
56
import meta from "#meta.cjs";
67

7-
function formatError(pError) {
8-
process.stderr.write(pError.message);
9-
process.exitCode = 1;
8+
function showHelp() {
9+
process.stdout
10+
.write(`Usage: depcruise-baseline [options] <files-or-directories...>
11+
12+
Writes all known violations of rules in a .dependency-cruiser.js to a file.
13+
Alias for depcruise -c -T baseline -f .dependency-cruiser-known-violations.json [files-or-directories]
14+
Details: https://github.com/sverweij/dependency-cruiser
15+
16+
Options:
17+
-c, --config [file] read rules and options from [file] (default: true)
18+
-f, --output-to [file] file to write output to; - for stdout (default: ".dependency-cruiser-known-violations.json")
19+
-V, --version display version number
20+
-h, --help display help for command
21+
`);
1022
}
1123

1224
try {
1325
assertNodeEnvironmentSuitable();
1426

15-
program
16-
.description(
17-
"Writes all known violations of rules in a .dependency-cruiser.js to a file.\n" +
18-
"Alias for depcruise -c -T baseline -f .dependency-cruiser-known-violations.json [files-or-directories]\n" +
19-
"Details: https://github.com/sverweij/dependency-cruiser",
20-
)
21-
.option("-c, --config [file]", "read rules and options from [file]", true)
22-
.option(
23-
"-f, --output-to [file]",
24-
"file to write output to; - for stdout",
25-
".dependency-cruiser-known-violations.json",
26-
)
27-
.version(meta.version)
28-
.argument("<files-or-directories...>")
29-
.parse(process.argv);
27+
const { values: options, positionals } = parseArgs({
28+
options: {
29+
config: {
30+
type: "string",
31+
short: "c",
32+
default: "",
33+
},
34+
"output-to": {
35+
type: "string",
36+
short: "f",
37+
default: ".dependency-cruiser-known-violations.json",
38+
},
39+
version: {
40+
type: "boolean",
41+
short: "V",
42+
},
43+
help: {
44+
type: "boolean",
45+
short: "h",
46+
},
47+
},
48+
allowPositionals: true,
49+
});
3050

31-
if (program.args[0]) {
32-
process.exitCode = await cli(program.args, {
33-
...program.opts(),
51+
if (options.version) {
52+
process.stdout.write(`${meta.version}\n`);
53+
} else if (options.help || positionals.length === 0) {
54+
showHelp();
55+
} else {
56+
if (options.config === "") {
57+
options.config = true;
58+
}
59+
process.exitCode = await cli(positionals, {
60+
config: options.config,
61+
outputTo: options["output-to"],
3462
cache: false,
3563
outputType: "baseline",
3664
});
37-
} else {
38-
program.help();
3965
}
4066
} catch (pError) {
41-
formatError(pError);
67+
process.stderr.write(pError.message);
4268
process.exitCode = 1;
4369
}

0 commit comments

Comments
 (0)