1.0.0 • Published 2 years ago

js-fire v1.0.0

Weekly downloads
87
License
MIT
Repository
github
Last release
2 years ago

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 <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>
  ...
1.0.0

2 years ago

0.7.5

2 years ago

0.7.4

4 years ago

0.7.3

4 years ago

0.7.2

5 years ago

0.7.1

5 years ago

0.7.0

5 years ago

0.6.0

5 years ago

0.5.0

5 years ago

0.4.0

5 years ago

0.3.0

5 years ago

0.2.2

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.1

5 years ago

0.1.0

6 years ago