This repository has been archived on 2020-01-20. You can view files and clone it, but cannot push or open issues or pull requests.
node-spearhead/lib/do_profiles.js

111 lines
2.6 KiB
JavaScript
Raw Permalink Normal View History

/*
* Copyright (c) 2015 Joyent Inc.
*
* `triton profiles ...`
*/
var common = require('./common');
var errors = require('./errors');
var mod_config = require('./config');
var tabula = require('tabula');
var sortDefault = 'name';
var columnsDefault = 'name,curr,account,url';
var columnsDefaultLong = 'name,curr,account,url,insecure,keyId';
function _listProfiles(cli, opts, args, cb) {
var columns = columnsDefault;
if (opts.o) {
columns = opts.o;
} else if (opts.long) {
columns = columnsDefaultLong;
}
columns = columns.split(',');
var sort = opts.s.split(',');
// Load all the profiles. "env" is a special one managed by the CLI.
var profiles;
try {
profiles = mod_config.loadAllProfiles({
configDir: cli.configDir,
log: cli.log
});
} catch (e) {
return cb(e);
}
// Current profile: Set 'curr' field. Apply CLI overrides.
for (i = 0; i < profiles.length; i++) {
var profile = profiles[i];
if (profile.name === cli.tritonapi.profile.name) {
cli._applyProfileOverrides(profile);
if (opts.json) {
profile.curr = true;
} else {
profile.curr = '*'; // tabular
}
} else {
if (opts.json) {
profile.curr = false;
} else {
profile.curr = ''; // tabular
}
}
}
// Display.
var i;
if (opts.json) {
common.jsonStream(profiles);
} else {
tabula(profiles, {
skipHeader: opts.H,
columns: columns,
sort: sort
});
}
cb();
}
function do_profiles(subcmd, opts, args, cb) {
if (opts.help) {
return this.do_help('help', {}, [subcmd], cb);
} else if (args.length > 0) {
return cb(new errors.UsageError('too many args'));
}
_listProfiles(this, opts, args, cb);
}
do_profiles.options = [
{
names: ['help', 'h'],
type: 'bool',
help: 'Show this help.'
}
].concat(common.getCliTableOptions({
includeLong: true,
sortDefault: sortDefault
}));
do_profiles.help = [
'List `triton` CLI profiles.',
'',
'A profile is a configured Triton CloudAPI endpoint. I.e. the',
'url, account, key, etc. information required to call a CloudAPI.',
'You can then switch between profiles with `triton -p PROFILE`',
'or the TRITON_PROFILE environment variable.',
'',
'The "CURR" column indicates which profile is the current one.',
'',
'Usage:',
' {{name}} profiles',
'',
'{{options}}'
].join('\n');
module.exports = do_profiles;