Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return paginate(pullRequests.getCommits(pull), async ({ data }) => {
// empty summary
const report = { valid: true, commits: [] };
const { rules } = await load(config);
// Keep counters
let errorsCount = 0;
let warnsCount = 0;
// Iterates over all commits
for (const d of data) {
const { valid, errors, warnings } = await lint(
d.commit.message,
rules
);
if (!valid) {
report.valid = false;
}
if (errors.length > 0 || warnings.length > 0) {
// Use provided commitlint.config or fallback to our local preset
const baseConfig = lintOpts.clintConfig || defaultClintConfig;
baseConfig.extends = baseConfig.extends || [];
let mergedConfig;
if (czConfigContent) {
// Hack because of some weird expectation inside of commitlint-config-cz/lib/config').get;
if (!baseConfig.rules['scope-enum']) baseConfig.rules['scope-enum'] = [0, 'never', 'bullshit'];
if (!baseConfig.rules['type-enum']) baseConfig.rules['type-enum'] = [0, 'never', 'bullshit'];
mergedConfig = mergeCZWithBaseConfig(czConfigContent, baseConfig);
} else {
mergedConfig = baseConfig;
}
const opts = await commitlint.load(mergedConfig);
const reportObj = await commitlint.lint(prTitle, opts.rules);
const report = await commitlint.format(reportObj, {color: false});
return {reportObj, report};
}
const run = async () => {
const head = await getPullRequestHead()
console.log(blue('👮 Calling Git Police...'))
await reportStatus('pending', head.sha, 'Checking commits...')
const commits = await getCommits()
const { rules } = await load(path.resolve('commitlint.config.js'))
const lintResultList = await Promise.all(
commits.map(({ commit }) => lint(commit.message, rules))
)
const isConventionalCommitGuidelineRespected = lintResultList.every(result => result.valid)
const isAnyFixupCommit = commits.some(({ commit }) => commit.message.startsWith('fixup!'))
if (
isConventionalCommitGuidelineRespected &&
!isAnyFixupCommit
) {
console.log(green(`💯 Good to go!`))
await reportStatus('success', head.sha, '✔ Good to go!')
.catch(_handleUnexpectedError)