Fix pnpm PATH: use /bin subdir and single-quote bash -c
Two bugs in pnpmEnvPrefix: 1. pnpm setup configures global-bin-dir as $PNPM_HOME/bin, not $PNPM_HOME. We were only prepending $PNPM_HOME to PATH, so pnpm still complained 'configured global bin directory ... is not in PATH' and refused to install. 2. The bash -c command was wrapped in double quotes, which caused the OUTER sh to expand $PNPM_HOME, $PATH, $HOME before bash ever saw them. PNPM_HOME was empty in the outer shell, so the resulting PATH was ':$PATH'. Fix: wrap bash -c argument in single quotes so the inner bash does all variable expansion; prepend both $PNPM_HOME/bin and $PNPM_HOME to PATH for safety. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -480,9 +480,9 @@ func installAgy() {
|
||||
|
||||
func pnpmEnvPrefix() string {
|
||||
if isMacOS {
|
||||
return `export PNPM_HOME="$HOME/Library/pnpm" && export PATH="$PNPM_HOME:$PATH" && `
|
||||
return `export PNPM_HOME="$HOME/Library/pnpm"; export PATH="$PNPM_HOME/bin:$PNPM_HOME:$PATH"; `
|
||||
}
|
||||
return `export PNPM_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/pnpm" && export PATH="$PNPM_HOME:$PATH" && `
|
||||
return `export PNPM_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/pnpm"; export PATH="$PNPM_HOME/bin:$PNPM_HOME:$PATH"; `
|
||||
}
|
||||
|
||||
func installNpmPackage(pkgName string) {
|
||||
@@ -493,7 +493,7 @@ func installNpmPackage(pkgName string) {
|
||||
}
|
||||
ensureNodeLTS()
|
||||
fmt.Printf(" Installing %s via pnpm ...\n", pkgName)
|
||||
cmd := fmt.Sprintf(`bash -c "%ssource ~/.nvm/nvm.sh && pnpm add -g %s"`, pnpmEnvPrefix(), pkgName)
|
||||
cmd := fmt.Sprintf(`bash -c '%ssource ~/.nvm/nvm.sh && pnpm add -g %s'`, pnpmEnvPrefix(), pkgName)
|
||||
if !runShell(cmd, CmdOpts{}).OK() {
|
||||
errLog(fmt.Sprintf("%s installation failed", pkgName))
|
||||
}
|
||||
@@ -507,7 +507,7 @@ func installPlaywright() {
|
||||
}
|
||||
ensureNodeLTS()
|
||||
fmt.Println(" Installing playwright via pnpm ...")
|
||||
addCmd := fmt.Sprintf(`bash -c "%ssource ~/.nvm/nvm.sh && pnpm add -g playwright"`, pnpmEnvPrefix())
|
||||
addCmd := fmt.Sprintf(`bash -c '%ssource ~/.nvm/nvm.sh && pnpm add -g playwright'`, pnpmEnvPrefix())
|
||||
if !runShell(addCmd, CmdOpts{}).OK() {
|
||||
errLog("playwright installation failed")
|
||||
return
|
||||
@@ -519,7 +519,7 @@ func installPlaywright() {
|
||||
} else {
|
||||
fmt.Println(" Installing Playwright browsers ...")
|
||||
}
|
||||
if !runShell(fmt.Sprintf(`bash -c "%ssource ~/.nvm/nvm.sh && %s"`, pnpmEnvPrefix(), installCmd), CmdOpts{}).OK() {
|
||||
if !runShell(fmt.Sprintf(`bash -c '%ssource ~/.nvm/nvm.sh && %s'`, pnpmEnvPrefix(), installCmd), CmdOpts{}).OK() {
|
||||
errLog("playwright browser installation failed")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user