4.1.3 • Published 3 months ago

typed-cmdargs v4.1.3

Weekly downloads
1
License
ISC
Repository
github
Last release
3 months ago

typed-cmdargs

Small library for parsing command line arguments for git style tools.

The strength is the type safety and extensible architecture it enables.

How to install

npm install typed-cmdargs

Example

Helper classes

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();
    ...
  }
}

Configuring the parser

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(),
    },
  },
});

Template for calling the parser

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.

4.1.3

3 months ago

4.1.2

3 months ago

4.1.1

6 months ago

4.1.0

1 year ago

4.0.0

1 year ago

3.0.0

1 year ago

2.1.3

2 years ago

2.1.2

2 years ago

2.1.1

2 years ago

2.1.0

2 years ago

2.0.1

2 years ago

2.0.0

3 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago