JS-FIRE(1)

NAME

js-fire โ€” A javascript clone of google/python-fire ๐Ÿ”ฅ

SYNOPSIS

INFO

454 stars
10 forks
0 views
JavaScriptDeveloper Tools

DESCRIPTION

A javascript clone of google/python-fire ๐Ÿ”ฅ

README

js-fire Node.js CI

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:

asciicast

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 &lt;flags&gt; --path=&lt;path&gt;  --data=&lt;data&gt;  --options=&lt;options&gt;  --callback=&lt;callback&gt;
appendFileSync &lt;flags&gt; --path=&lt;path&gt;  --data=&lt;data&gt;  --options=&lt;options&gt;
access &lt;flags&gt; --path=&lt;path&gt;  --mode=&lt;mode&gt;  --callback=&lt;callback&gt;
accessSync &lt;flags&gt; --path=&lt;path&gt;  --mode=&lt;mode&gt;
chown &lt;flags&gt; --path=&lt;path&gt;  --uid=&lt;uid&gt;  --gid=&lt;gid&gt;  --callback=&lt;callback&gt;
chownSync &lt;flags&gt; --path=&lt;path&gt;  --uid=&lt;uid&gt;  --gid=&lt;gid&gt;
chmod &lt;flags&gt; --path=&lt;path&gt;  --mode=&lt;mode&gt;  --callback=&lt;callback&gt;
chmodSync &lt;flags&gt; --path=&lt;path&gt;  --mode=&lt;mode&gt;
close &lt;flags&gt; --fd=&lt;fd&gt;  --callback=&lt;callback&gt;
closeSync &lt;flags&gt; --fd=&lt;fd&gt;
copyFile &lt;flags&gt; --src=&lt;src&gt;  --dest=&lt;dest&gt;  --flags=&lt;flags&gt;  --callback=&lt;callback&gt;
copyFileSync &lt;flags&gt; --src=&lt;src&gt;  --dest=&lt;dest&gt;  --flags=&lt;flags&gt;
createReadStream &lt;flags&gt; --path=&lt;path&gt;  --options=&lt;options&gt;
createWriteStream &lt;flags&gt; --path=&lt;path&gt;  --options=&lt;options&gt;
exists &lt;flags&gt; --path=&lt;path&gt;  --callback=&lt;callback&gt;
existsSync &lt;flags&gt; --path=&lt;path&gt;

...

SEE ALSO

clihub3/4/2026JS-FIRE(1)