A javascript implementation of google/python-fire
js-fire is a library for automatically generating command line interfaces (CLIs) from most js objects.
- js Fire is a simple way to create a CLI in js.
- js Fire helps with exploring existing code or turning other people's code into a CLI.
- js Fire makes transitioning between Bash and js easier.
Installation
yarn add js-fire
npm install js-fire
js-fire is exposed as both an API and a CLI.
API Usage
You can call Fire
on any functions and objects:
Here's an example of calling Fire on a object, you can infinitely nest objects to create subcommands.
const fire = require("js-fire");
const calculator = {
__description__: "I am a math machine",
double: (number) => {
// I double things
return 2 * number;
},
add: (n1 = Math.PI, n2) => {
return n1 + n2;
},
misc: {
year: () => "1999",
brand: () => "casio",
hello: (name) => `hello ${name}`,
},
};
fire(calculator);
Then, from the command line, you can run:
node calculator.js double --number=15 # 30
node calculator.js misc hello hobochild # 'hello hobochild'
Automactic --help
command.
node calculator.js --help
USAGE:
node calculator.js
DESCRIPTION:
I am a math machine
COMMANDS:
half --number=<number>
double --number=<number>
add --n1=3.141592653589793 --n2=<n2>
misc
year
brand
hello --name=<name>
Automatic --interactive
mode:
For additional examples, see /examples.
CLI Usage
js-fire exposes a CLI that takes modulePath and passes it to js-fire
.
USAGE:
js-fire --modulePath=<modulePath>
Example
So you can js-fire on most js modules.
js-fire fs -- writeFileSync --path=hello.txt --data="hiii"
You can also use interactive
and help
mode to explore a modules api:
js-fire fs -- -h
USAGE:
js-fire
COMMANDS:
appendFile <flags> --path=<path> --data=<data> --options=<options> --callback=<callback>
appendFileSync <flags> --path=<path> --data=<data> --options=<options>
access <flags> --path=<path> --mode=<mode> --callback=<callback>
accessSync <flags> --path=<path> --mode=<mode>
chown <flags> --path=<path> --uid=<uid> --gid=<gid> --callback=<callback>
chownSync <flags> --path=<path> --uid=<uid> --gid=<gid>
chmod <flags> --path=<path> --mode=<mode> --callback=<callback>
chmodSync <flags> --path=<path> --mode=<mode>
close <flags> --fd=<fd> --callback=<callback>
closeSync <flags> --fd=<fd>
copyFile <flags> --src=<src> --dest=<dest> --flags=<flags> --callback=<callback>
copyFileSync <flags> --src=<src> --dest=<dest> --flags=<flags>
createReadStream <flags> --path=<path> --options=<options>
createWriteStream <flags> --path=<path> --options=<options>
exists <flags> --path=<path> --callback=<callback>
existsSync <flags> --path=<path>
...