cli-engine
Version:
Generic CLI Framework
79 lines (64 loc) • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _cliEngineCommand = require('cli-engine-command');
var _cliEngineCommand2 = _interopRequireDefault(_cliEngineCommand);
var _plugins = require('../plugins');
var _plugins2 = _interopRequireDefault(_plugins);
var _fsExtra = require('fs-extra');
var _fsExtra2 = _interopRequireDefault(_fsExtra);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const debug = require('debug')('cli:commands');
class Commands extends _cliEngineCommand2.default {
async run() {
this.out.warn('heroku-cli: This CLI is deprecated. Please reinstall from https://cli.heroku.com');
await this.addV6Hack();
let plugins = new _plugins2.default(this.config);
await plugins.load();
let topics = plugins.topics.filter(t => !t.hidden);
let commands = plugins.commands.map(c => ({
command: c.command,
topic: c.topic,
usage: c.usage,
description: c.description,
help: c.help,
fullHelp: c.help,
hidden: c.hidden
}));
this.out.styledJSON({ topics, commands });
}
async addV6Hack() {
try {
const hack = `### begin v6 v.1
begin
pluginsDir = File.join(Dir.home, ".heroku", "plugins")
bin = File.join(Dir.home, ".local", "share", "heroku", "client", "bin", "heroku")
if File.exists?(bin) && (!Dir.exists?(pluginsDir) || Dir.entries(pluginsDir).count <= 2)
puts "Running: #{bin}" if ENV['HEROKU_DEBUG'] || ENV['DEBUG']
system bin, *ARGV
status = $?.exitstatus
exit status
end
rescue => e
puts e
end
### end v6 v.1
`;
if (this.config.windows) return;
let cliRB = _path2.default.join(this.config.home, '.heroku', 'client', 'lib', 'heroku', 'cli.rb');
if (!(await _fsExtra2.default.exists(cliRB))) return;
let contents = await _fsExtra2.default.readFile(cliRB, 'utf8');
if (contents.startsWith('### begin v6 v.1')) return;
await _fsExtra2.default.outputFile(cliRB, hack + contents);
} catch (err) {
debug(err);
}
}
}
exports.default = Commands;
Commands.topic = 'commands';
Commands.hidden = true;
Commands.flags = { json: _cliEngineCommand.flags.boolean() };