From c4e4a2c34df2f1880cdb61861f4ad0a23b7659f7 Mon Sep 17 00:00:00 2001 From: Urjit Chakraborty <135136842+urjitc@users.noreply.github.com> Date: Sun, 26 Jul 2026 00:21:55 -0700 Subject: [PATCH 1/2] build(release): automate package versioning --- .github/workflows/release-please.yml | 33 ++++++++++++++++++++++++++++ .release-please-manifest.json | 3 +++ release-please-config.json | 27 +++++++++++++++++++++++ scripts/verify-release-packages.mjs | 18 ++++++++++++--- version.txt | 1 + 5 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/release-please.yml create mode 100644 .release-please-manifest.json create mode 100644 release-please-config.json create mode 100644 version.txt diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 0000000..4f665c6 --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,33 @@ +name: Prepare release + +on: + push: + branches: + - main + workflow_dispatch: + +permissions: + actions: write + contents: write + issues: write + pull-requests: write + +jobs: + release-please: + name: Update release pull request + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - id: release + uses: googleapis/release-please-action@5c625bfb5d1ff62eadeeb3772007f7f66fdcf071 # v4.4.1 + with: + skip-github-release: true + - name: Verify release pull request + if: steps.release.outputs.prs_created == 'true' + env: + GH_TOKEN: ${{ github.token }} + PR: ${{ steps.release.outputs.pr }} + shell: bash + run: | + head_branch=$(jq --exit-status --raw-output '.headBranchName' <<< "$PR") + gh workflow run ci.yml --ref "$head_branch" diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..0ee8c01 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.3.0" +} diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..72ea396 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,27 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "bootstrap-sha": "b752a146619c905dd1a7f891b66db5b496f2b383", + "include-component-in-tag": false, + "include-v-in-tag": true, + "packages": { + ".": { + "extra-files": [ + { + "path": "packages/filerouter/package.json", + "type": "json" + }, + { + "path": "packages/cli/package.json", + "type": "json" + }, + { + "path": "packages/filerouter/src/hosted.ts", + "type": "generic" + } + ], + "package-name": "filerouter", + "release-type": "simple", + "version-file": "version.txt" + } + } +} diff --git a/scripts/verify-release-packages.mjs b/scripts/verify-release-packages.mjs index 7912454..e89ca65 100644 --- a/scripts/verify-release-packages.mjs +++ b/scripts/verify-release-packages.mjs @@ -9,9 +9,21 @@ const exec = promisify(execFile) const root = resolve(dirname(fileURLToPath(import.meta.url)), "..") const sdkPackage = await readJson("packages/filerouter/package.json") const cliPackage = await readJson("packages/cli/package.json") - -if (sdkPackage.version !== cliPackage.version) { - throw new Error("SDK and CLI package versions must match.") +const releaseManifest = await readJson(".release-please-manifest.json") +const releaseVersion = ( + await readFile(join(root, "version.txt"), "utf8") +).trim() + +for (const [source, version] of [ + ["CLI package", cliPackage.version], + ["release manifest", releaseManifest["."]], + ["version file", releaseVersion], +]) { + if (version !== sdkPackage.version) { + throw new Error( + `${source} version ${version} does not match SDK version ${sdkPackage.version}.` + ) + } } if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(sdkPackage.version)) { throw new Error(`Invalid release version: ${sdkPackage.version}`) diff --git a/version.txt b/version.txt new file mode 100644 index 0000000..0d91a54 --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +0.3.0 From 37eb9ae76f15f4753193c93afd97ae65e0f807ca Mon Sep 17 00:00:00 2001 From: Urjit Chakraborty <135136842+urjitc@users.noreply.github.com> Date: Sun, 26 Jul 2026 00:22:14 -0700 Subject: [PATCH 2/2] chore(release): prepare 0.4.0 --- .release-please-manifest.json | 2 +- packages/cli/package.json | 2 +- packages/filerouter/package.json | 2 +- packages/filerouter/src/hosted.ts | 2 +- version.txt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 0ee8c01..2537c1f 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.3.0" + ".": "0.4.0" } diff --git a/packages/cli/package.json b/packages/cli/package.json index 8ae8c63..647d14a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@file_router/cli", - "version": "0.3.0", + "version": "0.4.0", "description": "Parse and compare documents across providers from the command line.", "keywords": [ "documents", diff --git a/packages/filerouter/package.json b/packages/filerouter/package.json index 27dfdc3..e840aeb 100644 --- a/packages/filerouter/package.json +++ b/packages/filerouter/package.json @@ -1,6 +1,6 @@ { "name": "@file_router/sdk", - "version": "0.3.0", + "version": "0.4.0", "description": "Provider-neutral document parsing SDK.", "keywords": [ "documents", diff --git a/packages/filerouter/src/hosted.ts b/packages/filerouter/src/hosted.ts index 417dadf..35b2ba6 100644 --- a/packages/filerouter/src/hosted.ts +++ b/packages/filerouter/src/hosted.ts @@ -9,7 +9,7 @@ import type { import type { ProviderId } from "./catalog" export const FILEROUTER_API_KEY_PREFIX = "fr_" -export const FILEROUTER_VERSION = "0.3.0" +export const FILEROUTER_VERSION = "0.4.0" // x-release-please-version export const FILEROUTER_CLI_CLIENT_ID = "filerouter-cli" export const FILEROUTER_CLI_SCOPE = "jobs:create jobs:read" export const FILEROUTER_DEFAULT_API_URL = "https://filerouter.dev" diff --git a/version.txt b/version.txt index 0d91a54..1d0ba9e 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.3.0 +0.4.0