Преглед изворни кода

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

Dax Raad пре 1 недеља
родитељ
комит
f390ac251d
3 измењених фајлова са 24 додато и 37 уклоњено
  1. 17 0
      packages/script/src/index.ts
  2. 4 21
      script/beta.ts
  3. 3 16
      script/changelog.ts

+ 17 - 0
packages/script/src/index.ts

@@ -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))

+ 4 - 21
script/beta.ts

@@ -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 seen = new Set<number>()
-  const prs = allPrs.filter((pr) => {
-    if (seen.has(pr.number)) return false
-    seen.add(pr.number)
-    return true
-  })
+  const stdout = await $`gh pr list --state open --label beta --json number,title,author,labels --limit 100`.text()
+  const prs: PR[] = JSON.parse(stdout)
 
-  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")

+ 3 - 16
script/changelog.ts

@@ -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)
     }