-
Notifications
You must be signed in to change notification settings - Fork 36
How to add a banner to your usage guide
Lloyd Brookes edited this page Jun 30, 2019
·
1 revision
A banner is created by adding the raw: true
property to your content
. This flag disables any formatting on the content, displaying it raw as supplied.
Demonstrates a banner at the top. This example also adds a synopsis
section.
const chalk = require('chalk')
const getUsage = require('command-line-usage')
const header =
`██▀███ ▓█████ ▓█████▄ ██▀███ █ ██ ███▄ ▄███▓
▓██ ▒ ██▒▓█ ▀ ▒██▀ ██▌▓██ ▒ ██▒ ██ ▓██▒▓██▒▀█▀ ██▒
▓██ ░▄█ ▒▒███ ░██ █▌▓██ ░▄█ ▒▓██ ▒██░▓██ ▓██░
▒██▀▀█▄ ▒▓█ ▄ ░▓█▄ ▌▒██▀▀█▄ ▓▓█ ░██░▒██ ▒██
░██▓ ▒██▒░▒████▒░▒████▓ ░██▓ ▒██▒▒▒█████▓ ▒██▒ ░██▒
░ ▒▓ ░▒▓░░░ ▒░ ░ ▒▒▓ ▒ ░ ▒▓ ░▒▓░░▒▓▒ ▒ ▒ ░ ▒░ ░ ░
░▒ ░ ▒░ ░ ░ ░ ░ ▒ ▒ ░▒ ░ ▒░░░▒░ ░ ░ ░ ░ ░
░░ ░ ░ ░ ░ ░ ░░ ░ ░░░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░
░ `
const sections = [
{
content: chalk.red(header),
raw: true
},
{
header: 'Synopsis',
content: [
'$ example [{bold --timeout} {underline ms}] {bold --src} {underline file} ...',
'$ example {bold --help}'
]
}
]
console.log(getUsage(sections))
Demonstrates a footer banner.
const getUsage = require('command-line-usage')
const wales = '\u001b[49m\n\u001b[48;5;231m\u001b[38;5;231m▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;231m▄▄▄▄▄▄▄▄▄▄▄▄▄\u001b[38;5;125m▄\u001b[38;5;161m▄▄▄▄\u001b[48;5;181m\u001b[38;5;125m▄\u001b[48;5;125m\u001b[38;5;161m▄\u001b[48;5;231m\u001b[38;5;231m▄▄▄▄▄▄▄▄▄\u001b[38;5;188m▄\u001b[38;5;125m▄\u001b[48;5;138m\u001b[38;5;161m▄\u001b[48;5;181m\u001b[38;5;231m▄\u001b[48;5;231m▄▄▄▄\u001b[38;5;95m▄\u001b[38;5;139m▄\u001b[48;5;145m\u001b[38;5;231m▄\u001b[48;5;231m▄▄▄▄▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;231m▄▄▄▄▄▄\u001b[38;5;125m▄\u001b[38;5;145m▄\u001b[38;5;231m▄\u001b[38;5;188m▄\u001b[48;5;161m\u001b[38;5;231m▄\u001b[38;5;145m▄\u001b[48;5;125m\u001b[38;5;161m▄\u001b[48;5;161m\u001b[38;5;89m▄\u001b[48;5;59m\u001b[38;5;131m▄\u001b[48;5;125m\u001b[38;5;161m▄\u001b[48;5;161m▄\u001b[38;5;125m▄\u001b[38;5;161m▄\u001b[48;5;231m\u001b[38;5;131m▄\u001b[38;5;231m▄▄▄▄▄▄\u001b[38;5;188m▄\u001b[38;5;161m▄\u001b[48;5;125m▄▄\u001b[48;5;161m▄▄\u001b[48;5;145m\u001b[38;5;125m▄\u001b[48;5;231m▄\u001b[48;5;145m\u001b[38;5;161m▄\u001b[48;5;125m▄\u001b[48;5;161m▄\u001b[48;5;145m\u001b[38;5;231m▄\u001b[48;5;231m▄▄▄▄▄\u001b[38;5;161m▄\u001b[38;5;231m▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;231m▄▄▄▄▄▄▄\u001b[48;5;161m▄\u001b[48;5;125m\u001b[38;5;125m▄\u001b[48;5;181m\u001b[38;5;188m▄\u001b[38;5;181m▄\u001b[48;5;145m\u001b[38;5;145m▄\u001b[48;5;132m\u001b[38;5;89m▄\u001b[48;5;131m▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[48;5;125m\u001b[38;5;125m▄\u001b[48;5;161m▄\u001b[38;5;161m▄▄▄\u001b[48;5;188m\u001b[38;5;125m▄\u001b[48;5;231m\u001b[38;5;231m▄▄▄\u001b[38;5;161m▄\u001b[48;5;132m▄\u001b[48;5;161m▄▄▄\u001b[48;5;125m\u001b[38;5;125m▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[48;5;125m▄\u001b[48;5;161m▄\u001b[38;5;125m▄▄▄▄\u001b[48;5;188m\u001b[38;5;231m▄\u001b[48;5;231m▄▄▄\u001b[38;5;161m▄\u001b[48;5;161m\u001b[38;5;125m▄\u001b[38;5;161m▄\u001b[48;5;231m\u001b[38;5;231m▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;231m▄▄▄▄▄\u001b[38;5;145m▄\u001b[38;5;231m▄\u001b[48;5;138m▄\u001b[48;5;231m\u001b[38;5;138m▄\u001b[38;5;188m▄\u001b[38;5;231m▄▄\u001b[48;5;131m\u001b[38;5;188m▄\u001b[38;5;231m▄\u001b[48;5;231m\u001b[38;5;145m▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[48;5;89m▄\u001b[48;5;161m▄▄\u001b[48;5;181m▄\u001b[48;5;231m\u001b[38;5;145m▄\u001b[38;5;231m▄▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[38;5;125m▄\u001b[38;5;161m▄▄\u001b[48;5;125m\u001b[38;5;125m▄\u001b[38;5;161m▄▄\u001b[48;5;161m▄\u001b[48;5;125m▄\u001b[48;5;161m▄▄▄\u001b[48;5;131m\u001b[38;5;231m▄\u001b[48;5;231m▄▄▄\u001b[38;5;188m▄\u001b[48;5;161m\u001b[38;5;231m▄\u001b[38;5;145m▄\u001b[38;5;161m▄\u001b[38;5;131m▄\u001b[48;5;231m\u001b[38;5;188m▄\u001b[38;5;231m▄▄▄▄▄\u001b[49m\n\u001b[48;5;231m▄▄▄▄▄▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[48;5;138m\u001b[38;5;89m▄\u001b[38;5;125m▄\u001b[48;5;161m\u001b[38;5;138m▄\u001b[48;5;231m\u001b[38;5;231m▄▄▄\u001b[38;5;139m▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[38;5;125m▄\u001b[48;5;125m▄\u001b[48;5;161m\u001b[38;5;161m▄▄\u001b[48;5;231m▄\u001b[38;5;231m▄▄▄\u001b[48;5;161m\u001b[38;5;125m▄\u001b[38;5;161m▄\u001b[38;5;125m▄\u001b[48;5;125m\u001b[38;5;161m▄▄▄\u001b[38;5;125m▄\u001b[48;5;161m▄▄\u001b[38;5;161m▄\u001b[38;5;125m▄\u001b[48;5;131m\u001b[38;5;161m▄\u001b[48;5;231m\u001b[38;5;231m▄\u001b[38;5;188m▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[38;5;188m▄\u001b[38;5;231m▄\u001b[38;5;161m▄\u001b[48;5;125m▄\u001b[48;5;145m\u001b[38;5;188m▄\u001b[48;5;231m\u001b[38;5;231m▄\u001b[48;5;188m▄\u001b[48;5;231m▄▄▄▄▄\u001b[49m\n\u001b[48;5;231m▄▄▄▄▄▄▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[48;5;89m▄\u001b[48;5;231m\u001b[38;5;231m▄▄▄▄\u001b[48;5;161m\u001b[38;5;161m▄▄\u001b[48;5;125m\u001b[38;5;125m▄\u001b[38;5;88m▄\u001b[48;5;89m\u001b[38;5;125m▄\u001b[48;5;161m▄\u001b[48;5;231m\u001b[38;5;161m▄▄\u001b[48;5;188m▄\u001b[48;5;131m▄\u001b[48;5;161m▄\u001b[38;5;125m▄\u001b[48;5;125m\u001b[38;5;161m▄\u001b[48;5;161m▄\u001b[48;5;125m\u001b[38;5;125m▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[38;5;125m▄\u001b[38;5;161m▄▄\u001b[38;5;231m▄\u001b[48;5;145m▄\u001b[48;5;231m▄▄▄\u001b[48;5;161m▄\u001b[38;5;188m▄\u001b[48;5;125m▄\u001b[38;5;161m▄\u001b[48;5;161m▄\u001b[48;5;138m\u001b[38;5;181m▄\u001b[48;5;231m\u001b[38;5;231m▄▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;231m\u001b[38;5;35m▄▄▄▄▄▄\u001b[38;5;161m▄\u001b[48;5;161m\u001b[38;5;29m▄\u001b[38;5;161m▄\u001b[48;5;231m▄\u001b[38;5;35m▄▄\u001b[48;5;145m\u001b[38;5;65m▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[48;5;125m▄\u001b[38;5;125m▄▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[48;5;125m▄\u001b[48;5;161m\u001b[38;5;125m▄\u001b[38;5;161m▄\u001b[48;5;125m\u001b[38;5;125m▄\u001b[38;5;161m▄▄\u001b[48;5;161m\u001b[38;5;125m▄\u001b[48;5;125m\u001b[38;5;161m▄\u001b[38;5;125m▄\u001b[48;5;161m\u001b[38;5;161m▄▄▄\u001b[48;5;125m\u001b[38;5;125m▄▄\u001b[48;5;161m\u001b[38;5;161m▄▄\u001b[38;5;125m▄\u001b[38;5;161m▄▄▄▄▄\u001b[38;5;125m▄\u001b[38;5;35m▄\u001b[48;5;231m▄▄▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;35m▄▄▄▄▄▄\u001b[48;5;95m▄\u001b[48;5;35m▄\u001b[48;5;161m▄\u001b[48;5;89m\u001b[38;5;161m▄\u001b[48;5;161m\u001b[38;5;125m▄\u001b[48;5;29m\u001b[38;5;161m▄\u001b[48;5;35m▄\u001b[48;5;125m▄▄\u001b[38;5;125m▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[38;5;125m▄\u001b[38;5;161m▄\u001b[48;5;125m▄\u001b[48;5;161m▄\u001b[38;5;125m▄\u001b[38;5;161m▄▄\u001b[48;5;125m\u001b[38;5;89m▄\u001b[48;5;161m\u001b[38;5;125m▄▄\u001b[48;5;125m\u001b[38;5;161m▄▄\u001b[48;5;161m▄▄\u001b[48;5;125m▄\u001b[48;5;161m\u001b[38;5;125m▄\u001b[38;5;161m▄▄\u001b[48;5;125m▄\u001b[48;5;161m▄\u001b[38;5;35m▄\u001b[48;5;125m▄\u001b[48;5;35m▄▄▄▄▄▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;35m▄▄▄▄▄▄▄▄▄▄\u001b[48;5;161m\u001b[38;5;29m▄\u001b[38;5;161m▄▄\u001b[38;5;125m▄\u001b[38;5;161m▄\u001b[48;5;125m▄\u001b[48;5;161m\u001b[38;5;89m▄\u001b[48;5;125m\u001b[38;5;125m▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[48;5;125m\u001b[38;5;125m▄▄\u001b[48;5;89m\u001b[38;5;161m▄\u001b[48;5;125m\u001b[38;5;125m▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[48;5;125m\u001b[38;5;125m▄\u001b[48;5;161m▄\u001b[48;5;125m\u001b[38;5;161m▄\u001b[48;5;161m▄▄\u001b[38;5;35m▄\u001b[48;5;65m▄\u001b[48;5;125m▄\u001b[48;5;161m\u001b[38;5;29m▄\u001b[38;5;125m▄\u001b[38;5;89m▄\u001b[38;5;161m▄\u001b[48;5;125m▄\u001b[48;5;161m▄▄\u001b[48;5;35m\u001b[38;5;125m▄\u001b[38;5;65m▄\u001b[38;5;35m▄▄▄▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;35m▄▄▄▄▄▄▄▄▄▄▄\u001b[48;5;161m\u001b[38;5;65m▄\u001b[48;5;125m\u001b[38;5;35m▄\u001b[48;5;35m▄\u001b[38;5;125m▄\u001b[48;5;125m▄\u001b[48;5;161m\u001b[38;5;161m▄\u001b[38;5;29m▄\u001b[38;5;161m▄\u001b[38;5;35m▄\u001b[48;5;125m▄\u001b[48;5;131m▄\u001b[48;5;35m▄\u001b[48;5;95m▄\u001b[48;5;161m\u001b[38;5;125m▄▄\u001b[38;5;161m▄\u001b[38;5;125m▄\u001b[38;5;161m▄\u001b[48;5;35m▄▄\u001b[38;5;95m▄\u001b[38;5;35m▄▄▄▄▄\u001b[48;5;125m\u001b[38;5;59m▄\u001b[38;5;125m▄\u001b[48;5;29m\u001b[38;5;65m▄\u001b[48;5;35m\u001b[38;5;35m▄▄▄▄▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;35m▄▄▄▄▄▄▄▄▄▄▄▄▄▄\u001b[48;5;161m\u001b[38;5;125m▄\u001b[38;5;65m▄\u001b[48;5;65m\u001b[38;5;35m▄\u001b[48;5;35m▄\u001b[48;5;161m▄\u001b[48;5;35m▄\u001b[38;5;65m▄\u001b[38;5;89m▄\u001b[38;5;29m▄\u001b[38;5;35m▄▄\u001b[48;5;65m▄\u001b[48;5;89m\u001b[38;5;59m▄\u001b[48;5;161m\u001b[38;5;161m▄▄▄\u001b[48;5;95m\u001b[38;5;35m▄▄\u001b[48;5;29m▄\u001b[48;5;35m\u001b[38;5;59m▄\u001b[38;5;35m▄▄▄\u001b[48;5;65m\u001b[38;5;161m▄\u001b[48;5;125m▄\u001b[48;5;29m\u001b[38;5;35m▄\u001b[48;5;35m▄▄▄▄▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;35m▄▄▄▄▄▄▄▄\u001b[48;5;29m\u001b[38;5;125m▄\u001b[48;5;125m\u001b[38;5;161m▄\u001b[48;5;161m\u001b[38;5;125m▄\u001b[48;5;29m\u001b[38;5;161m▄\u001b[48;5;65m▄\u001b[48;5;161m▄\u001b[38;5;125m▄\u001b[48;5;35m\u001b[38;5;29m▄\u001b[38;5;35m▄▄▄\u001b[38;5;29m▄\u001b[38;5;88m▄\u001b[38;5;125m▄\u001b[48;5;95m\u001b[38;5;161m▄\u001b[48;5;125m\u001b[38;5;125m▄\u001b[48;5;95m\u001b[38;5;161m▄\u001b[48;5;161m▄\u001b[48;5;125m\u001b[38;5;59m▄\u001b[48;5;161m\u001b[38;5;35m▄\u001b[48;5;95m▄\u001b[48;5;35m▄▄▄\u001b[38;5;95m▄\u001b[48;5;95m\u001b[38;5;125m▄\u001b[48;5;161m▄\u001b[48;5;35m\u001b[38;5;161m▄▄\u001b[48;5;161m▄▄\u001b[48;5;35m\u001b[38;5;29m▄\u001b[38;5;35m▄▄▄▄▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;35m▄▄▄▄▄▄▄▄▄\u001b[48;5;125m▄\u001b[48;5;161m▄\u001b[48;5;65m▄\u001b[48;5;29m▄\u001b[48;5;35m▄▄\u001b[48;5;161m▄\u001b[48;5;65m▄\u001b[48;5;35m▄▄▄\u001b[48;5;65m▄\u001b[48;5;89m▄\u001b[48;5;35m▄▄▄▄\u001b[48;5;29m▄\u001b[48;5;125m▄\u001b[48;5;89m▄\u001b[48;5;35m▄▄▄▄\u001b[48;5;95m▄\u001b[48;5;161m▄\u001b[48;5;35m▄\u001b[48;5;65m▄\u001b[48;5;35m▄▄\u001b[48;5;95m▄\u001b[48;5;131m▄\u001b[48;5;35m▄▄▄▄▄▄▄▄▄\u001b[49m\n\u001b[48;5;35m▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄\u001b[49m\n\u001b[39m '
const optionDefinitions = [
{
name: 'help',
description: 'Display this usage guide.',
alias: 'h',
type: Boolean
},
{
name: 'src',
description: 'The input files to process. This is some additional text existing solely to demonstrate word-wrapping, nothing more, nothing less. And nothing in between.',
type: String,
multiple: true,
defaultOption: true,
typeLabel: '{underline file} ...'
},
{
name: 'timeout',
description: 'Timeout value in ms.',
alias: 't',
type: Number,
typeLabel: '{underline ms}'
}
]
const sections = [
{
header: 'A typical app',
content: 'Generates something {italic very} important.'
},
{
header: 'Synopsis',
content: [
'$ example [{bold --timeout} {underline ms}] {bold --src} {underline file} ...',
'$ example {bold --help}'
]
},
{
header: 'Options',
optionList: optionDefinitions
},
{
content: [
'{italic This app was tested by dragons in Wales.}',
'',
wales
],
raw: true
}
]
console.log(getUsage(sections))