@favware/cliff-jumper
Version:
A small CLI tool to create a semantic release and git-cliff powered Changelog
48 lines • 2.33 kB
JavaScript
import { doActionAndLog, getGitRepo, getGitRootDirection, getGitToken, getSHA1HashesArray, resolveTagTemplate } from '#lib/utils';
import { isNullishOrEmpty } from '@sapphire/utilities';
import { runGitCliff } from 'git-cliff';
export async function updateChangelog(options, newVersion) {
const repositoryRootDirectory = await getGitRootDirection();
return doActionAndLog('Updating Changelog', async () => {
const gitCliffOptions = {
tag: resolveTagTemplate(options, newVersion),
prepend: options.changelogPrependFile ?? './CHANGELOG.md',
unreleased: true,
config: './cliff.toml',
output: '-',
skipCommit: Array.isArray(options.skipCommit) ? getSHA1HashesArray(options.skipCommit) : undefined
};
if (!isNullishOrEmpty(repositoryRootDirectory)) {
gitCliffOptions.repository = repositoryRootDirectory;
gitCliffOptions.includePath = `${options.packagePath}/*`;
}
const gitToken = getGitToken(options);
const gitRepo = getGitRepo(options);
const { gitHostVariant } = options;
if (!isNullishOrEmpty(gitRepo) && !isNullishOrEmpty(gitToken)) {
const resolvedGitRepo = gitRepo === 'auto' ? `${options.org}/${options.name}` : `${gitRepo}`;
if (gitHostVariant === 'github') {
gitCliffOptions.githubRepo = resolvedGitRepo;
gitCliffOptions.githubToken = gitToken;
}
else if (gitHostVariant === 'gitea') {
gitCliffOptions.giteaRepo = resolvedGitRepo;
gitCliffOptions.giteaToken = gitToken;
}
else if (gitHostVariant === 'gitlab') {
gitCliffOptions.gitlabRepo = resolvedGitRepo;
gitCliffOptions.gitlabToken = gitToken;
}
else if (gitHostVariant === 'bitbucket') {
gitCliffOptions.bitbucketRepo = resolvedGitRepo;
gitCliffOptions.bitbucketToken = gitToken;
}
}
if (!options.dryRun) {
const result = await runGitCliff(gitCliffOptions, { stdio: options.githubRelease ? 'pipe' : 'ignore' });
return result.stdout;
}
return undefined;
});
}
//# sourceMappingURL=update-changelog.js.map