0.0.2 • Published 4 years ago

expose-cli v0.0.2

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

  expose-cli

Simple Way To Run Your Local Function From CLI

node index.js localFunction arg1 arg2 arg3

Installation

# NPM
npm i expose-cli

# Yarn
yarn add expose-cli

Example Usage

index.js

const exposeCli = require('./index');

function printSync() {
  console.log('Printed from `printSync`');
}

async function printAsync() {
  console.log('Printed from `printAsync`');
}

function printPromise() {
  return new Promise(resolve => {
    console.log('Printed from `printPromise`');
    resolve();
  });
}

const printClosure = () => {
  console.log('Printed from `printClosure`');
};

function printSyncWithArg(arg1) {
  console.log(`Printed from \`printSyncWithArg\` with arg1: ${arg1}`);
}

async function printAsyncWithArg(arg1) {
  console.log(`Printed from \`printAsyncWithArg\` with arg1: ${arg1}`);
}

function printSyncWithRestArgs(...args) {
  console.log(
    `Printed from \`printSyncWithRestArgs\` with args: ${args.join(', ')}`
  );
}

async function printAsyncWithRestArgs(...args) {
  console.log(
    `Printed from \`printAsyncWithRestArgs\` with args: ${args.join(', ')}`
  );
}

function returnSync() {
  return 'Returned from `returnSync`';
}

async function returnAsync() {
  return 'Returned from `returnAsync`';
}

function returnPromise() {
  return new Promise(resolve => resolve('Returned from `returnPromise`'));
}

exposeCli(
  {
    printSync,
    printAsync,
    printPromise,
    printClosure,
    printSyncWithArg,
    printAsyncWithArg,
    printSyncWithRestArgs,
    printAsyncWithRestArgs,
    returnSync,
    returnAsync,
    returnPromise
  },
  {
    printReturn: true
  }
);

Run local function

Execute

node index.js printSyncWithArg world

Output

Printed from printSyncWithArg: world

Print all listed handler with command help

Execute command

node index.js printSyncWithArg help

Output

IMPORTANT!

The help command will display an <unreachable> message if you use:

  • Closure function. Ex: () => {}
  • Rest arguments. Ex: function(...args)
  • Function stored in a variable. Ex: const handler= function() {}
  • A method in a Class
  • Anonymous function

Calling Format

exposeCli(handlers, [config])

handlers

Format (Object):

command : handler

  • command: string
  • handler: function or object
    • name: string
    • args: array
    • description: string
    • handler: function

config

{
  // Print returned value from function called
  printReturn: false, // default

  // Trigger process.exit() when finished
  exitOnSuccess: true, // default

  // Trigger process.exit(1) when error
  exitOnError: true, // default

  // cutom log handler
  customConsoleLog: console.log, // default
  customConsoleError: console.error, // default

  // custom command `help` name
  customHelpName: 'help',  // default

  // custom additional command `help` options
  customHelp: {
    handler: defaultHelpHandler,
    name: 'help',
    args: '',
    description: 'Show all the functions listed.'
  }  // default
}

Support

  • Can be used using webpack
  • Supports calling async function or function that return Promise or closure
  • Supports function that throw an error

Change Log

v0.0.2

  • Fixed bugs
  • Added default handler for help
  • Support object format for handlers arguments
0.0.2

4 years ago

0.0.0

4 years ago

0.0.1

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago