cli-helpers
v1.2.0
Published
Helper library for building cli applications
Downloads
83
Readme
cli-helpers
Helper library for building cli applications
Features
- Multi-Line I/O interface
- async
io.question(text)
for ease of use - buffered input prevents data lost when pasting multi-line input
- customizable I/O stream using
process.stdin
andprocess.stdout
as default - flushable buffer to get pending input lines
- async
- Typescript support
Installation
npm install cli-helpers
You can also install cli-helpers
with pnpm, yarn, or slnpm
Usage Example
import { createIO } from 'cli-helpers'
async function main() {
let io = createIO()
for (;;) {
let line = await io.question('> ')
console.log('line:', line)
if (line == 'exit') {
break
}
}
io.close()
}
main().catch(e => console.error(e))
Typescript Signature
import { ReadLineOptions } from 'readline'
/**
* @description async io interface based on `readline.createInterface()`.
* With internal buffer to avoid data lose when pasting multi-lines input.
*/
export function createIO(options?: {
input?: ReadLineOptions['input']
output?: ReadLineOptions['output']
}): {
question: (question: string) => Promise<string>
close: () => void
flush: () => string[]
}
/**
* @description look for the file from the given directory or parent directory recursively
* @example
* ```
* let file = resolveFile({ dir: __dirname, filename: 'package.json' })
* let pkg = readJSONFile(file)
* ```
*/
export function resolveFile(args: { dir: string; filename: string }): string
/**
* @description read file as json data
* @throws JSONFileError
*/
export function readJSONFile(file: string): any
/**
* @description write json data to file
* @throws JSONFileError
*/
export function writeJSONFile(
file: string,
data: any,
options?: {
top_comment?: string
bottom_comment?: string
},
): void
export class JSONFileError extends Error {
file: string
}
/**
* @description remove comments from json text
*/
export function removeComments(text: string): string
License
This project is licensed with BSD-2-Clause
This is free, libre, and open-source software. It comes down to four essential freedoms [ref]:
- The freedom to run the program as you wish, for any purpose
- The freedom to study how the program works, and change it so it does your computing as you wish
- The freedom to redistribute copies so you can help others
- The freedom to distribute copies of your modified versions to others