forked from adamlaska/browser-compat-data
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrelease-pulls.js
More file actions
85 lines (74 loc) · 1.89 KB
/
release-pulls.js
File metadata and controls
85 lines (74 loc) · 1.89 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
const { getRefDate, releaseYargsBuilder } = require('./release-utils');
const pullsBaseURL = new URL(
'https://github.com/mdn/browser-compat-data/pulls',
);
const releaseNotesLabel = 'label:"needs-release-note :newspaper:"';
const { argv } = require('yargs').command(
'$0 [start-version-tag [end-version-tag]]',
'Get a link to PRs included between two tags (or other commits)',
yargs => {
releaseYargsBuilder(yargs);
yargs.option('q', {
alias: 'quiet',
describe: 'Print the URL only',
type: 'boolean',
});
yargs.option('labeled', {
describe: 'Filter to needs-release-note labeled PRs only',
type: 'boolean',
});
yargs.option('query-only', {
describe: 'Print the query only (such as for piping to `gh`)',
type: 'boolean',
});
yargs.example(
'$0 --quiet --labeled --query-only',
'Get the query for piping to `gh`',
);
},
);
function queryToURL(query) {
const searchUrl = new URL(pullsBaseURL);
searchUrl.search = `q=${query}`;
return searchUrl.href;
}
function buildQuery(endRef, startRef, urlSafe) {
let merged;
if (!['HEAD', 'main'].includes(endRef)) {
merged = `merged:${getRefDate(startRef, urlSafe)}..${getRefDate(
endRef,
true,
)}`;
} else {
merged = `merged:>=${getRefDate(startRef, urlSafe)}`;
}
return `is:pr ${merged}`;
}
function appendLabel(query) {
return `${query} ${releaseNotesLabel}`;
}
function main() {
const {
startVersionTag: start,
endVersionTag: end,
quiet,
labeled,
queryOnly,
} = argv;
let query = buildQuery(end, start, !queryOnly);
if (labeled) {
query = appendLabel(query);
}
if (!quiet) {
console.log(
`From ${start} (${getRefDate(start)}) to ${end} (${getRefDate(end)}):`,
);
console.log();
}
if (queryOnly) {
console.log(query);
} else {
console.log(queryToURL(query));
}
}
main();