diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8fd2e65..b9d4769 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -61,3 +61,19 @@ jobs: - name: Check version run: deno -V | grep -q "deno 1\.43\.1" + + test-binary-name: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ ubuntu-latest, windows-latest, macos-latest ] + steps: + - uses: actions/checkout@v3 + + - name: Setup Deno + uses: ./ + with: + deno-binary-name: deno_foo + + - name: Check binary exists + run: deno_foo -V diff --git a/README.md b/README.md index 08c8cb5..af64791 100644 --- a/README.md +++ b/README.md @@ -73,3 +73,11 @@ The extension can also automatically read the file from with: deno-version-file: .dvmrc ``` + +### Specifying binary name + +```yaml +- uses: denoland/setup-deno@v1 + with: + deno-binary-name: deno_latest +``` diff --git a/action.yml b/action.yml index 74d15ef..59ce8fb 100644 --- a/action.yml +++ b/action.yml @@ -10,6 +10,9 @@ inputs: default: "1.x" deno-version-file: description: File containing the Deno version to install such as .dvmrc or .tool-versions. + deno-binary-name: + description: The name to use for the binary. + default: "deno" outputs: deno-version: description: "The Deno version that was installed." diff --git a/src/install.js b/src/install.js index fdc8cce..abae86f 100644 --- a/src/install.js +++ b/src/install.js @@ -1,5 +1,6 @@ const os = require("os"); const path = require("path"); +const fs = require("fs/promises"); const process = require("process"); const core = require("@actions/core"); const tc = require("@actions/tool-cache"); @@ -28,9 +29,23 @@ async function install(version) { const zipPath = await tc.downloadTool(url); const extractedFolder = await tc.extractZip(zipPath); + const binaryName = core.getInput("deno-binary-name"); + if (binaryName !== "deno") { + await fs.rename( + path.join( + extractedFolder, + process.platform === "win32" ? "deno.exe" : "deno", + ), + path.join( + extractedFolder, + process.platform === "win32" ? binaryName + ".exe" : binaryName, + ), + ); + } + const newCachedPath = await tc.cacheDir( extractedFolder, - "deno", + binaryName, version.isCanary ? `0.0.0-${version.version}` : version.version, ); core.info(`Cached Deno to ${newCachedPath}.`);