-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathfetch-release-assets.mjs
42 lines (34 loc) · 1.16 KB
/
fetch-release-assets.mjs
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
import { Octokit } from "@octokit/rest";
import fs from "node:fs";
import { Readable } from "stream";
import { finished } from "stream/promises";
const owner = process.env.OWNER ?? "nrfconnect";
const repo = process.env.REPO ?? "Asset-Tracker-Template";
const version = process.argv[process.argv.length - 1];
console.log(`Release version`, version);
const octokit = new Octokit({
auth: process.env.GITHUB_TOKEN,
});
console.log(`Repository: ${owner}/${repo}`);
const { data: release } = await octokit.rest.repos.getReleaseByTag({
repo,
owner,
tag: version,
});
if (release === undefined) {
console.error(`Release for ${version} not found!`);
console.debug(`Got: ${releases.map(({ name }) => name).join(", ")}!`);
process.exit(1);
}
for (const { name, browser_download_url } of release.assets) {
const res = await fetch(browser_download_url, {
headers: {
Accept: "application/octet-stream",
Authorization: `Bearer ${process.env.GITHUB_TOKEN}`,
},
});
const body = Readable.fromWeb(res.body);
const download_write_stream = fs.createWriteStream(name);
await finished(body.pipe(download_write_stream));
console.log(name, "downloaded");
}