Small library for parsing command line arguments type-safely and with great architecture.
npm install typed-cmdargsgit style tools.
npm install typed-cmdargs
`
Example
$3
`
interface IgnoreAction {
act(): void;
}
class DownloadIgnore implement IgnoreAction {
constructor(private language: string) { }
act() { ... }
}
class DoNothing implement IgnoreAction {
act() { }
}
class Repo implements Command {
constructor(
private name: string,
private flags: {
private: boolean,
ignore: IgnoreAction
}) { }
execute() {
...
this.flags.ignore.act();
...
}
}
`
$3
`
let argParser = new ArgumentParser();
argParser.push("repo", {
desc: "Setup a new repository",
arg: "name",
construct: (arg, params) => new Repo(arg, params),
flags: {
private: {
short: "p",
desc: "Private repository",
overrideValue: true,
defaultValue: false,
},
ignore: {
short: "i",
desc: "Fetch standard .gitignore",
arg: "language",
overrideValue: (s) => new DownloadIgnore(s),
defaultValue: new DoNothing(),
},
},
});
`
$3
`
if (process.argv[0].endsWith("node.exe")) process.argv.splice(0, 1);
process.argv.splice(0, 1);
if (process.argv[0] === "help") {
console.log(argParser.helpString(process.argv[1]));
} else {
let cmds = argParser.parse(process.argv);
cmds.forEach((cmd) => cmd.execute());
}
`
How to use
For a more thorough tutorial see my blog post on Medium: https://medium.com/@thedrlambda/cli-architecture-in-nodejs-852e95773403
How to test
`
npm test
`
How to contribute
Make sure the tests are passing and that there are only dev` dependencies, then just send me a pull request.