resin-cli-visuals
Resin CLI UI widgets.
Role
The intention of this module is to provide a collection of command line widgets to be used by the Resin CLI and its plugins.
Installation
Install resin-cli-visuals by running:
$ npm install --save resin-cli-visuals
Documentation
Classes
DriveScannerObjects
visuals :object
DriveScanner
Kind: global class
Summary: Dynamically detect changes of connected drives
Access: protected
new DriveScanner(driveFinder, [options])
| Param | Type | Default | Description |
|---|---|---|---|
| driveFinder | function |
drive finder | |
| [options] | Object |
scan options | |
| [options.interval] | Number |
1000 |
interval |
| [options.drives] | Array.<Object> |
current drives |
Example
scanner = new DriveScanner driveFinder,
interval: 1000
drives: [
{ foo: 'bar' }
]
driveScanner.stop()
Kind: instance method of DriveScanner
Summary: Stop the interval
Access: public
Example
scanner = new DriveScanner(@driveFinder, interval: 1000)
scanner.stop()
visuals : object
Kind: global namespace
- visuals :
object
visuals.Spinner
Kind: static class of visuals
Summary: Create a CLI Spinner
Access: public
new Spinner(message)
Returns: Spinner - spinner instance
Throws:
- Will throw if no message.
| Param | Type | Description |
|---|---|---|
| message | String |
message |
Example
spinner = new visuals.Spinner('Hello World')
spinner.start()
Kind: instance method of Spinner
Summary: Start the spinner
Access: public
Example
spinner = new visuals.Spinner('Hello World')
spinner.start()
spinner.stop()
Kind: instance method of Spinner
Summary: Stop the spinner
Access: public
Example
spinner = new visuals.Spinner('Hello World')
spinner.stop()
visuals.Progress
Kind: static class of visuals
Summary: Create a CLI Progress Bar
Access: public
new Progress(message)
Returns: Progress - progress bar instance
Throws:
- Will throw if no message.
| Param | Type | Description |
|---|---|---|
| message | String |
message |
Example
progress = new visuals.Progress('Hello World')
progress.update(state)
Kind: instance method of Progress
Summary: Update the progress bar
Access: public
Parm: String [state.message] - message
| Param | Type | Description |
|---|---|---|
| state | Object |
progress state |
| state.percentage | Number |
percentage |
| [state.eta] | Number |
eta in seconds |
Example
progress = new visuals.Progress('Hello World')
progress.update(percentage: 49, eta: 300)
visuals.SpinnerPromise
Kind: static class of visuals
Summary: Create a CLI Spinner that spins on a promise
Access: public
Fulfil: Object value - resolved or rejected promise
new SpinnerPromise(options)
This function will start a Spinner and stop it when the passed promise is either fulfilled or rejected. The function returns the passed promise which will be in either rejected or resolved state.
| Param | Type | Description |
|---|---|---|
| options | Object |
spinner promise options |
| options.promise | Promise |
promise to spin upon |
| options.startMessage | String |
start spinner message |
| options.stopMessage | String |
stop spinner message |
Example
visuals.SpinnerPromise
promise: scanDevicesPromise
startMessage: "Scanning devices"
stopMessage: "Scanned devices"
.then (devices) ->
console.log devices
visuals.table : object
Kind: static namespace of visuals
table.horizontal(data, ordering)
Notice that you can rename columns by using the CURRENT => NEW syntax in the ordering configuration.
Kind: static method of table
Summary: Make an horizontal table
Access: public
| Param | Type | Description |
|---|---|---|
| data | Array.<Object> |
table data |
| ordering | Array.<String> |
display ordering |
Example
console.log visuals.table.horizontal [
{ name: 'John Doe', age: 40 }
{ name: 'Jane Doe', age: 35 }
], [
'name => full name'
'age'
]
FULL NAME AGE
John Doe 40
Jane Doe 35
table.vertical(data, ordering)
Notice that you can rename columns by using the CURRENT => NEW syntax in the ordering configuration.
Vertical tables also accept separators and subtitles, which are represented in the ordering configuration as empty strings and strings surrounded by dollar signs respectively.
Kind: static method of table
Summary: Make a vertical table
Access: public
| Param | Type | Description |
|---|---|---|
| data | Object |
table data |
| ordering | Array.<String> |
display ordering |
Example
console.log visuals.table.vertical
name: 'John Doe'
age: 40
job: 'Developer'
, [
'$summary
visuals.drive([message]) ⇒ Promise.<String>
The dropdown detects and autorefreshes itself when the drive list changes.
Kind: static method of visuals
Summary: Prompt the user to select a drive device
Returns: Promise.<String> - device path
Access: public
Param
Type
Default
Description
[message]
String
'Select a drive'
message
Example
visuals.drive('Please select a drive').then (drive) ->
console.log(drive)
Support
If you're having any problem, please raise an issue on GitHub and the Resin.io team will be happy to help.
Tests
Run the test suite by doing:
$ gulp test
Contribute
- Issue Tracker: github.com/resin-io/resin-cli-visuals/issues
- Source Code: github.com/resin-io/resin-cli-visuals
Before submitting a PR, please make sure that you include tests, and that coffeelint runs without any warning:
$ gulp lint
License
The project is licensed under the Apache 2.0 license.
'name => full name'
'age'
''
'$extras
visuals.drive([message]) ⇒ __INLINE_CODE_40__
The dropdown detects and autorefreshes itself when the drive list changes.
Kind: static method of __INLINE_CODE_41__
Summary: Prompt the user to select a drive device
Returns: __INLINE_CODE_42__ - device path
Access: public
Param
Type
Default
Description
[message]
__INLINE_CODE_43__
__INLINE_CODE_44__
message
Example
__CODE_BLOCK_11__
Support
If you're having any problem, please raise an issue on GitHub and the Resin.io team will be happy to help.
Tests
Run the test suite by doing:
__CODE_BLOCK_12__
Contribute
- Issue Tracker: github.com/resin-io/resin-cli-visuals/issues
- Source Code: github.com/resin-io/resin-cli-visuals
Before submitting a PR, please make sure that you include tests, and that coffeelint runs without any warning:
__CODE_BLOCK_13__
License
The project is licensed under the Apache 2.0 license.
'job'
]
== SUMMARY
FULL NAME: John Doe
AGE: 40
== EXTRAS
JOB: Developer
visuals.drive([message]) ⇒ __INLINE_CODE_40__
The dropdown detects and autorefreshes itself when the drive list changes.
Kind: static method of __INLINE_CODE_41__
Summary: Prompt the user to select a drive device
Returns: __INLINE_CODE_42__ - device path
Access: public
| Param | Type | Default | Description |
|---|---|---|---|
| [message] | __INLINE_CODE_43__ | __INLINE_CODE_44__ | message |
Example
__CODE_BLOCK_11__Support
If you're having any problem, please raise an issue on GitHub and the Resin.io team will be happy to help.
Tests
Run the test suite by doing:
__CODE_BLOCK_12__Contribute
- Issue Tracker: github.com/resin-io/resin-cli-visuals/issues
- Source Code: github.com/resin-io/resin-cli-visuals
Before submitting a PR, please make sure that you include tests, and that coffeelint runs without any warning:
__CODE_BLOCK_13__License
The project is licensed under the Apache 2.0 license.