heroku-cli-util
Set of helpful CLI utilities
Installation
npm install heroku-cli-util --save
Action
let h = require('heroku-cli-util');
let promise = heroku.apps(appname).info();
let app = yield h.action('getting apps', promise);
console.log(`app name: ${app.name}`);
Prompt
Callback style
var h = require('heroku-cli-util');
h.prompt('email', {}, function (_, email) {
console.log(`your email is: ${email}`);
});
Promise style
var h = require('heroku-cli-util');
h.prompt('email', {}).then(function (email) {
console.log(`your email is: ${email}`);
});
Generator style (must be wrapped in h.command() or co block)
var h = require('heroku-cli-util');
var email = yield h.prompt('email', {});
console.log(`your email is: ${email}`);
Options
mask: true
: mask input field after submitting.
hide: true
: mask characters while entering.
Confirm App
Supports the same async styles as prompt()
. Errors if not confirmed.
Basic
var h = require('heroku-cli-util');
yield h.confirmApp('appname', context.flags.confirm);
> appname
Custom message
var h = require('heroku-cli-util');
yield h.confirmApp('appname', context.flags.confirm, 'foo');
> appname
Errors
var h = require('heroku-cli-util');
h.error("App not found");
Warnings
var h = require('heroku-cli-util');
h.warn("App not found");
Tables/Columns
var h = require('heroku-cli-util');
h.columnify({
'Dynos': 1,
'Region': 'us',
'Stack': 'cedar-14'
});
Dates
var h = require('heroku-cli-util');
var d = new Date();
console.log(h.formatDate(d));
Command
Used for initializing a plugin command.
give you an auth'ed instance of heroku-client
and cleanly handle API exceptions.
It uses co
so you can yield
promises.
let h = require('heroku-cli-util');
module.exports.commands = [
{
topic: 'apps',
command: 'info',
needsAuth: true,
needsApp: true,
run: h.command(function* (context, heroku) {
let app = yield heroku.apps(context.app).info();
console.dir(app);
})
}
];
With options:
let h = require('heroku-cli-util');
module.exports.commands = [
{
topic: 'apps',
command: 'info',
needsAuth: true,
needsApp: true,
run: h.command({preauth: true},
function* (context, heroku) {
let app = yield heroku.apps(context.app).info();
console.dir(app);
})
}
];
If the command has a two_factor
API error, it will ask the user for a 2fa code and retry.
If you set preauth: true
it will preauth against the current app instead of just setting the header on an app. (This is necessary if you need to do more than 1 API call that will require 2fa)
Tests
npm install
npm test
License
ISC