UNPKG

@equinor/fusion-framework-cli

Version:

--- title: Fusion Framework CLI ---

67 lines 2.41 kB
import nodeFs from 'node:fs'; import { writeFile } from 'node:fs/promises'; import assert from 'node:assert'; import { SemVer, parse as parseSemver } from 'semver'; import { chalk, formatPath } from './utils/format.js'; import { Spinner } from './utils/spinner.js'; import { loadAppManifest } from './utils/load-manifest.js'; import { loadPackage } from './utils/load-package.js'; import { dirname } from 'node:path'; // TODO why do we do this??? can`t backend parse semver? export const normalizeVersion = (version) => { const semverVersion = parseSemver(version); assert(semverVersion instanceof SemVer, 'expected version in AppManifest to be SemVer'); const { major, minor, patch } = semverVersion; return { major, minor, patch }; }; export const createAppManifest = async (options) => { Spinner.Global({ prefixText: chalk.dim('app manifest') }); const manifest = await createManifest(options); if (options?.outputFile) { await writeManifestToDisk(manifest, options.outputFile); } else { console.log(JSON.stringify(manifest, undefined, 2)); } return manifest; }; export const createBuildManifest = async (options) => { Spinner.Global({ prefixText: chalk.dim('build manifest') }); const { build } = await createManifest(options); if (options?.outputFile) { await writeManifestToDisk(build, options.outputFile); } else { console.log(JSON.stringify(build, undefined, 2)); } return build; }; const writeManifestToDisk = async (content, outputFile) => { const spinner = Spinner.Clone(); spinner.start(`Exporting manifest to ${formatPath(outputFile)}`); try { const dir = dirname(outputFile).trim(); if (!nodeFs.existsSync(dirname(outputFile))) { nodeFs.mkdirSync(dir, { recursive: true }); } await writeFile(outputFile, JSON.stringify(content)); spinner.succeed(); } catch (err) { spinner.fail(); throw err; } }; const createManifest = async (options) => { const pkg = await loadPackage(); const env = { command: options?.command ?? 'build', mode: process.env.NODE_ENV ?? 'development', root: pkg.root, }; const { manifest } = await loadAppManifest(env, pkg, { file: options?.configFile, }); return manifest; }; //# sourceMappingURL=create-export-manifest.js.map