diff --git a/action.yml b/action.yml index 50c0fab..bad2235 100644 --- a/action.yml +++ b/action.yml @@ -6,6 +6,9 @@ inputs: description: Version of Supabase CLI to install required: false default: 1.28.3 +outputs: + version: + description: Version of installed Supabase CLI runs: using: node16 main: dist/index.js diff --git a/src/main.ts b/src/main.ts index ebb5d3c..cde5090 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,7 +1,7 @@ import * as core from '@actions/core' import * as tc from '@actions/tool-cache' import gte from 'semver/functions/gte' -import {getDownloadUrl} from './utils' +import {getDownloadUrl, determineInstalledVersion} from './utils' export const CLI_CONFIG_REGISTRY = 'SUPABASE_INTERNAL_IMAGE_REGISTRY' @@ -20,6 +20,10 @@ async function run(): Promise { // Expose the tool by adding it to the PATH core.addPath(pathToCLI) + // Expose installed tool version + const determinedVersion = await determineInstalledVersion() + core.setOutput('version', determinedVersion) + // Use GHCR mirror by default if (version.toLowerCase() === 'latest' || gte(version, '1.28.0')) { core.exportVariable(CLI_CONFIG_REGISTRY, 'ghcr.io') diff --git a/src/utils.ts b/src/utils.ts index aece62b..9f03edf 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,5 +1,9 @@ +import {exec} from 'child_process' import os from 'os' import lt from 'semver/functions/lt' +import {promisify} from 'util' + +const doExec = promisify(exec) // arch in [arm, arm64, x64...] (https://nodejs.org/docs/latest-v16.x/api/os.html#osarch) // return value in [amd64, arm64, arm] @@ -31,3 +35,14 @@ export const getDownloadUrl = async (version: string): Promise => { } return `https://github.com/supabase/cli/releases/download/v${version}/${filename}` } + +export const determineInstalledVersion = async (): Promise => { + const {stdout} = await doExec('supabase --version') + + const version = stdout.trim() + if (!version) { + throw new Error('Could not determine installed Supabase CLI version') + } + + return version +}