joyent/node-triton#160 missing file from cr:1129 rebase
Reviewed by: Dillon Amburgey <dillona@dillona.com> Approved by: Marsell Kukuljevic <marsell@joyent.com>
This commit is contained in:
parent
3a369e4bb8
commit
04cc61ee1d
114
lib/constants.js
Normal file
114
lib/constants.js
Normal file
@ -0,0 +1,114 @@
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright 2016 Joyent, Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
* node-triton constants.
|
||||
*
|
||||
* CLI usage:
|
||||
* $ node lib/constants.js
|
||||
* ... emits all the constants as a JSON object ...
|
||||
* $ node lib/constants.js KEY
|
||||
* ... emits the value of KEY (in json-y form, i.e. quotes removed from a
|
||||
* string) ...
|
||||
*/
|
||||
|
||||
var mod_path = require('path');
|
||||
|
||||
|
||||
// ---- determining constants
|
||||
|
||||
/*
|
||||
* The `triton` CLI's config dir.
|
||||
*
|
||||
* For *testing* only, we allow override of this dir.
|
||||
*/
|
||||
var CLI_CONFIG_DIR;
|
||||
if (process.env.TRITONTEST_CLI_CONFIG_DIR) {
|
||||
CLI_CONFIG_DIR = process.env.TRITONTEST_CLI_CONFIG_DIR;
|
||||
} else if (process.platform === 'win32') {
|
||||
/*
|
||||
* For better or worse we are using APPDATA (i.e. the *Roaming* AppData
|
||||
* dir) over LOCALAPPDATA (non-roaming). The former is meant for "user"
|
||||
* data, the latter for "machine" data.
|
||||
*
|
||||
* TODO: We should likely separate out the *cache* subdir to
|
||||
* machine-specific data dir.
|
||||
*/
|
||||
CLI_CONFIG_DIR = mod_path.resolve(process.env.APPDATA, 'Joyent', 'Triton');
|
||||
} else {
|
||||
CLI_CONFIG_DIR = mod_path.resolve(process.env.HOME, '.triton');
|
||||
}
|
||||
|
||||
|
||||
// ---- exports
|
||||
|
||||
module.exports = {
|
||||
CLI_CONFIG_DIR: CLI_CONFIG_DIR
|
||||
};
|
||||
|
||||
|
||||
// ---- mainline
|
||||
|
||||
function main(argv) {
|
||||
var assert = require('assert-plus');
|
||||
var dashdash = require('cmdln').dashdash;
|
||||
|
||||
assert.arrayOfString(argv, 'argv');
|
||||
|
||||
var options = [
|
||||
{
|
||||
names: ['help', 'h'],
|
||||
type: 'bool',
|
||||
help: 'Print this help and exit.'
|
||||
}
|
||||
];
|
||||
var parser = dashdash.createParser({options: options});
|
||||
try {
|
||||
var opts = parser.parse(argv);
|
||||
} catch (e) {
|
||||
console.error('lib/constants.js: error: %s', e.message);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (opts.help) {
|
||||
console.log([
|
||||
'usage: node .../lib/constants.js [OPTIONS] [KEY]',
|
||||
'options:',
|
||||
parser.help().trimRight()
|
||||
].join('\n'));
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
var key;
|
||||
if (opts._args.length === 1) {
|
||||
key = opts._args[0];
|
||||
} else if (opts._args.length === 0) {
|
||||
key = null;
|
||||
} else {
|
||||
console.error('lib/constants.js: error: too many args: %s',
|
||||
opts._args.join(' '));
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (key) {
|
||||
var val = module.exports[key];
|
||||
if (typeof (val) === 'string') {
|
||||
console.log(val);
|
||||
} else {
|
||||
console.log(JSON.stringify(val, null, 4));
|
||||
}
|
||||
} else {
|
||||
console.log(JSON.stringify(module.exports, null, 4));
|
||||
}
|
||||
}
|
||||
|
||||
if (require.main === module) {
|
||||
main(process.argv);
|
||||
}
|
Reference in New Issue
Block a user