easily create complex multi-column command-line-interfaces.
var ui = require('cliui')({ width: 80 }) ui.div('Usage: $0 [command] [options]') ui.div({ text: 'Options:', padding: [2, 0, 2, 0] }) ui.div( { text: "-f, --file", width: 40, padding: [0, 4, 0, 4] }, { text: "the file to load", width: 25 }, { text: "[required]", align: 'right' } ) console.log(ui.toString())
cliui exposes a simple layout DSL:
If you create a single ui.row
, passing a string rather than an
object:
\n
: characters will be interpreted as new rows.\t
: characters will be interpreted as new columns.
: characters will be interpreted as padding.as an example...
var ui = require('./')({ width: 60 }) ui.div( 'Usage: node ./bin/foo.js\n' + ' <regex>\t provide a regex\n' + ' <glob>\t provide a glob\t [required]' ) console.log(ui.toString())
will output:
Usage: node ./bin/foo.js <regex> provide a regex <glob> provide a glob [required]
cliui = require('cliui')
Specify the maximum width of the UI being generated.
Enable or disable the wrapping of text in a column.
Create a row with any number of columns, a column can either be a string, or an object with the following options:
right
or center
.[top, right, bottom, left]
.Similar to div
, except the next row will be appended without
a new line being created.