43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
|
#! /usr/bin/env deno run --allow-net --allow-env
|
||
|
|
||
|
type Issue = {
|
||
|
id: number;
|
||
|
url: string;
|
||
|
title: string;
|
||
|
body: string;
|
||
|
labels: {
|
||
|
name: string;
|
||
|
}[]
|
||
|
}
|
||
|
/**
|
||
|
* get issue from github
|
||
|
* @param repo repository name with owner (e.g. denoland/deno)
|
||
|
* @param token your github token
|
||
|
* @returns up to 100 issue objects
|
||
|
* @example
|
||
|
* ```ts
|
||
|
* const issues = await getIssues('denoland/deno', 'your-token')
|
||
|
* console.log(issues);
|
||
|
* ```
|
||
|
*/
|
||
|
async function getIssues(repo: string, token: string): Promise<Issue[]> {
|
||
|
const res = await fetch(`https://api.github.com/repos/${repo}/issues?per_page=100`, {
|
||
|
headers: {
|
||
|
Accept: 'application/vnd.github.v3+json',
|
||
|
Authorization: `Token ${token}`
|
||
|
}
|
||
|
});
|
||
|
return await res.json();
|
||
|
}
|
||
|
|
||
|
|
||
|
if (import.meta.main) {
|
||
|
const arg = Deno.args.length > 0 ? Deno.args[0] : undefined;
|
||
|
const token = arg ?? Deno.env.get("GITHUB_TOKEN");
|
||
|
if(!token) {
|
||
|
console.error("GITHUB_TOKEN is not set");
|
||
|
Deno.exit(1);
|
||
|
}
|
||
|
const issues = await getIssues("vi117/scrap-yard", token);
|
||
|
console.log(issues.map(i => `# ${i.title}\n${i.body}`).join("\n\n"));
|
||
|
}
|