Skip to content

Commit

Permalink
refactor: git cliff programmatic api
Browse files Browse the repository at this point in the history
  • Loading branch information
favna committed Mar 3, 2024
1 parent 8fa9fba commit d542c51
Showing 1 changed file with 17 additions and 8 deletions.
25 changes: 17 additions & 8 deletions src/commands/update-changelog.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,37 @@
import { doActionAndLog, getGitHubRepo, getGitHubToken, getGitRootDirection, resolveTagTemplate } from '#lib/utils';
import { isNullishOrEmpty } from '@sapphire/utilities';
import type { Options } from 'commander';
import { execSync } from 'node:child_process';
import { runGitCliff, type Options as GitCliffOptions } from 'git-cliff';

export function updateChangelog(options: Options, newVersion: string) {
const repositoryRootDirectory = getGitRootDirection();

resolveTagTemplate(options, newVersion);

return doActionAndLog('Updating Changelog', () => {
return doActionAndLog('Updating Changelog', async () => {
if (!options.dryRun) {
const monoRepoConfig = isNullishOrEmpty(repositoryRootDirectory)
? ''
: `-r ${repositoryRootDirectory}/ --include-path "${options.packagePath}/*"`;
let githubConfig = '';
const gitCliffOptions: GitCliffOptions = {
tag: options.tagTemplate,
prepend: './CHANGELOG.md',
unreleased: true,
config: './cliff.toml'
};

if (!isNullishOrEmpty(repositoryRootDirectory)) {
gitCliffOptions.repository = repositoryRootDirectory;
gitCliffOptions.includePath = `${options.packagePath}/*`;
}

const githubToken = getGitHubToken(options);
const githubRepo = getGitHubRepo(options);
if (!isNullishOrEmpty(githubRepo) && !isNullishOrEmpty(githubToken)) {
const resolvedGitHubRepo = githubRepo === 'auto' ? `${options.org}/${options.name}` : `${githubRepo}`;
githubConfig = `--github-repo ${resolvedGitHubRepo} --github-token ${githubToken}`;

gitCliffOptions.githubRepo = resolvedGitHubRepo;
gitCliffOptions.githubToken = githubToken;
}

execSync(`npx git-cliff --tag ${options.tagTemplate} --prepend ./CHANGELOG.md -u -c ./cliff.toml ${githubConfig} ${monoRepoConfig}`);
await runGitCliff(gitCliffOptions, { stdio: 'ignore' });
}
});
}

0 comments on commit d542c51

Please sign in to comment.