@equinor/fusion-framework-cli
Version:
--- title: Fusion Framework CLI ---
82 lines • 3.63 kB
JavaScript
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());
});
};
import { exit } from 'node:process';
import { chalk } from './utils/format.js';
import { Spinner } from './utils/spinner.js';
import { resolveAppPackage, resolveAppKey } from '../lib/app-package.js';
import { isAppRegistered, getEndpointUrl, requireToken, tagAppBundle } from './utils/index.js';
import assert from 'node:assert';
var Tags;
(function (Tags) {
Tags["preview"] = "preview";
Tags["latest"] = "latest";
})(Tags || (Tags = {}));
export const tagApplication = (options) => __awaiter(void 0, void 0, void 0, function* () {
const { tag, version, env, service } = options;
const spinner = Spinner.Global({ prefixText: chalk.dim('Tag') });
if (!Object.values(Tags).includes(tag)) {
spinner.fail('😞', `Tag must match (${Tags.latest} | ${Tags.preview})`);
exit(1);
}
/** make sure user has a valid token */
try {
spinner.info('Validating FUSION_TOKEN');
// make sure token exist
requireToken();
// call service discovery with token, will throw error if failed
yield getEndpointUrl('apps', env, '');
spinner.succeed('Found valid FUSION_TOKEN');
}
catch (e) {
const err = e;
spinner.fail(chalk.bgRed(err.message));
exit(1);
}
const pkg = yield resolveAppPackage();
const appKey = resolveAppKey(pkg.packageJson);
try {
spinner.info('Verifying that App is registered');
const state = { endpoint: '' };
try {
state.endpoint = yield getEndpointUrl(`apps/${appKey}`, env, service);
}
catch (e) {
const err = e;
throw new Error(`Could not get endpoint from service discovery while verifying app is registered. service-discovery status: ${err.message}`);
}
const exist = yield isAppRegistered(state.endpoint);
assert(exist, `${appKey} is not registered`);
spinner.succeed(`${appKey} is registered`);
}
catch (e) {
const err = e;
spinner.fail('🙅♂️', chalk.bgRed(err.message));
throw err;
}
try {
spinner.info(`Tagging "${appKey}@${version}" with: "${tag}"`);
const state = { endpoint: '' };
try {
state.endpoint = yield getEndpointUrl(`apps/${appKey}/tags/${tag}`, env, service);
}
catch (e) {
const err = e;
throw new Error(`Could not get endpoint from service discovery while tagging app. service-discovery status: ${err.message}`);
}
const tagged = yield tagAppBundle(state.endpoint, version);
spinner.succeed('✅', `Tagged app: "${chalk.greenBright(appKey)}"`, `version: "${chalk.greenBright(tagged.version)}"`, `with tag: "${chalk.greenBright(tagged.tagName)}"`);
}
catch (e) {
const err = e;
spinner.fail('🙅♂️', chalk.bgRed(err.message));
exit(1);
}
});
//# sourceMappingURL=tag-application.js.map