Latest Socket ResearchMalicious Chrome Extension Performs Hidden Affiliate Hijacking.Details
Socket
Book a DemoInstallSign in
Socket

@timhall/cli

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@timhall/cli

Composable CLI utilities

latest
Source
npmnpm
Version
0.5.0
Version published
Weekly downloads
7.4K
1.38%
Maintainers
1
Weekly downloads
 
Created
Source

@timhall/cli

cli({ name, version, subcommands })

Prepare help, version, and run for commands.

import { cli, commands, run } from '@timhall/cli';
import { name, version } from '../../package.json';

const subcommands = commands({
  init: { run: argv => { /* ... */ }, description: '...' }
  commit: { load: () => import('./example-commit'), description: '...' },
  // ...
});

const example = cli({ name, version, subcommands });

run(name, async () => {
  const argv = process.argv.slice(2);
  await example.run(argv);
});
> example --help
example v(version)

Usage: example <command>

Commands:
  - init    ...
  - commit  ...

example help <command>  Help on <command>
example -v / --version  Show current version

> example -v
(version)

> example help init
(calls init.run with ['--help'])

> example int
ERROR Unknown command "int", did you mean "init"?

Available commands are "init" and "commit".
Try "example help" for more information.

> example commit -m "Add cli"
(calls commit.default with ['-m', 'Add cli'])

commands(subcommands)

Load and run subcommand functions

Example:

// ./example-commit
export default async function commit(argv: string[]) {
  // ...
}
import { commands } from '@timhall/cli';

const subcommands = commands({
  init: {
    run(argv: string[]) {
      // Define command directly
    },
    description: 'Initialize a new repository'
  },
  commit: {
    // Only load and run commit command if called
    load: () => import('./example-commit'),
    description: 'Commit change to repository'
  }
});

console.log(subcommands.list);
// {
//   init: 'Initialize a new repository',
//   commit: 'Commit change to repository'
// }

async function main() {
  await subcommands.run(['commit', '-m', 'Added cli']);

  // 1. Load ./example-commit
  // 2. Run with ['-m', 'Added cli']
}

run([title], fn)

Run the given function with proper process management and error handling.

FAQs

Package last updated on 12 Jan 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts