1.2.0 • Published 8 months ago

cli-helpers v1.2.0

Weekly downloads
3
License
BSD-2-Clause
Repository
github
Last release
8 months ago

cli-helpers

Helper library for building cli applications

npm Package Version

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

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
1.2.0

8 months ago

1.1.1

8 months ago

1.0.2

8 months ago

1.1.0

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago

0.1.2

9 years ago