GithubHelp home page GithubHelp logo

cmd-js's Introduction

CMDjs

Yet another CLI framework.

Note: CMDjs is very minimal and was written for use in my other apps at @codefeathers and elsewhere. It was mostly an experiment of "how difficult could it be", and I'm happy to see how it turned out. If you feel like the minimal, friendly interface of CMDjs is for you, then go full steam ahead!

Usage

CMDjs accepts a logic tree of commands and functions and executes the function that matches your user's command.

This module is best explained with an example. (A slightly more elaborate example is available in this repo: sample).

#!/usr/bin/node

const CMDjs = require('@codefeathers/cmd-js');
const { log } = console;

const members = [ 'Okabe Rintaro', 'Shiina Mayuri', 'Hashida Itaru', 'Makise Kurisu' ];

const cmd = new CMDjs({
	'-h, --help': _ => log('Usage:\n list\n  list all future gadget laboratory members'),
	'ls, list': _ => log(members.join('\n')),
	'@default': _ => log('Use --help to get help text'),
});

cmd.use({ 'password': _ => log('El psy kongroo.') }); // Add more commands!
cmd.use('/home/mkr/.plugins'); // Add paths!

cmd.start(process);

Save this with any file name, for example, sg-cli (extensions for executables are optional in Linux).

Make this file executable by doing chmod a+x sg-cli. And then you can do this:

[mkr@codefeathers]$ ./sg-cli -h
Usage:
 list
   list all future gadget laboratory members

[mkr@codefeathers]$ ./sg-cli list
Okabe Rintaro
Shiina Mayuri
Hashida Itaru
Makise Kurisu

You can add your file to PATH and also invoke sg-cli directly without specifying path.

Nesting

Because args are parsed by minimist and passed as an object to callbacks, effectively you can nest and branch with plain JavaScript.

Additionally, CMDjs allows you to do this:

'ls, list': {
	'-a, --all': // [Function],
	'-g, --good': // [Function],
	'-e, --evil': // [Function]
}

You can nest indefinitely in this pattern. If you need more flexibility, take things in your own hands and use the minimist object at any point in the tree!

Issues and PRs

Issues and PRs are most welcome. If there are uncaught bugs, please report! Keep in mind that CMDjs is designed to be backwards-compatible henceforth. Any changes should not break previous versions.

cmd-js's People

Contributors

mkrhere avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.