UNPKG

@favware/cliff-jumper

Version:

A small CLI tool to create a semantic release and git-cliff powered Changelog

70 lines 3.15 kB
import { cliffJumperRcJsonPath, cliffJumperRcPath, cliffJumperRcYamlPath, cliffJumperRcYmlPath } from '#lib/constants'; import { fileExists } from '#lib/file-exists'; import { logVerboseError } from '#lib/logger'; import { readJson, readYaml } from '#lib/utils'; /** * Parses a YAML or JSON options file and merges that with CLI provided options * @param cliOptions The base CLI options to merge with the options found in a YAML or JSON file, if any * @returns The YAML or JSON file provided options with anything passed through the CLI overriding it. */ export async function parseOptionsFile(cliOptions) { const cliffJumperRcExists = await fileExists(cliffJumperRcPath); const cliffJumperRcJsonExists = await fileExists(cliffJumperRcJsonPath); const cliffJumperRcYmlExists = await fileExists(cliffJumperRcYmlPath); const cliffJumperRcYamlExists = await fileExists(cliffJumperRcYamlPath); let options = cliOptions; if (cliffJumperRcYamlExists || cliffJumperRcYmlExists) { try { const fileOptions = await readYaml(cliffJumperRcYamlExists ? cliffJumperRcYamlPath : cliffJumperRcYmlPath); options = { ...fileOptions, ...options, monoRepo: fileOptions.monoRepo ?? options.monoRepo ?? (fileOptions.org || options.org), gitHostVariant: fileOptions.gitHostVariant ?? options.gitHostVariant ?? 'github' }; } catch (err) { const typedError = err; logVerboseError({ text: ['Failed to read yaml config file'], verbose: options.verbose, verboseText: [ 'Attempted to read options file:', cliffJumperRcYamlExists ? cliffJumperRcYamlPath : cliffJumperRcYmlPath, '', 'Full error: ', typedError.stack ?? typedError.message ], exitAfterLog: true }); } } else if (cliffJumperRcExists || cliffJumperRcJsonExists) { try { const fileOptions = await readJson(cliffJumperRcExists ? cliffJumperRcPath : cliffJumperRcJsonPath); options = { ...fileOptions, ...options, monoRepo: fileOptions.monoRepo ?? options.monoRepo ?? (fileOptions.org || options.org), gitHostVariant: fileOptions.gitHostVariant ?? options.gitHostVariant ?? 'github' }; } catch (err) { const typedError = err; logVerboseError({ text: ['Failed to read json config file'], verbose: options.verbose, verboseText: [ 'Attempted to read options file:', cliffJumperRcExists ? cliffJumperRcPath : cliffJumperRcJsonPath, '', 'Full error: ', typedError.stack ?? typedError.message ], exitAfterLog: true }); } } return options; } //# sourceMappingURL=options-parser.js.map