chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
import path from 'node:path'
|
||||
|
||||
import {
|
||||
PNPM_INSTALL_PATH,
|
||||
PNPM_MANIFEST_PATH,
|
||||
PNPM_VERSION
|
||||
} from '@/constants'
|
||||
import { CPUArchitectures } from '@/types'
|
||||
import { SystemHelper } from '@/helpers/system-helper'
|
||||
|
||||
import { setupRuntimeBinary } from './setup-runtime-binary'
|
||||
|
||||
const { cpuArchitecture: CPU_ARCH } = SystemHelper.getInformation()
|
||||
|
||||
function getBinaryPath() {
|
||||
return SystemHelper.isWindows()
|
||||
? path.join(PNPM_INSTALL_PATH, 'pnpm.exe')
|
||||
: path.join(PNPM_INSTALL_PATH, 'pnpm')
|
||||
}
|
||||
|
||||
function getAssetFileName() {
|
||||
if (SystemHelper.isLinux()) {
|
||||
if (CPU_ARCH === CPUArchitectures.X64) {
|
||||
return 'pnpm-linux-x64.tar.gz'
|
||||
}
|
||||
|
||||
if (CPU_ARCH === CPUArchitectures.ARM64) {
|
||||
return 'pnpm-linux-arm64.tar.gz'
|
||||
}
|
||||
}
|
||||
|
||||
if (SystemHelper.isMacOS()) {
|
||||
if (CPU_ARCH === CPUArchitectures.X64) {
|
||||
throw new Error('pnpm 11 no longer ships a standalone macOS x64 binary')
|
||||
}
|
||||
|
||||
if (CPU_ARCH === CPUArchitectures.ARM64) {
|
||||
return 'pnpm-darwin-arm64.tar.gz'
|
||||
}
|
||||
}
|
||||
|
||||
if (SystemHelper.isWindows()) {
|
||||
return CPU_ARCH === CPUArchitectures.ARM64
|
||||
? 'pnpm-win32-arm64.zip'
|
||||
: 'pnpm-win32-x64.zip'
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`Unsupported platform for pnpm: ${SystemHelper.getInformation().type} ${CPU_ARCH}`
|
||||
)
|
||||
}
|
||||
|
||||
export default async function setupPNPM() {
|
||||
const assetFileName = getAssetFileName()
|
||||
|
||||
await setupRuntimeBinary({
|
||||
name: 'pnpm',
|
||||
version: PNPM_VERSION,
|
||||
basePath: PNPM_INSTALL_PATH,
|
||||
installPath: PNPM_INSTALL_PATH,
|
||||
manifestPath: PNPM_MANIFEST_PATH,
|
||||
binaryPath: getBinaryPath(),
|
||||
downloadURL: `https://github.com/pnpm/pnpm/releases/download/v${PNPM_VERSION}/${assetFileName}`,
|
||||
archiveFileName: assetFileName
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user