ci: centralize team list in @opencode-ai/script package and use beta label filter

This commit is contained in:
Dax Raad
2026-02-01 20:17:15 -05:00
parent 7837bbc639
commit f390ac251d
3 changed files with 24 additions and 37 deletions

View File

@@ -46,6 +46,20 @@ const VERSION = await (async () => {
return `${major}.${minor}.${patch + 1}`
})()
const team = [
"actions-user",
"opencode",
"rekram1-node",
"thdxr",
"kommander",
"jayair",
"fwang",
"adamdotdevin",
"iamdavidhill",
"opencode-agent[bot]",
"R44VC0RP",
]
export const Script = {
get channel() {
return CHANNEL
@@ -59,5 +73,8 @@ export const Script = {
get release() {
return env.OPENCODE_RELEASE
},
get team() {
return team
},
}
console.log(`opencode script`, JSON.stringify(Script, null, 2))

View File

@@ -1,7 +1,6 @@
#!/usr/bin/env bun
import { $ } from "bun"
import { Script } from "@opencode-ai/script"
interface PR {
number: number
@@ -32,28 +31,12 @@ Please resolve this issue to include this PR in the next beta release.`
}
async function main() {
console.log("Fetching open PRs with beta label from team members...")
console.log("Fetching open PRs with beta label...")
const allPrs: PR[] = []
for (const member of Script.team) {
try {
const stdout =
await $`gh pr list --state open --author ${member} --label beta --json number,title,author,labels --limit 100`.text()
const memberPrs: PR[] = JSON.parse(stdout)
allPrs.push(...memberPrs)
} catch {
// Skip member on error
}
}
const stdout = await $`gh pr list --state open --label beta --json number,title,author,labels --limit 100`.text()
const prs: PR[] = JSON.parse(stdout)
const seen = new Set<number>()
const prs = allPrs.filter((pr) => {
if (seen.has(pr.number)) return false
seen.add(pr.number)
return true
})
console.log(`Found ${prs.length} open PRs with beta label from team members`)
console.log(`Found ${prs.length} open PRs with beta label`)
if (prs.length === 0) {
console.log("No team PRs to merge")

View File

@@ -3,20 +3,7 @@
import { $ } from "bun"
import { createOpencode } from "@opencode-ai/sdk/v2"
import { parseArgs } from "util"
export const team = [
"actions-user",
"opencode",
"rekram1-node",
"thdxr",
"kommander",
"jayair",
"fwang",
"adamdotdevin",
"iamdavidhill",
"opencode-agent[bot]",
"R44VC0RP",
]
import { Script } from "@opencode-ai/script"
type Release = {
tag_name: string
@@ -191,7 +178,7 @@ export async function generateChangelog(commits: Commit[], opencode: Awaited<Ret
for (let i = 0; i < commits.length; i++) {
const commit = commits[i]!
const section = getSection(commit.areas)
const attribution = commit.author && !team.includes(commit.author) ? ` (@${commit.author})` : ""
const attribution = commit.author && !Script.team.includes(commit.author) ? ` (@${commit.author})` : ""
const entry = `- ${summaries[i]}${attribution}`
if (!grouped.has(section)) grouped.set(section, [])
@@ -222,7 +209,7 @@ export async function getContributors(from: string, to: string) {
const title = message.split("\n")[0] ?? ""
if (title.match(/^(ignore:|test:|chore:|ci:|release:)/i)) continue
if (login && !team.includes(login)) {
if (login && !Script.team.includes(login)) {
if (!contributors.has(login)) contributors.set(login, new Set())
contributors.get(login)!.add(title)
}