(base: string, head: string)
| 58 | } |
| 59 | |
| 60 | async function diff(base: string, head: string) { |
| 61 | const list: Diff[] = [] |
| 62 | for (let page = 1; ; page++) { |
| 63 | const text = |
| 64 | await $`gh api "/repos/${repo}/compare/${base}...${head}?per_page=100&page=${page}" --jq '.commits[] | {sha: .sha, login: .author.login, message: .commit.message}'`.text() |
| 65 | const batch = text |
| 66 | .split("\n") |
| 67 | .filter(Boolean) |
| 68 | .map((line) => JSON.parse(line) as Diff) |
| 69 | if (batch.length === 0) break |
| 70 | list.push(...batch) |
| 71 | if (batch.length < 100) break |
| 72 | } |
| 73 | return list |
| 74 | } |
| 75 | |
| 76 | function section(areas: Set<string>) { |
| 77 | const priority = ["core", "tui", "app", "tauri", "sdk", "plugin", "extensions/vscode", "github"] |
no test coverage detected