Skip to content

Commit ee9397c

Browse files
committed
feat: initial version
1 parent f65d036 commit ee9397c

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

script.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+
}

0 commit comments

Comments
 (0)