Socket
Socket
Sign inDemoInstall

heroku-cli-util

Package Overview
Dependencies
Maintainers
2
Versions
155
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

heroku-cli-util - npm Package Compare versions

Comparing version 2.0.1 to 3.0.0

38

cli.js
var console = require('./console');
var errors = require('./errors');
var config = require('./config');
var prompt = require('./prompt');
var errors = require('./errors');
var config = require('./config');
var prompt = require('./prompt');
exports.run = require('./run');
exports.log = console.log.bind(console);
exports.formatDate = require('./date').formatDate;
exports.error = errors.error;
exports.warn = errors.warn;
exports.columnify = require('./columnify');
exports.console = console;
exports.prompt = prompt.prompt;
exports.confirmApp = prompt.confirmApp;
exports.preauth = require('./preauth');
exports.command = require('./command');
exports.defaultHost = config.defaultHost;
exports.httpGitHost = config.httpGitHost;
exports.gitHost = config.gitHost;
exports.host = config.host;
exports.run = require('./run');
exports.log = console.log.bind(console);
exports.formatDate = require('./date').formatDate;
exports.error = errors.error;
exports.warn = errors.warn;
exports.errorHandler = errors.errorHandler;
exports.columnify = require('./columnify');
exports.console = console;
exports.prompt = prompt.prompt;
exports.confirmApp = prompt.confirmApp;
exports.preauth = require('./preauth');
exports.command = require('./command');
exports.defaultHost = config.defaultHost;
exports.httpGitHost = config.httpGitHost;
exports.gitHost = config.gitHost;
exports.host = config.host;
'use strict';
let co = require('co');

@@ -15,4 +16,7 @@ let Heroku = require('heroku-client');

yield fn(context, heroku);
}).catch(errors.handleErr(context));
}).catch(errors.errorHandler({
logPath: context.herokuDir + '/error.log',
stackTrace: true,
}));
};
};
'use strict';
let console = require('./console');
let linewrap = require('linewrap');
function wrap (msg) {
let linewrap = require('linewrap');
return linewrap(6,

@@ -29,31 +30,46 @@ process.stderr.getWindowSize()[0], {

function handleErr (context) {
return function (err) {
if (err.body) {
// API error
if (err.body.message) {
error(err.body.message);
} else if (err.body.error) {
error(err.body.error);
}
} else {
// Unhandled error
if (err.message) {
error(err.message);
function getErrorMessage (err) {
if (!err) {
return "unspecified error";
}
if (err.body) {
// API error
if (err.body.message) {
return err.body.message;
} else if (err.body.error) {
return err.body.error;
}
}
// Unhandled error
if (err.message && err.code) {
return `${err.code}: ${err.message}`;
} else if (err.message) {
return err.message;
}
return err;
}
function logtimestamp() {
return new Date().toISOString()
.replace(/T/, ' ')
.replace(/-/g, '/')
.replace(/\..+/, '');
}
function logErr(err, logPath) {
let fs = require('fs');
fs.appendFileSync(logPath, logtimestamp() + ' ' + err.stack + '\n');
error(`See ${logPath}` + logPath + ' for more info.');
}
function errorHandler(options) {
return function handleErr(err) {
options = options || {};
error(getErrorMessage(err));
if (options.stackTrace && err.stack) {
if (options.logPath) {
logErr(err, options.logPath);
} else {
error(err);
console.error(err.stack);
}
if (err.stack) {
var logPath = context.herokuDir + '/error.log';
var fs = require('fs');
var log = function (line) {
var d = new Date().toISOString()
.replace(/T/, ' ')
.replace(/-/g, '/')
.replace(/\..+/, '');
fs.appendFileSync(logPath, d + ' ' + line + '\n');
};
log(err.stack);
error(`See ${logPath}` + logPath + ' for more info.');
}
}

@@ -66,2 +82,2 @@ process.exit(1);

module.exports.warn = warn;
module.exports.handleErr = handleErr;
module.exports.errorHandler = errorHandler;
{
"name": "heroku-cli-util",
"version": "2.0.1",
"version": "3.0.0",
"description": "Set of helpful CLI utilities",

@@ -5,0 +5,0 @@ "main": "cli.js",

@@ -7,3 +7,3 @@ 'use strict';

return new Promise(function (fulfill, reject) {
prompt.prompt('Two-factor code').then(function (second_factor) {
prompt.prompt('Two-factor code', {mask: true}).then(function (second_factor) {
fulfill(heroku.request({

@@ -10,0 +10,0 @@ method: 'PUT',

@@ -7,7 +7,61 @@ 'use strict';

function prompt (name) {
function promptMasked (options) {
return new Promise(function (fulfill, reject) {
process.stdin.setEncoding('utf8');
process.stderr.write(options.prompt);
process.stdin.resume();
process.stdin.setRawMode(true);
let input = '';
process.stdin.on('data', function (c) {
switch(c) {
case "\u0004":
case "\r":
case "\n":
if (input.length === 0) { return; }
if (options.mask) {
process.stderr.clearLine();
process.stderr.cursorTo(0);
process.stderr.write(options.prompt + input.replace(/./g, '*'));
}
console.error();
process.stdin.setRawMode(false);
process.stdin.pause();
fulfill(input);
return;
case "\u0003":
// Ctrl-c
reject();
return;
default:
if (c.charCodeAt(0) === 127) {
// backspace
input = input.substr(0, input.length-1);
process.stderr.clearLine();
process.stderr.cursorTo(0);
if (options.mask) {
process.stderr.write(options.prompt + input);
} else {
process.stderr.write(options.prompt + input.replace(/./g, '*'));
}
return;
}
process.stderr.write(options.mask ? c : '*');
input += c;
return;
}
});
});
}
function prompt (name, options) {
options = options || {};
options.prompt = name ? name + ': ' : '> ';
if (options.mask || options.hide) {
return promptMasked(options);
}
return new Promise(function (fulfill) {
process.stdin.setEncoding('utf8');
process.stderr.write(options.prompt);
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stderr.write(name ? name + ': ' : '> ');
process.stdin.once('data', function (data) {

@@ -14,0 +68,0 @@ process.stdin.pause();

@@ -21,3 +21,3 @@ # heroku-cli-util

var h = require('heroku-cli-util');
h.prompt('email', function (_, email) {
h.prompt('email', {}, function (_, email) {
console.log(`your email is: ${email}`);

@@ -31,3 +31,3 @@ });

var h = require('heroku-cli-util');
h.prompt('email').then(function (email) {
h.prompt('email', {}).then(function (email) {
console.log(`your email is: ${email}`);

@@ -41,6 +41,11 @@ });

var h = require('heroku-cli-util');
var email = yield h.prompt('email');
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

@@ -47,0 +52,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc