@auttam/easycli
TypeScript icon, indicating that this package has built-in type declarations

1.0.6 • Public • Published

Easy CLI

Installation

Install @auttam/easycli package

npm install @auttam/easycli

Example # 1

const { Program } = require('@auttam/easycli');

class HelloWorld extends Program {

    main(message, $options){
        // use default message if message not from the cli
        let greetMessage = message || "Hello World!";        

        // check for the underline options
        if($options.$has("u", "U", "underline")) {
            greetMessage = `\u001b[4m${greetMessage}\u001b[0m`;
        }

        // check of the color options
        if($options.$has("c", "C", "color")) {
            greetMessage = `\u001b[32m${greetMessage}\u001b[0m`;
        }

        console.log(greetMessage);
    }
}

// run the program
Program.run(new HelloWorld());

To test, save the example above as bin/hello-world.js file and run the following commands -

node ./bin/hello-world
# output: Hello World!

node ./bin/hello-world "Test Message"
# output: Test Message

node ./bin/hello-world -cu
# displays 'Hello World!' with underline and green color

node ./bin/hello-world -h 
# displays help

node ./bin/hello-world -v
# displays cli version which is by default '1.0.0'
  • All the non-option command-line arguments are passed as the parameters of the main() method
  • Add $params parameter to the main() method to access all the parameters supplied from the cli
  • Add $options parameter to the main() method to access all options supplied from the cli
    • Use $options.$has(...names) to check if any of the option from the list is set
    • Use $options.$get(name) to get the value supplied with the option e.g. node ./bin/hello-world --value_option=my_value
    • To access options by name e.g. $options.underline when any of -u, -U or --underline option is set, add program configuration. Find more information here.

Example # 2

const { Program } = require("@auttam/easycli");

// enable commands
Program.settings({
  enableCommands: true,
});

class SimpleCalculator extends Program {
  divideCommand(dividend, divisor) {
    if (isNaN(dividend) || isNaN(divisor)) {
      console.log("dividend and divisor must be numbers");
      return;
    }
    console.log(`${dividend}/${divisor} = ${dividend / divisor}`);
  }

  addCommand(...numbers) {
    // due to configuration added below,
    // the numbers parameter will never be empty
    if (numbers.some((item) => isNaN(item))) {
      console.log("All parameters must be numbers");
      return;
    }

    const total = numbers.reduce((sum, number) => sum + number);
    console.log(`${numbers.join("+")} = ${total}`);
  }
}

// add configuration and run program
Program.run(
  new SimpleCalculator({
    commands: [
      {
        name: "add",
        method:"addCommand",
        params: [
          {
            name: "numbers",
            required: true,
          }
        ],
      },
    ],
  })
);

To test, save the example above as bin/simple-calculator.js file and run following commands -

# Displays list of available commands
node ./bin/simple-calculator

# Runs add command
node ./bin/simple-calculator add 5 5 5
# output: 5+5+5 = 15

# Runs divide command
node ./bin/simple-calculator divide 5 2
# output: 5/2 = 2.5

Printing CLI help using node ./bin/simple-calculator -h

Simple Calculator v1.0.0

Usage: simple-calculator <command>

Available Commands:

   divide
   add

See command help for more options

Other usage:

   simple-calculator --help, -h             To view help
   simple-calculator <command> --help, -h   To view command help
   simple-calculator --version, -v          To view help
   simple-calculator help                   To view help

More help

Quick start guide and more help available here

Package Sidebar

Install

npm i @auttam/easycli

Weekly Downloads

10

Version

1.0.6

License

MIT

Unpacked Size

177 kB

Total Files

75

Last publish

Collaborators

  • auttam