forked from cerner/terra-framework
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dangerfile.js
31 lines (23 loc) · 1.11 KB
/
dangerfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// eslint-disable-next-line import/no-extraneous-dependencies
import { danger, fail } from 'danger';
const CHANGELOG_PATTERN = /^packages\/terra-([a-z-])*\/CHANGELOG\.md/i;
const changedFiles = danger.git.created_files.concat(danger.git.modified_files);
const changedChangelogs = new Set();
const changedPackages = new Set();
changedFiles.forEach((file) => {
// file isn't in a package so it has no changelog, skip further processing
if (file.substring(0, 9) !== 'packages/') {
return;
}
const packageName = file.split('packages/')[1].split('/')[0];
if (CHANGELOG_PATTERN.test(file)) {
changedChangelogs.add(packageName);
} else { // file is in a package and was changed - we need a changelog
changedPackages.add(packageName);
}
});
const missingChangelogs = [...changedPackages].filter(packageName => !changedChangelogs.has(packageName));
// Fail if there are package changes without a CHANGELOG update
if (missingChangelogs.length > 0) {
fail(`Please include a CHANGELOG entry for each changed package this PR. Looks like a CHANGELOG is missing for: \n\n - ${missingChangelogs.join('\n - ')}`);
}