File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed
Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * Find releases in repositories. Pass an optional `since` option (`YYYY-MM-dd`) to ignore
3+ * releases prior a set date
4+ *
5+ * @param {import('@octoherd/octokit').Octokit } octokit
6+ * @param {import('@octokit/openapi-types').components["schemas"]["repository"] } repository
7+ * @param { {since?: string} } options Custom user options passed to the CLI
8+ */
9+ export async function script ( octokit , repository , options ) {
10+ const since = options . since || "" ;
11+
12+ const owner = repository . owner . login ;
13+ const repo = repository . name ;
14+
15+ // https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#list-releases
16+ const allReleases = await octokit . paginate (
17+ "GET /repos/{owner}/{repo}/releases" ,
18+ {
19+ owner,
20+ repo,
21+ per_page : 100 ,
22+ }
23+ ) ;
24+
25+ const releases = allReleases . filter ( ( release ) => {
26+ return since ? release . created_at > String ( since ) : true ;
27+ } ) ;
28+
29+ octokit . log . info (
30+ {
31+ releases : releases . map ( ( release ) => {
32+ const type = / \. 0 \. 0 $ / . test ( release . tag_name )
33+ ? "breaking"
34+ : / \. 0 $ / . test ( release . tag_name )
35+ ? "feature"
36+ : "fix" ;
37+
38+ return {
39+ created_at : release . created_at ,
40+ version : release . tag_name ,
41+ notes : release . body ,
42+ type,
43+ } ;
44+ } ) ,
45+ repository : [ owner , repo ] . join ( "/" ) ,
46+ } ,
47+ `${ releases . length } releases found in ${ repository . html_url } ${
48+ since ? ` since ${ since } ` : ""
49+ } `
50+ ) ;
51+ }
You can’t perform that action at this time.
0 commit comments