Dax Raad 8 miesięcy temu
rodzic
commit
b5c6ddcd04

+ 4 - 6
.github/workflows/release.yml

@@ -28,13 +28,11 @@ jobs:
           cache: true
           cache-dependency-path: go.sum
 
-      - run: go mod download
+      - uses: oven-sh/setup-bun@v2
+        bun-version: 1.2.16
 
-      - uses: goreleaser/goreleaser-action@v6
-        with:
-          distribution: goreleaser
-          version: latest
-          args: release --clean
+      - run: ./script/publish.ts
+        dir: packages/opencode
         env:
           GITHUB_TOKEN: ${{ secrets.SST_GITHUB_TOKEN }}
           AUR_KEY: ${{ secrets.AUR_KEY }}

+ 23 - 0
packages/opencode/script/PKGBUILD.template

@@ -0,0 +1,23 @@
+# Maintainer: dax
+# Maintainer: adam
+
+pkgname='opencode-bin'
+pkgver={{VERSION}}
+pkgrel=1
+pkgdesc='The AI coding agent built for the terminal.'
+url='https://github.com/sst/opencode'
+arch=('aarch64' 'x86_64')
+license=('MIT')
+provides=('opencode')
+conflicts=('opencode')
+depends=('fzf' 'ripgrep')
+
+source_aarch64=("${pkgname}_${pkgver}_aarch64.zip::{{ARM64_URL}}")
+sha256sums_aarch64=('{{ARM64_SHA}}')
+
+source_x86_64=("${pkgname}_${pkgver}_x86_64.zip::{{X64_URL}}")
+sha256sums_x86_64=('{{X64_SHA}}')
+
+package() {
+  install -Dm755 ./opencode "${pkgdir}/usr/bin/opencode"
+}

+ 42 - 0
packages/opencode/script/publish.ts

@@ -86,6 +86,7 @@ if (!dry)
   await $`cd ./dist/${pkg.name} && npm publish --access public --tag ${npmTag}`
 
 if (!snapshot) {
+  // Github Release
   for (const key of Object.keys(optionalDependencies)) {
     await $`cd dist/${key}/bin && zip -r ../../${key}.zip *`
   }
@@ -116,4 +117,45 @@ if (!snapshot) {
 
   if (!dry)
     await $`gh release create v${version} --title "v${version}" --notes ${notes} ./dist/*.zip`
+
+  // AUR package
+  const pkgbuildTemplate = await Bun.file("./script/PKGBUILD.template").text()
+  const pkgbuild = pkgbuildTemplate
+    .replace("{{VERSION}}", version.split("-")[0])
+    .replace(
+      "{{ARM64_URL}}",
+      `https://github.com/sst/opencode/releases/download/v${version}/opencode-linux-arm64.zip`,
+    )
+    .replace(
+      "{{ARM64_SHA}}",
+      await $`sha256sum ./dist/opencode-linux-arm64.zip | cut -d' ' -f1`
+        .text()
+        .then((x) => x.trim()),
+    )
+    .replace(
+      "{{X64_URL}}",
+      `https://github.com/sst/opencode/releases/download/v${version}/opencode-linux-x64.zip`,
+    )
+    .replace(
+      "{{X64_SHA}}",
+      await $`sha256sum ./dist/opencode-linux-x64.zip | cut -d' ' -f1`
+        .text()
+        .then((x) => x.trim()),
+    )
+
+  await $`rm -rf ./dist/aur-opencode-bin`
+  const gitEnv: Record<string, string> = process.env["AUR_KEY"]
+    ? { GIT_SSH_COMMAND: `ssh -i ${process.env["AUR_KEY"]}` }
+    : {}
+
+  await $`git clone ssh://[email protected]/opencode-bin.git ./dist/aur-opencode-bin`.env(
+    gitEnv,
+  )
+  await Bun.file("./dist/aur-opencode-bin/PKGBUILD").write(pkgbuild)
+  await $`cd ./dist/aur-opencode-bin && makepkg --printsrcinfo > .SRCINFO`
+  await $`cd ./dist/aur-opencode-bin && git add PKGBUILD .SRCINFO`.env(gitEnv)
+  await $`cd ./dist/aur-opencode-bin && git commit -m "Update to v${version}"`.env(
+    gitEnv,
+  )
+  if (!dry) await $`cd ./dist/aur-opencode-bin && git push`.env(gitEnv)
 }