mirror of
https://github.com/supabase/setup-cli.git
synced 2025-12-08 16:16:25 +00:00
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import os from 'os'
|
|
import lt from 'semver/functions/lt'
|
|
|
|
// arch in [arm, arm64, x64...] (https://nodejs.org/docs/latest-v16.x/api/os.html#osarch)
|
|
// return value in [amd64, arm64, arm]
|
|
const mapArch = (arch: string): string => {
|
|
const mappings: Record<string, string> = {
|
|
x64: 'amd64'
|
|
}
|
|
return mappings[arch] || arch
|
|
}
|
|
|
|
// os in [darwin, linux, win32...] (https://nodejs.org/docs/latest-v16.x/api/os.html#osplatform)
|
|
// return value in [darwin, linux, windows]
|
|
const mapOS = (platform: string): string => {
|
|
const mappings: Record<string, string> = {
|
|
win32: 'windows'
|
|
}
|
|
return mappings[platform] || platform
|
|
}
|
|
|
|
export const getDownloadUrl = async (version: string): Promise<string> => {
|
|
const platform = mapOS(os.platform())
|
|
const arch = mapArch(os.arch())
|
|
const filename = `supabase_${platform}_${arch}.tar.gz`
|
|
if (version.toLowerCase() === 'latest') {
|
|
return `https://github.com/supabase/cli/releases/latest/download/${filename}`
|
|
}
|
|
if (lt(version, '1.28.0')) {
|
|
return `https://github.com/supabase/cli/releases/download/v${version}/supabase_${version}_${platform}_${arch}.tar.gz`
|
|
}
|
|
return `https://github.com/supabase/cli/releases/download/v${version}/${filename}`
|
|
}
|