summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFrank <[email protected]>2025-07-20 12:36:53 -0400
committerFrank <[email protected]>2025-07-20 12:36:53 -0400
commit933d50e25a7076e4587d2579c07f21f6bc02d07f (patch)
treec9e6a30b9abfd034948404ee65f87ecdead7bbde
parent800bee2722029ac6f531a4c18c7e52c1697a3c64 (diff)
downloadopencode-933d50e25a7076e4587d2579c07f21f6bc02d07f.tar.gz
opencode-933d50e25a7076e4587d2579c07f21f6bc02d07f.zip
wip: github actions
-rw-r--r--.github/workflows/publish-github-action.yml10
-rw-r--r--packages/opencode/src/cli/cmd/install-github.ts48
-rwxr-xr-xscripts/publish-github-action.ts16
-rwxr-xr-xsdks/github/script/publish15
-rwxr-xr-xsdks/github/script/release41
-rwxr-xr-xsdks/github/script/release.ts16
6 files changed, 78 insertions, 68 deletions
diff --git a/.github/workflows/publish-github-action.yml b/.github/workflows/publish-github-action.yml
index e4b4ae758..3d4bac622 100644
--- a/.github/workflows/publish-github-action.yml
+++ b/.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
diff --git a/packages/opencode/src/cli/cmd/install-github.ts b/packages/opencode/src/cli/cmd/install-github.ts
index 604d76a48..a3114f7d8 100644
--- a/packages/opencode/src/cli/cmd/install-github.ts
+++ b/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
diff --git a/scripts/publish-github-action.ts b/scripts/publish-github-action.ts
deleted file mode 100755
index 9d0cbb7ee..000000000
--- a/scripts/publish-github-action.ts
+++ /dev/null
@@ -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`
diff --git a/sdks/github/script/publish b/sdks/github/script/publish
new file mode 100755
index 000000000..54b1ba56e
--- /dev/null
+++ b/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
diff --git a/sdks/github/script/release b/sdks/github/script/release
new file mode 100755
index 000000000..35180b454
--- /dev/null
+++ b/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 \ No newline at end of file
diff --git a/sdks/github/script/release.ts b/sdks/github/script/release.ts
deleted file mode 100755
index 9d0cbb7ee..000000000
--- a/sdks/github/script/release.ts
+++ /dev/null
@@ -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`