Răsfoiți Sursa

wip: github actions

Frank 7 luni în urmă
părinte
comite
933d50e25a

+ 5 - 5
.github/workflows/publish-github-action.yml

@@ -2,6 +2,9 @@ name: publish-github-action
 
 on:
   workflow_dispatch:
+  push:
+    tags:
+      - "github-v*.*.*"
 
 concurrency: ${{ github.workflow }}-${{ github.ref }}
 
@@ -18,12 +21,9 @@ jobs:
 
       - run: git fetch --force --tags
 
-      - uses: oven-sh/setup-bun@v2
-        with:
-          bun-version: 1.2.17
-
       - name: Publish
         run: |
           git config --global user.email "[email protected]"
           git config --global user.name "opencode"
-          ./scripts/publish-github-action.ts
+          ./scripts/publish
+        working-directory: ./sdks/github

+ 17 - 31
packages/opencode/src/cli/cmd/install-github.ts

@@ -84,40 +84,22 @@ export const InstallGithubCommand = cmd({
         let provider = await prompts.select({
           message: "Select provider",
           maxItems: 8,
-          options: [
-            ...pipe(
-              providers,
-              values(),
-              sortBy(
-                (x) => priority[x.id] ?? 99,
-                (x) => x.name ?? x.id,
-              ),
-              map((x) => ({
-                label: x.name,
-                value: x.id,
-                hint: priority[x.id] === 0 ? "recommended" : undefined,
-              })),
+          options: pipe(
+            providers,
+            values(),
+            sortBy(
+              (x) => priority[x.id] ?? 99,
+              (x) => x.name ?? x.id,
             ),
-            {
-              value: "other",
-              label: "Other",
-            },
-          ],
+            map((x) => ({
+              label: x.name,
+              value: x.id,
+              hint: priority[x.id] === 0 ? "recommended" : undefined,
+            })),
+          ),
         })
 
         if (prompts.isCancel(provider)) throw new UI.CancelledError()
-        if (provider === "other") {
-          provider = await prompts.text({
-            message: "Enter provider id",
-            validate: (x) => (x.match(/^[a-z-]+$/) ? undefined : "a-z and hyphens only"),
-          })
-          if (prompts.isCancel(provider)) throw new UI.CancelledError()
-          provider = provider.replace(/^@ai-sdk\//, "")
-          if (prompts.isCancel(provider)) throw new UI.CancelledError()
-          prompts.log.warn(
-            `This only stores a credential for ${provider} - you will need configure it in opencode.json, check the docs for examples.`,
-          )
-        }
 
         return provider
       }
@@ -211,7 +193,11 @@ on:
 
 jobs:
   opencode:
-    if: startsWith(github.event.comment.body, 'hey opencode')
+    if: |
+      startsWith(github.event.comment.body, 'opencode') ||
+      startsWith(github.event.comment.body, 'hi opencode') ||
+      startsWith(github.event.comment.body, 'hey opencode') ||
+      contains(github.event.comment.body, '@opencode-agent')
     runs-on: ubuntu-latest
     permissions:
       id-token: write

+ 0 - 16
scripts/publish-github-action.ts

@@ -1,16 +0,0 @@
-#!/usr/bin/env bun
-
-import { $ } from "bun"
-
-try {
-  await $`git tag -d github-v1`
-  await $`git push origin :refs/tags/github-v1`
-} catch (e: any) {
-  if (e instanceof $.ShellError && e.stderr.toString().match(/tag \S+ not found/)) {
-    console.log("tag not found, continuing...")
-  } else {
-    throw e
-  }
-}
-await $`git tag -a github-v1 -m "Update github-v1 to latest"`
-await $`git push origin github-v1`

+ 15 - 0
sdks/github/script/publish

@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+
+# Get the latest Git tag
+latest_tag=$(git tag --sort=committerdate | grep -E '^github-v[0-9]+\.[0-9]+\.[0-9]+$' | tail -1)
+if [ -z "$latest_tag" ]; then
+    echo "No tags found"
+    exit 1
+fi
+echo "Latest tag: $latest_tag"
+
+# Update github-v1 to latest
+git tag -d github-v1
+git push origin :refs/tags/github-v1
+git tag -a github-v1 $latest_tag -m "Update github-v1 to $latest_tag"
+git push origin github-v1

+ 41 - 0
sdks/github/script/release

@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+
+# Parse command line arguments
+minor=false
+while [ "$#" -gt 0 ]; do
+  case "$1" in
+    --minor) minor=true; shift 1;;
+    *) echo "Unknown parameter: $1"; exit 1;;
+  esac
+done
+
+# Get the latest Git tag
+git fetch --force --tags
+latest_tag=$(git tag --sort=committerdate | grep -E '^github-v[0-9]+\.[0-9]+\.[0-9]+$' | tail -1)
+if [ -z "$latest_tag" ]; then
+    echo "No tags found"
+    exit 1
+fi
+
+echo "Latest tag: $latest_tag"
+
+# Split the tag into major, minor, and patch numbers
+IFS='.' read -ra VERSION <<< "$latest_tag"
+
+if [ "$minor" = true ]; then
+    # Increment the minor version and reset patch to 0
+    minor_number=${VERSION[1]}
+    let "minor_number++"
+    new_version="${VERSION[0]}.$minor_number.0"
+else
+    # Increment the patch version
+    patch_number=${VERSION[2]}
+    let "patch_number++"
+    new_version="${VERSION[0]}.${VERSION[1]}.$patch_number"
+fi
+
+echo "New version: $new_version"
+
+# Tag
+git tag $new_version
+git push --tags

+ 0 - 16
sdks/github/script/release.ts

@@ -1,16 +0,0 @@
-#!/usr/bin/env bun
-
-import { $ } from "bun"
-
-try {
-  await $`git tag -d github-v1`
-  await $`git push origin :refs/tags/github-v1`
-} catch (e: any) {
-  if (e instanceof $.ShellError && e.stderr.toString().match(/tag \S+ not found/)) {
-    console.log("tag not found, continuing...")
-  } else {
-    throw e
-  }
-}
-await $`git tag -a github-v1 -m "Update github-v1 to latest"`
-await $`git push origin github-v1`