consultant
TypeScript icon, indicating that this package has built-in type declarations

0.8.4 • Public • Published

consultant

npm version npm download dependencies license

What is the Consultant?

Consultant is a JavaScript library which allows you gathering options from various sources such as command line, optstring or interactive menu.

Provides:

  • Well-defined input model for operations require parameters.
  • Declerative approach.
  • Multiple methods for getting parameter (or options)
    • Parsing command line input like cmd --parameter=value --option1 --option2.
    • Interactive command line user interface to getting options directly from user.
  • Prepares an help output based on model definition.

Quick start

Execute npm install consultant to install consultant and its dependencies into your project directory.

Usage

import { Consultant } from 'consultant';
 
const rules = {
    label: 'sample menu',
    children: {
        plugins: {
            type: Consultant.types.command,
            aliases: [ 'p' ],
            id: 'plugins',
            label: 'Plugin commands',
            description: 'Add/list plugins',
 
            children: {
                add: {
                    type: Consultant.types.command,
                    id: 'plugins-add',
                    label: 'Add',
                    description: 'Adds a plugin'
                },
                repo: {
                    type: Consultant.types.stringParameter,
                    label: 'Repo',
                    description: 'Specifies repo address',
                    'default': 'http://github.com/eserozvataf/',
                    min: 0,
                    max: 1
                }
            }
        },
        makefile: {
            type: Consultant.types.stringParameter,
            aliases: [ 'f' ],
            label: 'Makefile',
            description: 'Load tasks from FILE',
            parameter: 'FILE',
            'default': [ 'makefile.js' ],
            min: 0,
            max: undefined,
            validate: (value) => value.length >= 3 || 'minimum 3 chars required'
        },
        tasks: {
            type: Consultant.types.booleanParameter,
            aliases: [ 't' ],
            label: 'Tasks',
            description: 'Lists defined tasks',
            'default': false
        },
        verbosity: {
            type: Consultant.types.stringParameter,
            label: 'Verbosity',
            description: 'Sets verbosity of log messages [debug, warn, info, error]',
            'default': 'info',
            values: [ 'debug', 'warn', 'info', 'error' ],
            min: 0,
            max: 1
        },
        version: {
            type: Consultant.types.booleanParameter,
            aliases: [ 'v' ],
            label: 'Version',
            description: 'Displays the jsmake version',
            'default': false
        },
        help: {
            type: Consultant.types.booleanParameter,
            aliases: [ 'h', '?' ],
            label: 'Help',
            description: 'Displays this help message',
            'default': false
        }
    }
};
 
const params = new Consultant(rules);
 
// string parsing
const input1 = await params.fromString('plugins add --makefile testfile.js');
console.log(input1.commandId); // plugins-add
console.log(input1.values.makefile); // [ 'testfile.js' ]
 
// command line parsing
const input2 = await params.fromCommandLine();
console.log(input2.values.verbosity); // info
 
// command line user interface
const input3 = await params.fromInquiry();

Todo List

See GitHub Projects for more.

Requirements

  • node.js (https://nodejs.org/)

License

Apache 2.0, for further details, please see LICENSE file

Contributing

See contributors.md

It is publicly open for any contribution. Bugfixes, new features and extra modules are welcome.

  • To contribute to code: Fork the repo, push your changes to your fork, and submit a pull request.
  • To report a bug: If something does not work, please report it using GitHub Issues.

To Support

Visit my patreon profile at patreon.com/eserozvataf

Package Sidebar

Install

npm i consultant

Weekly Downloads

3

Version

0.8.4

License

Apache-2.0

Last publish

Collaborators

  • eserozvataf