fix(macos): install gateway via npm

This commit is contained in:
Peter Steinberger
2025-12-13 13:00:59 +00:00
parent e9acb6fad5
commit 31fb4f7c8b
2 changed files with 16 additions and 4 deletions

View File

@@ -164,10 +164,21 @@ enum GatewayEnvironment {
static func installGlobal(version: Semver?, statusHandler: @escaping @Sendable (String) -> Void) async {
let preferred = CommandResolver.preferredPaths().joined(separator: ":")
let target = version?.description ?? "latest"
let pnpm = CommandResolver.findExecutable(named: "pnpm") ?? "pnpm"
let cmd = [pnpm, "add", "-g", "clawdis@\(target)"]
let npm = CommandResolver.findExecutable(named: "npm")
let pnpm = CommandResolver.findExecutable(named: "pnpm")
let bun = CommandResolver.findExecutable(named: "bun")
let (label, cmd): (String, [String]) =
if let npm {
("npm", [npm, "install", "-g", "clawdis@\(target)"])
} else if let pnpm {
("pnpm", [pnpm, "add", "-g", "clawdis@\(target)"])
} else if let bun {
("bun", [bun, "add", "-g", "clawdis@\(target)"])
} else {
("npm", ["npm", "install", "-g", "clawdis@\(target)"])
}
statusHandler("Installing clawdis@\(target) via pnpm")
statusHandler("Installing clawdis@\(target) via \(label)")
let response = await ShellExecutor.run(command: cmd, cwd: nil, env: ["PATH": preferred], timeout: 300)
if response.ok {
statusHandler("Installed clawdis@\(target)")

View File

@@ -291,7 +291,8 @@ struct OnboardingView: View {
.foregroundStyle(.secondary)
.lineLimit(2)
} else {
Text("Uses \"pnpm add -g clawdis@<version>\" on your PATH. We keep the gateway on port 18789.")
Text(
"Uses \"npm install -g clawdis@<version>\" on your PATH. We keep the gateway on port 18789.")
.font(.caption)
.foregroundStyle(.secondary)
.lineLimit(2)