zcatalyst-cli
Version:
Command Line Tool for CATALYST
175 lines (174 loc) • 8.31 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.logout = exports.login = exports.revoke = exports.list = exports.create = void 0;
const ansi_colors_1 = __importStar(require("ansi-colors"));
const moment_1 = __importDefault(require("moment"));
const config_store_1 = __importDefault(require("../config-store"));
const dc_1 = require("../dc");
const error_1 = __importDefault(require("../error"));
const credential_1 = __importDefault(require("../internal/credential"));
const prompt_1 = __importDefault(require("../prompt"));
const runtime_store_1 = __importDefault(require("../runtime-store"));
const constants_1 = require("../util_modules/constants");
const js_1 = require("../util_modules/js");
const logger_1 = require("../util_modules/logger");
const option_1 = require("../util_modules/option");
const login_1 = __importDefault(require("./login"));
const revoke_1 = __importDefault(require("./revoke"));
function create() {
return __awaiter(this, void 0, void 0, function* () {
if ((0, option_1.getOptionValue)('current', false)) {
return runtime_store_1.default.get('credential.cliToken');
}
const result = yield new login_1.default(false, false).init();
credential_1.default.init(result.token).persistMinimal('tokens.' + js_1.JS.randomString(6));
return result.token.token;
});
}
exports.create = create;
function list() {
const tokens = config_store_1.default.get(`${(0, dc_1.getActiveDC)()}.tokens`, null);
if (tokens === null || Object.keys(tokens).length === 0) {
throw new error_1.default('No tokens found', {
exit: 0,
errorId: 'IDX-1',
arg: [(0, ansi_colors_1.bold)('catalyst token:generate')]
});
}
const tableData = [];
for (const tokenId in tokens) {
if (tokens[tokenId]) {
const tokenValue = tokens[tokenId];
const cred = credential_1.default.init(tokenValue);
tableData.push([
tokenId,
cred.cliToken,
cred.createdTime ? (0, moment_1.default)(cred.createdTime).format('YYYY-MM-DD HH:mm:ss') : 'N/A'
]);
}
}
return tableData;
}
exports.list = list;
function revoke(id) {
return __awaiter(this, void 0, void 0, function* () {
const tokens = config_store_1.default.get(`${(0, dc_1.getActiveDC)()}.tokens`, {});
const tokenKey = Object.keys(tokens).find((key) => key === id);
if (tokenKey === undefined) {
const allTokenKeys = Object.keys(tokens);
throw new error_1.default('Unable to retrive token', {
exit: 1,
errorId: 'IDX-2',
arg: [
id,
allTokenKeys.length > 0 ? '* ' + allTokenKeys.join('\n* ') : 'None',
(0, ansi_colors_1.bold)('catalyst token:list')
]
});
}
const credential = credential_1.default.init(tokens[tokenKey]);
return new revoke_1.default(credential, 'tokens.' + id).init();
});
}
exports.revoke = revoke;
function login() {
return __awaiter(this, void 0, void 0, function* () {
let activeDC = (0, dc_1.getActiveDC)();
const user = config_store_1.default.get(`${activeDC}.user`);
const token = config_store_1.default.get(`${activeDC}.credential`);
if (user && token && !(0, option_1.getOptionValue)('force', false)) {
(0, logger_1.message)('No need to login. Already logged as: ' + ansi_colors_1.default.cyan.bold(user.Email));
(0, dc_1.updateActiveDC)(activeDC);
return;
}
const ans = yield prompt_1.default.ask(prompt_1.default.question('collectUsage', 'Allow Catalyst to collect CLI error reporting information?', {
type: 'confirm',
defaultAns: true
}), prompt_1.default.question('dc', 'Select the datacenter to which you have access: ', {
type: 'list',
choices: Object.keys(constants_1.DC_TYPE).map((dc) => {
const dcObj = constants_1.DC_TYPE[dc];
return prompt_1.default.choice(`${dc.toUpperCase()} - ${dcObj.loc}`, {
value: dcObj.value
});
}),
when: () => !(0, option_1.getGlobalOptionValue)('dc') &&
!!Object.values(constants_1.DC_TYPE).find((dc) => dc.value === activeDC)
}));
if (ans.dc !== undefined && ans.dc !== activeDC) {
(0, dc_1.updateActiveDC)(ans.dc);
activeDC = ans.dc;
}
const localhost = (0, option_1.getOptionValue)('localhost', true);
const result = yield new login_1.default(localhost).init();
activeDC = result.dc;
config_store_1.default.set('usage', ans.collectUsage);
config_store_1.default.set(`${activeDC}.user`, result.user);
config_store_1.default.set(`${activeDC}.scopes`, result.scopes);
credential_1.default.init(result.token).persistMinimal('credential');
(0, logger_1.success)('Success! Logged in as : ' + ansi_colors_1.default.cyan.bold(result.user.Email));
});
}
exports.login = login;
function logout() {
return __awaiter(this, void 0, void 0, function* () {
const activeDC = (0, dc_1.getActiveDC)();
const tokenObj = config_store_1.default.get(`${activeDC}.credential`, null);
if (tokenObj === null) {
throw new error_1.default('Not logged in', {
exit: 0,
errorId: 'IDX-3',
arg: [(0, ansi_colors_1.bold)('catalyst login')]
});
}
const user = config_store_1.default.get(`${activeDC}.user`, null);
const ans = user === null
? { consent: true }
: yield prompt_1.default.ask(prompt_1.default.question('consent', 'You are about to logout ' +
ansi_colors_1.default.cyan.bold(user.Email) +
' , are you sure?', { type: 'confirm', defaultAns: true }));
if (!ans.consent) {
(0, logger_1.message)('Aborting logout process...');
return;
}
const credential = credential_1.default.init(tokenObj, false);
yield new revoke_1.default(credential, 'credential').init();
(0, logger_1.success)('SuccessFully Logged out, we hope to see you soon. (^-^)ノ');
});
}
exports.logout = logout;