UNPKG

conventional-changelog

Version:
118 lines 11.3 kB
#!/usr/bin/env node import { createReadStream, createWriteStream } from 'fs'; import { readOptions, option, flag, alias, autocase } from 'argue-cli'; import { parseOptions, parseCommitsOptions, parseTagsOptions } from './options.js'; import { loadDataFile, isFileExists } from './utils.js'; export function readFlags() { return readOptions(option(alias('infile', 'i'), String), option(alias('outfile', 'o'), String), flag('stdout'), option(alias('preset', 'p'), String), option(alias('pkg', 'k'), String), flag(alias('append', 'a')), option(autocase(alias('releaseCount', 'r')), Number), flag(autocase('skipUnstable')), flag(autocase(alias('outputUnreleased', 'u'))), flag(alias('verbose', 'v')), option(alias('config', 'n'), String), option(alias('context', 'c'), String), flag(autocase(alias('firstRelease', 'f'))), option(autocase(alias('lernaPackage', 'l')), String), option(autocase(alias('tagPrefix', 't')), String), option(autocase('commitPath'), String), option('from', String), option('to', String), flag('help'), flag('version')); } export async function runProgram(generator, flags) { let { infile = 'CHANGELOG.md', outfile, stdout, verbose, pkg, preset, config, context } = flags; generator.readPackage(pkg); if (preset) { generator.loadPreset(preset); } if (config) { const configOptions = await loadDataFile(config); if (configOptions.tags) { generator.tags(configOptions.tags); } if (configOptions.commits || configOptions.parser) { generator.commits(configOptions.commits || {}, configOptions.parser); } if (configOptions.writer) { generator.writer(configOptions.writer); } } if (context) { const writerContext = await loadDataFile(context); if (writerContext) { generator.context(writerContext); } } const options = parseOptions(flags); if (options) { generator.options(options); } const tagsOptions = parseTagsOptions(flags); if (tagsOptions) { generator.tags(tagsOptions); } const commitsOptions = parseCommitsOptions(flags); if (commitsOptions) { generator.commits(commitsOptions); } if (verbose) { generator.options({ debug(namespace, payload) { console.info(`[${namespace}]:`, payload); }, warn(namespace, payload) { console.warn(`[${namespace}]:`, payload); } }); } outfile ||= infile; const sameFile = !stdout && infile === outfile; const changelog = generator.write(); const streams = []; if (infile && options?.releaseCount !== 0) { const isInfileExists = await isFileExists(infile); const input = isInfileExists ? createReadStream(infile) : []; if (!isInfileExists && verbose) { console.warn(`"${infile}" does not exist.`); } if (sameFile) { if (options?.append) { streams.push(changelog); } else { const buffer = []; for await (const chunk of changelog) { buffer.push(chunk); } let newline = true; for await (const chunk of input) { if (newline) { newline = false; if (!String(chunk).startsWith('\n')) { buffer.push('\n'); } } buffer.push(chunk); } streams.push(buffer); } } else if (options?.append) { streams.push(input, changelog); } else { streams.push(changelog, input); } } else { streams.push(changelog); } const output = (outfile && !stdout ? createWriteStream(outfile, { flags: sameFile && options?.append ? 'a' : 'w' }) : process.stdout); for (let i = 0, stream, newline; i < streams.length; i++) { stream = streams[i]; newline = i > 0; for await (const chunk of stream) { if (newline) { newline = false; if (!String(chunk).startsWith('\n')) { output.write('\n'); } } output.write(chunk); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2xCLE1BQU0sSUFBSSxDQUFBO0FBQ1gsT0FBTyxFQUNMLFdBQVcsRUFDWCxNQUFNLEVBQ04sSUFBSSxFQUNKLEtBQUssRUFDTCxRQUFRLEVBQ1QsTUFBTSxXQUFXLENBQUE7QUFLbEIsT0FBTyxFQUNMLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2pCLE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxFQUNiLE1BQU0sWUFBWSxDQUFBO0FBRW5CLE1BQU0sVUFBVSxTQUFTO0lBQ3ZCLE9BQU8sV0FBVyxDQUNoQixNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsRUFDcEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDZCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsRUFDcEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMs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