Skip to content
A javascript clone of google/python-fire πŸ”₯
JavaScript
Branch: master
Clone or download
hobochild Minor Fixes
Improve the spacing on subcommands

add some docs about object descriptions

update snaps
Latest commit fff1130 Oct 5, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Adds js-fire cli and allows you to require any module which is then Sep 18, 2019
__snapshots__ Minor Fixes Oct 5, 2019
bin Add some docs Sep 25, 2019
examples Handle subcommand edge cases Sep 22, 2019
lib Minor Fixes Oct 5, 2019
.gitignore 0.1.0 Sep 12, 2018
CONTRIBUTING.md Add some docs Sep 25, 2019
LICENSE add license Sep 22, 2019
README.md Minor Fixes Oct 5, 2019
index.js Add some docs Sep 25, 2019
index.test.js Adding flag suggestions Sep 22, 2019
package.json v0.7.1 Oct 5, 2019
yarn.lock Add some docs Sep 25, 2019

README.md

js-fire CircleCI

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 <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>
  ...
You can’t perform that action at this time.