@basd/cli
take command
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')
program
.command('serve [port]')
.description('Start the server')
.option('-d, --debug', 'output extra debugging')
.action((port, options) => {
const portNumber = port || 3000
console.log(`Server running on port ${portNumber}`)
if (options.debug) console.log('Debugging mode is on')
})
program.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')
shell.exec('echo hello world')
if (shell.exec('git status').code !== 0) {
shell.exit(1)
}
Prompts
The prompts
module is excellent for creating interactive command-line prompts.
const cli = require('@basd/cli')
async function askName() {
const response = await cli.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')
const spinner = new Spinner({
id: 'unique-spinner-id',
color: 'green',
spinner: 'dots'
})
spinner.start('Loading...')
spinner.update('Still loading...')
spinner.succeed('Completed!')
Progress Bars
const { Progress } = require('@basd/spinner')
const progressBar = new Progress({
total: 100,
preset: 'shades_classic'
})
progressBar.start(0)
progressBar.increment(10)
progressBar.update(50)
progressBar.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.