'-p PROFILE' option; ~/.joyentcloudconfig.json config file name
This commit is contained in:
parent
e33bde2e62
commit
67b170e68f
1
TODO.md
1
TODO.md
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
# later (in no particular order)
|
# later (in no particular order)
|
||||||
|
|
||||||
|
- restify-client and bunyan-light without dtrace-provider
|
||||||
- how to add/exclude DCs?
|
- how to add/exclude DCs?
|
||||||
- cmdln.js support for bash tab completion
|
- cmdln.js support for bash tab completion
|
||||||
- node-smartdc installs joyentcloud and warns about deprecation on stderr.
|
- node-smartdc installs joyentcloud and warns about deprecation on stderr.
|
||||||
|
24
lib/cli.js
24
lib/cli.js
@ -48,7 +48,9 @@ function CLI() {
|
|||||||
{names: ['help', 'h'], type: 'bool', help: 'Print help and exit.'},
|
{names: ['help', 'h'], type: 'bool', help: 'Print help and exit.'},
|
||||||
{name: 'version', type: 'bool', help: 'Print version and exit.'},
|
{name: 'version', type: 'bool', help: 'Print version and exit.'},
|
||||||
{names: ['verbose', 'v'], type: 'bool',
|
{names: ['verbose', 'v'], type: 'bool',
|
||||||
help: 'Verbose/debug output.'}
|
help: 'Verbose/debug output.'},
|
||||||
|
{names: ['profile', 'p'], type: 'string', env: 'SMRT_PROFILE',
|
||||||
|
helpArg: 'NAME', help: 'SMRT Profile to use.'}
|
||||||
],
|
],
|
||||||
helpOpts: {
|
helpOpts: {
|
||||||
includeEnv: true,
|
includeEnv: true,
|
||||||
@ -73,11 +75,11 @@ CLI.prototype.init = function (opts, args, callback) {
|
|||||||
log.src = true;
|
log.src = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.__defineGetter__('joyent', function () {
|
this.__defineGetter__('jc', function () {
|
||||||
if (self._joyent === undefined) {
|
if (self._jc === undefined) {
|
||||||
self._joyent = new JoyentCloud({log: log});
|
self._jc = new JoyentCloud({log: log, profile: opts.profile});
|
||||||
}
|
}
|
||||||
return self._joyent;
|
return self._jc;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Cmdln class handles `opts.help`.
|
// Cmdln class handles `opts.help`.
|
||||||
@ -93,11 +95,11 @@ CLI.prototype.do_profile = function (subcmd, opts, args, callback) {
|
|||||||
return callback(new Error('too many args: ' + args));
|
return callback(new Error('too many args: ' + args));
|
||||||
}
|
}
|
||||||
|
|
||||||
var profs = common.deepObjCopy(this.joyent.profiles);
|
var profs = common.deepObjCopy(this.jc.profiles);
|
||||||
var currProfileName = this.joyent.profile.name;
|
var currProfileName = this.jc.profile.name;
|
||||||
for (var i = 0; i < profs.length; i++) {
|
for (var i = 0; i < profs.length; i++) {
|
||||||
profs[i].curr = (profs[i].name === currProfileName ? '*' : ' ');
|
profs[i].curr = (profs[i].name === currProfileName ? '*' : ' ');
|
||||||
profs[i].dcs = (profs[i].dcs ? Object.keys(profs[i].dcs) : ['all'])
|
profs[i].dcs = (profs[i].dcs ? profs[i].dcs : ['all'])
|
||||||
.join(',');
|
.join(',');
|
||||||
}
|
}
|
||||||
if (opts.json) {
|
if (opts.json) {
|
||||||
@ -141,7 +143,7 @@ CLI.prototype.do_dcs = function (subcmd, opts, args, callback) {
|
|||||||
return callback(new Error('too many args: ' + args));
|
return callback(new Error('too many args: ' + args));
|
||||||
}
|
}
|
||||||
|
|
||||||
var dcs = this.joyent.config.dcs;
|
var dcs = this.jc.config.dcs;
|
||||||
var dcsArray = Object.keys(dcs).map(
|
var dcsArray = Object.keys(dcs).map(
|
||||||
function (n) { return {name: n, url: dcs[n]}; });
|
function (n) { return {name: n, url: dcs[n]}; });
|
||||||
if (opts.json) {
|
if (opts.json) {
|
||||||
@ -186,14 +188,14 @@ CLI.prototype.do_machines = function (subcmd, opts, args, callback) {
|
|||||||
return callback(new Error('too many args: ' + args));
|
return callback(new Error('too many args: ' + args));
|
||||||
}
|
}
|
||||||
|
|
||||||
//XXX joyent.listMachines should change to return a 'res' event emitter
|
//XXX jc.listMachines should change to return a 'res' event emitter
|
||||||
// that emits 'dcError' and 'data'.
|
// that emits 'dcError' and 'data'.
|
||||||
var listOpts = {
|
var listOpts = {
|
||||||
onDcError: function (dc, dcErr) {
|
onDcError: function (dc, dcErr) {
|
||||||
console.warn('%s machines: dc %s error: %s', self.name, dc, dcErr);
|
console.warn('%s machines: dc %s error: %s', self.name, dc, dcErr);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
this.joyent.listMachines(listOpts, function (err, machines) {
|
this.jc.listMachines(listOpts, function (err, machines) {
|
||||||
if (err)
|
if (err)
|
||||||
return callback(err);
|
return callback(err);
|
||||||
if (opts.json) {
|
if (opts.json) {
|
||||||
|
@ -12,7 +12,7 @@ var sprintf = require('extsprintf').sprintf;
|
|||||||
var common = require('./common');
|
var common = require('./common');
|
||||||
|
|
||||||
|
|
||||||
var CONFIG_PATH = path.resolve(process.env.HOME, '.joyentconfig.json');
|
var CONFIG_PATH = path.resolve(process.env.HOME, '.joyentcloudconfig.json');
|
||||||
var DEFAULTS_PATH = path.resolve(__dirname, '..', 'etc', 'defaults.json');
|
var DEFAULTS_PATH = path.resolve(__dirname, '..', 'etc', 'defaults.json');
|
||||||
|
|
||||||
|
|
||||||
@ -26,15 +26,14 @@ function loadConfigSync() {
|
|||||||
// Add 'env' profile.
|
// Add 'env' profile.
|
||||||
if (!config.profiles) {
|
if (!config.profiles) {
|
||||||
config.profiles = [];
|
config.profiles = [];
|
||||||
config.profiles.push({
|
|
||||||
name: 'env',
|
|
||||||
account: process.env.SDC_USER || process.env.SDC_ACCOUNT,
|
|
||||||
keyId: process.env.SDC_KEY_ID,
|
|
||||||
//XXX true/false 0/1 handling
|
|
||||||
rejectUnauthorized: common.boolFromString(
|
|
||||||
process.env.SDC_TESTING || process.env.SDC_TLS_INSECURE)
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
config.profiles.push({
|
||||||
|
name: 'env',
|
||||||
|
account: process.env.SDC_USER || process.env.SDC_ACCOUNT,
|
||||||
|
keyId: process.env.SDC_KEY_ID,
|
||||||
|
rejectUnauthorized: common.boolFromString(
|
||||||
|
process.env.SDC_TESTING || process.env.SDC_TLS_INSECURE)
|
||||||
|
});
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
@ -32,12 +32,11 @@ function JoyentCloud(options) {
|
|||||||
assert.object(options.log, 'options.log');
|
assert.object(options.log, 'options.log');
|
||||||
assert.optionalString(options.profile, 'options.profile');
|
assert.optionalString(options.profile, 'options.profile');
|
||||||
|
|
||||||
|
this.log = options.log;
|
||||||
this.config = loadConfigSync();
|
this.config = loadConfigSync();
|
||||||
this.profiles = this.config.profiles;
|
this.profiles = this.config.profiles;
|
||||||
this.profile = this.getProfile(
|
this.profile = this.getProfile(
|
||||||
options.profile || this.config.defaultProfile);
|
options.profile || this.config.defaultProfile);
|
||||||
|
|
||||||
this.log = options.log;
|
|
||||||
this.log.trace({profile: this.profile}, 'profile data');
|
this.log.trace({profile: this.profile}, 'profile data');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user