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
and process.stdout
as default - flushable buffer to get pending input lines
- 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
io helper functions:
import { ReadLineOptions } from 'readline'
export function createIO(options?: {
input?: ReadLineOptions['input']
output?: ReadLineOptions['output']
}): {
question: (question: string) => Promise<string>
close: () => void
flush: () => string[]
}
file helper functions:
export function resolveFile(filename: string): string
export function readJSONFile(file: string): any
export function writeJSONFile(file: string, data: any): void
export class JSONFileError extends Error {
file: 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