Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

@basd/cli

take command

npmpipelinelicensedownloads

GitlabGithubTwitterDiscord

A comprehensive Node.js module providing a set of tools for creating elegant command line interfaces by wrapping several popular CLI tools into one cohesive package. This project simplifies CLI development by combining functionality from various libraries, including command parsing, user interaction, and system command execution.

Features

  • Commander Integration: Leverages commander for powerful command-line interfaces.
  • Progress and Spinner: Includes @basd/spinner, a mix of cli-spinner and cli-progress for interactive CLI feedback.
  • CLI Utilities: Offers utilities from basd (a lodash wrapper), shelljs for shell commands, prompts for interactive user inputs, and cli-color for colorful CLI output.

Installation

Install @basd/cli using npm:

npm install @basd/cli

Usage

The @basd/cli module is designed to be intuitive for developers familiar with Node.js CLI development. Here's some examples to get you started:

Commander

The commander module in @basd/cli is used for building command-line interfaces with support for commands, options, and sub-commands.

const{ program }=require('@basd/cli')// Define a new command with optionsprogram.command('serve [port]').description('Start the server').option('-d, --debug','output extra debugging').action((port,options)=>{constportNumber=port||3000console.log(`Server running on port ${portNumber}`)if(options.debug)console.log('Debugging mode is on')})// Parse command-line argumentsprogram.parse(process.argv)

ShellJS

ShellJS is integrated for executing shell commands in a Unix shell-style, but within your Node.js scripts.

const{ shell }=require('@basd/cli')// Execute a simple UNIX commandshell.exec('echo hello world')// Use it in a more complex scenarioif(shell.exec('git status').code!==0){shell.exit(1)}

Prompts

The prompts module is excellent for creating interactive command-line prompts.

constcli=require('@basd/cli')asyncfunctionaskName(){constresponse=awaitcli.prompts({type: 'text',name: 'name',message: 'What is your name?'})console.log(`Hello, ${response.name}!`)}askName()

Progress and Spinner

Progress and Spinner from @basd/spinner provide visual feedback for CLI applications.

Spinners

const{ Spinner }=require('@basd/spinner')constspinner=newSpinner({id: 'unique-spinner-id',// optionalcolor: 'green',// optionalspinner: 'dots'// optional, spinner style})spinner.start('Loading...')// Update the spinnerspinner.update('Still loading...')// Complete the spinnerspinner.succeed('Completed!')

Progress Bars

const{ Progress }=require('@basd/spinner')constprogressBar=newProgress({total: 100,// total value of the progress barpreset: 'shades_classic'// optional, style of the progress bar})progressBar.start(0)// Increment the progressprogressBar.increment(10)// Update the progress bar to a specific valueprogressBar.update(50)// Complete the progressprogressBar.stop()

Colors

const{ colors }=require('@basd/cli')console.log(colors.red('This is a red text'))

Documentation

  • API Reference: Based on jsdoc comments.
  • commander: Interface for defining commands and options.
  • Progress & Spinner: Utilities for displaying progress bars and spinners.
  • prompts: For creating interactive command-line prompts.
  • colors: Enhance your CLI output with colored text.
  • shell: Execute shell commands within your Node.js application.

Tests

In order to run the test suite, simply clone the repository and install its dependencies:

git clone https://github.com/basedwon/cli.git
cd cli
npm install

To run the tests:

npm test

Contributing

Thank you! Please see our contributing guidelines for details.

Donations

If you find this project useful and want to help support further development, please send us some coin. We greatly appreciate any and all contributions. Thank you!

Bitcoin (BTC):

1JUb1yNFH6wjGekRUW6Dfgyg4J4h6wKKdF

Monero (XMR):

46uV2fMZT3EWkBrGUgszJCcbqFqEvqrB4bZBJwsbx7yA8e2WBakXzJSUK8aqT4GoqERzbg4oKT2SiPeCgjzVH6VpSQ5y7KQ

License

@basd/cli is MIT licensed.

About

No description, website, or topics provided.

Resources

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages