Skip to content

mongodb-model/cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CLI

Cli helps in building CLIs and styling terminals. If you are not building a cli application, then you most likely do not need it. Cli is a duplex stream, specifically a Transform stream with some functionalities added. Primarily, it uses full power of the NodeJs Transform Stream API. In other words, everything you can do with NodeJs Transform API you can do with cli! Cli is centrally very highly event driven. Its common use is by extension or by using object destruction to get the instance methods needed.

Installation

$ yarn add @mongodb-model/cli

or

$ npm i @mongodb-model/cli

Simple Usage Examples

Making api request (http request)

const CLI = require('@mongodb-model/cli');
const cli = new CLI();
cli.apiGet(); //base.apiGet(your api endpoint)
cli.on('apiGet', data => console.log(data));
cli.on('apiGet-error', error => console.error(error));
 

By extension

class MyWonderfulClass extends require('@mongodb-model/cli') {

    constructor(...arrayOfObjects) {

    super({ objectMode: true, encoding: "utf-8", autoDestroy: true });

    arrayOfObjects.forEach(option => {
        if(Object.keys(option).length > 0){
            Object.keys(option).forEach((key) => { if(!this[key]) this[key] = option[key];})
        }
    });

    this.autobind(MyWonderfulClass);
    this.autoinvoker(MyWonderfulClass);
    this.setMaxListeners(Infinity);
  }
};

cli methods usage example

const CLI = require('@mongodb-model/cli');

// You may use object destruction to get methods needed from the instance.
const { centered, description,verticalSpace,texAligner} = new CLI

// example man page commands with their definitions
const manCommand = () => ({
  man: "Example App Command Line Interface (CLI) Manual",
  help: 'Alias of the "man" command',
  methods: "List all methods on Example App",
  events: "Events emitted by Example App",
})

// man function 
const man = () => {
  console.clear();
  const docs = `\x1b[36mNAME\x1b[0m
\x1b[36mman\x1b[0m - Example App Command Line Interface (CLI) Manual 

\x1b[36mSYPNOSIS\x1b[0m
\x1b[36mman\x1b[0m [\x1b[36mman\x1b[0m|\x1b[36mhelp\x1b[0m|\x1b[36mmethods\x1b[0m|\x1b[36mevent\x1b[0m|\x1b[36mclass\x1b[0m] 

\x1b[36mDESCRIPTION\x1b[0m
Example App Command Line Interface (CLI) Manual.
`;

// use instance methods for styling 
  centered(`\x1b[32mEXAMPLE APP COMMAND LINE INTERFACE AND USAGE MANUAL\x1b[0m`);
  description(docs);
  verticalSpace(2);

  const options = {
    pad: 22,
    position: process.stdout.columns,
    hline: false,
    keyColor: "36",
    valueColor: "37",
  };
  texAligner(options, manCommand());
  console.log();
}

// ran function to ouput example man page in your terminal
man()

Author's Info

Website NPM Github Gitlab Blog LinkedIn Facebook Twitter Instagram
Website NPM Github Gitlab Blog LinkedIn Facebook Twitter Instagram

About

CLI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published