UNPKG

@equinor/fusion-framework-cli

Version:

--- title: Fusion Framework CLI ---

78 lines 3.3 kB
import { existsSync, readFileSync } from 'node:fs'; import semverValid from 'semver/functions/valid.js'; import { chalk } from './utils/format.js'; import { Spinner } from './utils/spinner.js'; import { getEndpointUrl, loadPackage, isAppRegistered, requireToken, publishAppConfig, } from './utils/index.js'; import { resolveAppKey } from '../lib/app-package.js'; import { exit } from 'node:process'; import assert from 'node:assert'; export const uploadExportConfig = async (options) => { const { configFile, version: pubVersion, env, service } = options; const spinner = Spinner.Global({ prefixText: chalk.dim('config') }); const pkg = await loadPackage(); const appKey = resolveAppKey(pkg.packageJson); if (!existsSync(`${configFile}`)) { throw new Error(`Config file ${configFile} does not exist`); } const config = JSON.parse(readFileSync(`${configFile}`, 'utf8')); spinner.info('Preparing to publishing config'); /* Make sure version is valid */ const version = pubVersion === 'current' ? pkg.packageJson.version : pubVersion; if (!version || (!semverValid(version) && !['latest', 'preview'].includes(version))) { spinner.fail('🙅‍♂️', 'Can not publish config to invalid version', chalk.redBright(version), ''); 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 await getEndpointUrl('apps', env, ''); spinner.succeed('Found valid FUSION_TOKEN'); } catch (e) { const err = e; spinner.fail(chalk.bgRed(err.message)); exit(1); } try { spinner.info('Verifying that App is registered'); const state = { endpoint: '' }; try { state.endpoint = await getEndpointUrl(`apps/${appKey}`, env, service); } catch (e) { const err = e; throw new Error(`Could not get endpoint from service discovery while verifying app. service-discovery status: ${err.message}`); } const exist = await 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(`Publishing config to "${appKey}@${version}"`); const state = { endpoint: '' }; try { state.endpoint = await getEndpointUrl(`apps/${appKey}/builds/${version}/config`, env, service); } catch (e) { const err = e; throw new Error(`Could not get endpoint from service discovery while publishig config. service-discovery status: ${err.message}`); } await publishAppConfig(state.endpoint, appKey, config); spinner.succeed('✅', 'Published config to version', chalk.yellowBright(version)); } catch (e) { const err = e; spinner.fail('🙅‍♂️', chalk.bgRed(err.message)); exit(1); } }; export default uploadExportConfig; //# sourceMappingURL=upload-export-config.js.map