mirror of
https://github.com/sst/opencode.git
synced 2025-07-24 16:23:43 +00:00
wip: github actions
This commit is contained in:
parent
800bee2722
commit
933d50e25a
6 changed files with 78 additions and 68 deletions
10
.github/workflows/publish-github-action.yml
vendored
10
.github/workflows/publish-github-action.yml
vendored
|
@ -2,6 +2,9 @@ name: publish-github-action
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "github-v*.*.*"
|
||||||
|
|
||||||
concurrency: ${{ github.workflow }}-${{ github.ref }}
|
concurrency: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
|
||||||
|
@ -18,12 +21,9 @@ jobs:
|
||||||
|
|
||||||
- run: git fetch --force --tags
|
- run: git fetch --force --tags
|
||||||
|
|
||||||
- uses: oven-sh/setup-bun@v2
|
|
||||||
with:
|
|
||||||
bun-version: 1.2.17
|
|
||||||
|
|
||||||
- name: Publish
|
- name: Publish
|
||||||
run: |
|
run: |
|
||||||
git config --global user.email "opencode@sst.dev"
|
git config --global user.email "opencode@sst.dev"
|
||||||
git config --global user.name "opencode"
|
git config --global user.name "opencode"
|
||||||
./scripts/publish-github-action.ts
|
./scripts/publish
|
||||||
|
working-directory: ./sdks/github
|
||||||
|
|
|
@ -84,40 +84,22 @@ export const InstallGithubCommand = cmd({
|
||||||
let provider = await prompts.select({
|
let provider = await prompts.select({
|
||||||
message: "Select provider",
|
message: "Select provider",
|
||||||
maxItems: 8,
|
maxItems: 8,
|
||||||
options: [
|
options: pipe(
|
||||||
...pipe(
|
providers,
|
||||||
providers,
|
values(),
|
||||||
values(),
|
sortBy(
|
||||||
sortBy(
|
(x) => priority[x.id] ?? 99,
|
||||||
(x) => priority[x.id] ?? 99,
|
(x) => x.name ?? x.id,
|
||||||
(x) => x.name ?? x.id,
|
|
||||||
),
|
|
||||||
map((x) => ({
|
|
||||||
label: x.name,
|
|
||||||
value: x.id,
|
|
||||||
hint: priority[x.id] === 0 ? "recommended" : undefined,
|
|
||||||
})),
|
|
||||||
),
|
),
|
||||||
{
|
map((x) => ({
|
||||||
value: "other",
|
label: x.name,
|
||||||
label: "Other",
|
value: x.id,
|
||||||
},
|
hint: priority[x.id] === 0 ? "recommended" : undefined,
|
||||||
],
|
})),
|
||||||
|
),
|
||||||
})
|
})
|
||||||
|
|
||||||
if (prompts.isCancel(provider)) throw new UI.CancelledError()
|
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
|
return provider
|
||||||
}
|
}
|
||||||
|
@ -211,7 +193,11 @@ on:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
opencode:
|
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
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
id-token: write
|
id-token: write
|
||||||
|
|
|
@ -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
sdks/github/script/publish
Executable file
15
sdks/github/script/publish
Executable file
|
@ -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
sdks/github/script/release
Executable file
41
sdks/github/script/release
Executable file
|
@ -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
|
|
@ -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`
|
|
Loading…
Add table
Add a link
Reference in a new issue