diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index e7870230..7a42fe82 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -20,10 +20,9 @@ jobs: with: bun-version: 1.2.21 - - name: Install dependencies - run: bun install - - - name: Run format - run: ./script/format.ts + - name: run + run: | + bun install + ./script/format.ts env: CI: true diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 645a7b50..51ffa490 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,14 +4,14 @@ run-name: "${{ format('v{0}', inputs.version) }}" on: workflow_dispatch: inputs: - version: - description: "Version to publish" + bump: + description: "Bump major, minor, or patch" required: true - type: string - title: - description: "Custom title for this run" - required: false - type: string + type: choice + options: + - major + - minor + - patch concurrency: ${{ github.workflow }}-${{ github.ref }} @@ -65,8 +65,9 @@ jobs: - name: Publish run: | - OPENCODE_VERSION=${{ inputs.version }} ./script/publish.ts + ./script/publish.ts env: + OPENCODE_BUMP: ${{ inputs.bump }} GITHUB_TOKEN: ${{ secrets.SST_GITHUB_TOKEN }} AUR_KEY: ${{ secrets.AUR_KEY }} NPM_CONFIG_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/script/publish.ts b/script/publish.ts index 9b3ea450..4aedc9dc 100755 --- a/script/publish.ts +++ b/script/publish.ts @@ -9,12 +9,18 @@ if (process.versions.bun !== "1.2.21") { console.log("=== publishing ===\n") const snapshot = process.env["OPENCODE_SNAPSHOT"] === "true" -const version = snapshot - ? `0.0.0-${new Date().toISOString().slice(0, 16).replace(/[-:T]/g, "")}` - : process.env["OPENCODE_VERSION"] -if (!version) { - throw new Error("OPENCODE_VERSION is required") -} +const version = await (async () => { + if (snapshot) return `0.0.0-${new Date().toISOString().slice(0, 16).replace(/[-:T]/g, "")}` + const [major, minor, patch] = (await $`gh release list --limit 1 --json tagName --jq '.[0].tagName'`.text()) + .trim() + .replace(/^v/, "") + .split(".") + .map((x) => Number(x) || 0) + const t = process.env["OPENCODE_BUMP"]?.toLowerCase() + if (t === "major") return `${major + 1}.0.0` + if (t === "minor") return `${major}.${minor + 1}.0` + return `${major}.${minor}.${patch + 1}` +})() process.env["OPENCODE_VERSION"] = version console.log("version:", version)