zcatalyst-cli
Version:
Command Line Tool for CATALYST
60 lines (59 loc) • 2.96 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ansi_colors_1 = require("ansi-colors");
const config_store_js_1 = __importDefault(require("../util_modules/config-store.js"));
const dc_js_1 = require("../util_modules/dc.js");
const index_js_1 = __importDefault(require("../error/index.js"));
const credential_js_1 = __importDefault(require("../authentication/credential.js"));
const runtime_store_js_1 = __importDefault(require("../runtime-store.js"));
const scopes_js_1 = __importDefault(require("../authentication/constants/scopes.js"));
const env_js_1 = require("../util_modules/env.js");
const index_1 = require("../util_modules/logger/index");
const option_js_1 = require("../util_modules/option.js");
exports.default = (inScopes = []) => {
const activeDC = (0, dc_js_1.getActiveDC)();
const tokenOpts = [
{
option: '--token',
token: (0, option_js_1.getGlobalOptionValue)('token'),
temp: true
},
{
option: 'CATALYST_TOKEN env',
token: (0, env_js_1.getEnvVariable)('CATALYST_TOKEN', (0, env_js_1.getEnvVariable)('ZC_TOKEN')),
temp: true
},
{
option: 'signed-in user',
token: config_store_js_1.default.get(`${activeDC}.credential`),
temp: false
}
];
const tokenObj = tokenOpts.find((opts) => typeof opts.token === 'string');
if (tokenObj === undefined) {
throw new index_js_1.default('Command requires authentication', {
exit: 0,
errorId: 'AUTH-1',
arg: [(0, ansi_colors_1.bold)('catalyst login'), (0, ansi_colors_1.bold)('--token')]
});
}
(0, index_1.debug)(`> authorizing via ${tokenObj.option} option`);
const existingScopes = config_store_js_1.default.get(`${activeDC}.scopes`, []);
const requiredScopes = [scopes_js_1.default.projects, ...inScopes];
(0, index_1.debug)('> command requires scopes: ' + JSON.stringify(requiredScopes));
const missingScopes = requiredScopes.filter((scope) => !existingScopes.includes(scope));
if (!tokenObj.temp && !env_js_1.isCI && missingScopes.length > 0) {
missingScopes.length > 0 && (0, index_1.debug)('> missing scopes: ', JSON.stringify(missingScopes));
throw new index_js_1.default('Re-login required due to missing scopes!!', {
exit: 0,
errorId: 'AUTH-2',
arg: [(0, ansi_colors_1.bold)('catalyst login --force')]
});
}
runtime_store_js_1.default.set('context.auth_scopes', requiredScopes);
runtime_store_js_1.default.set('user', config_store_js_1.default.get(`${activeDC}.user`, null));
runtime_store_js_1.default.set('credential', credential_js_1.default.initToken(tokenObj.token, tokenObj.temp));
};