From 2609f62ca0e73042e79801b824ecaa5fc021a982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jozef=20Steinh=C3=BCbl=20=28xHyroM=29?= Date: Sat, 16 Mar 2024 14:52:58 +0100 Subject: [PATCH] feat: support .tool-versions --- .github/workflows/test.yml | 31 +++++++++++++++++++++++++++++++ src/index.ts | 26 +++++++++++++++++++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e166785..693e750 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -76,3 +76,34 @@ jobs: echo "Expected version to be 1.0.0, got ${{ steps.bun.outputs.version }}" exit 1 fi + setup-bun-from-tool-versions: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + - macos-latest + content: + - "bun 1.0.0" + - "bun1.0.0" + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup package.json + run: | + echo "bun ${{ matrix.content }}" > .tool-versions + - name: Setup Bun + uses: ./ + - name: Run Bun + id: bun + run: | + bun --version + echo "version=$(bun --version)" >> $GITHUB_OUTPUT + - name: Check version + run: | + if [[ "${{ steps.bun.outputs.version }}" == "1.0.0" ]]; then + echo "Version is 1.0.0" + else + echo "Expected version to be 1.0.0, got ${{ steps.bun.outputs.version }}" + exit 1 + fi diff --git a/src/index.ts b/src/index.ts index b123d86..61c0ad5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -36,8 +36,32 @@ function readVersionFromPackageJson(): string | undefined { } } +function readVersionFromToolVersions(): string | undefined { + const cwd = process.env.GITHUB_WORKSPACE; + if (!cwd) { + return; + } + const path = join(cwd, ".tool-versions"); + try { + if (!existsSync(path)) { + return; + } + + const match = readFileSync(path, "utf8").match(/^bun\s(?.*?)$/m); + + return match?.groups?.version; + } catch (error) { + const { message } = error as Error; + warning(`Failed to read .tool-versions: ${message}`); + } +} + runAction({ - version: getInput("bun-version") || readVersionFromPackageJson() || undefined, + version: + getInput("bun-version") || + readVersionFromPackageJson() || + readVersionFromToolVersions() || + undefined, customUrl: getInput("bun-download-url") || undefined, registryUrl: getInput("registry-url") || undefined, scope: getInput("scope") || undefined,