1.0.9 • Published 6 years ago

edenreich-commandline-parser v1.0.9

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

CommandLineParser

Installation

npm install edenreich-commandline-parser

Usage

const CommandlineParser = require('edenreich-commandline-parser').parser;
const args = process.argv;

// Configure the Application.
const config = {
  handler: 'path/to/my/awesome/handler',
  labels: {
    application_name: "My Awesome Application",
    application_filename: "my-app",
    application_version: "1.0.0"
  },
  commands: [{
    name: "empty-trash",
    description: "Empty the trash",
    options: [{
      name: "--my-option",
      description: "with my first option"
    },
    {
      name: "--my-option2",
      description: "with my second option 2"
    }]
  }]
};

let cliParser = new CommandlineParser(config);

// Parse the arguments.
let command = cliParser.parse(args);

// Execute the command.
if (command.requestedForHelp()) {
  cliParser.showHelp('index');
} else {
  command.execute();
}

Handler

Create an handler and configure the path on the parser:

class Commands
{
  static emptyTrash(options)
  {
    options.forEach(function(option) {
      switch(option.name)
      {
        case "--my-option":
          // Handle option
          break;
        case "--my-option2":
          // Handle option 2
          break;
      }
    });
  }
}

module.exports = Commands;

Now every command you declared above will correspond a camelcase static method on the above configured handler. For instance command empty-trash is corresponding to static emptyTrash() method.

Application Help

You may create template files that matches the way your help look. In the root directory create a folder called help:

mkdir help

By default the parser will look for an index file, if you want to use different templates you may pass it as an argument:

cliParser.showHelp('my-template');

Predefined Templates Placeholder

Template variables should be surrounded by {%variable_name%}, for example {%hr%}.

hr              - line spacer
header          - the application name 
client_name     - the client name
client_version  - the version of the application
current_time    - the current time
usage_title     - the usage title
options_title   - the options title
commands_title  - the commands title
options_help    - the help option
options         - the list of options
commands        - the list of commands

You may also pass your own placeholders to the template:

cliParser.showHelp('template', undefined, {"placeholder_name": "placeholder_value"});

Progressbar

You may also use the built in progressbar to give feedback to your users:

const Progressbar = require('edenreich-commandline-parser').progressbar;

class Commands
{
  static emptyTrash(options)
  {
    Progressbar.start();

    // handle operation that takes 4 sec.

    setTimeout(function() {
      Progressbar.stop();
    }, 4000);
  }
}

module.exports = Commands;
1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago