cli-ux
Version:
cli IO utilities
105 lines (71 loc) • 2.87 kB
Markdown
cli-ux
======
cli IO utilities
[](https://npmjs.org/package/cli-ux)
[](https://circleci.com/gh/oclif/cli-ux/tree/master)
[](https://ci.appveyor.com/project/heroku/cli-ux/branch/master)
[](https://codecov.io/gh/oclif/cli-ux)
[](https://greenkeeper.io/)
[](https://snyk.io/test/npm/cli-ux)
[](https://npmjs.org/package/cli-ux)
[](https://github.com/oclif/cli-ux/blob/master/package.json)
The following assumes you have installed `cli-ux` to your project with `npm install cli-ux` or `yarn add cli-ux` and have it required in your script (TypeScript example):
```typescript
import cli from 'cli-ux'
cli.prompt('What is your name?')
```
# cli.prompt()
Prompt for user input.
```typescript
// just prompt for input
await cli.prompt('What is your name?')
// mask input after enter is pressed
await cli.prompt('What is your two-factor token?', {type: 'mask'})
// mask input on keypress (before enter is pressed)
await cli.prompt('What is your password?', {type: 'hide'})
// yes/no confirmation
await cli.confirm('Continue?')
// "press any key to continue"
await cli.anykey()
```

# cli.url(text, uri)
Create a hyperlink (if supported in the terminal)
```typescript
await cli.url('sometext', 'https://google.com')
// shows sometext as a hyperlink in supported terminals
// shows https://google.com in unsupported terminals
```

# cli.open
Open a url in the browser
```typescript
await cli.open('https://oclif.io')
```
# cli.action
Shows a spinner
```typescript
// start the spinner
cli.action.start('starting a process')
// show on stdout instead of stderr
cli.action.start('starting a process', {stdout: true})
// stop the spinner
cli.action.stop() // shows 'starting a process... done'
cli.action.stop('custom message') // shows 'starting a process... custom message'
```
This degrades gracefully when not connected to a TTY. It queues up any writes to stdout/stderr so they are displayed above the spinner.

# cli.annotation
Shows an iterm annotation
```typescript
// start the spinner
cli.annotation('sometest', 'annotated with this text')
```

# cli.wait
Waits for 1 second or given milliseconds
```typescript
await cli.wait()
await cli.wait(3000)
```