setup-cpp/src/nala/nala.ts

49 lines
1.4 KiB
TypeScript
Raw Normal View History

2022-07-25 15:40:05 +08:00
import { dirname } from "path"
import which from "which"
2022-07-25 15:46:23 +08:00
import { isUbuntu } from "../utils/env/isUbuntu"
2022-07-25 15:40:05 +08:00
import { execSudo } from "../utils/exec/sudo"
import { setupAptPack } from "../utils/setup/setupAptPack"
let binDir: string | undefined
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export async function setupNala(version: string, _setupDir: string, _arch: string) {
2022-07-25 15:46:23 +08:00
if (!isUbuntu()) {
2022-07-25 15:40:05 +08:00
return undefined
}
if (typeof binDir === "string") {
return { binDir }
}
const maybeBinDir = which.sync("nala", { nothrow: true })
if (maybeBinDir !== null) {
binDir = dirname(maybeBinDir)
return { binDir }
}
// https://github.com/volitank/nala#-installation
await setupAptPack("wget")
2022-07-25 15:40:05 +08:00
execSudo("/bin/bash", [
"-c",
`wget -qO - https://deb.volian.org/volian/scar.key | tee /etc/apt/trusted.gpg.d/volian-archive-scar-unstable.gpg > /dev/null`,
2022-07-25 15:40:05 +08:00
])
execSudo("/bin/bash", [
"-c",
`echo "deb http://deb.volian.org/volian/ scar main" | tee /etc/apt/sources.list.d/volian-archive-scar-unstable.list`,
2022-07-25 15:40:05 +08:00
])
try {
if (version !== "legacy") {
await setupAptPack("nala", undefined, [], true)
} else {
await setupAptPack("nala-legacy", undefined, [], true)
}
} catch (err) {
await setupAptPack("nala-legacy", undefined, [], true)
2022-07-25 15:40:05 +08:00
}
binDir = "/usr/bin" // eslint-disable-line require-atomic-updates
2022-07-25 15:40:05 +08:00
return { binDir }
}