hnvm icon indicating copy to clipboard operation
hnvm copied to clipboard

`pnpm kondo` fails on hnvm v0.12.7

Open joseph-galindo opened this issue 3 years ago • 0 comments

First, confirmed the version of hnvm I'm using:

[joseph.galindo@C02XK68RJG5L probot-pr-checklist (jrg/BT-3953)]$ brew list hnvm
/usr/local/Cellar/hnvm/v0.12.7/.hnvmrc
/usr/local/Cellar/hnvm/v0.12.7/bin/node
/usr/local/Cellar/hnvm/v0.12.7/bin/npm
/usr/local/Cellar/hnvm/v0.12.7/bin/npx
/usr/local/Cellar/hnvm/v0.12.7/bin/pnpm
/usr/local/Cellar/hnvm/v0.12.7/bin/pnpx
/usr/local/Cellar/hnvm/v0.12.7/bin/yarn
/usr/local/Cellar/hnvm/v0.12.7/lib/.tmp/node/>=4
/usr/local/Cellar/hnvm/v0.12.7/lib/hnvm/ (4 files)

So..I was trying to run pnpm kondo in uc-node-services and ran into this:

[joseph.galindo@C02XK68RJG5L probot-pr-checklist (jrg/BT-3953)]$ pnpm kondo
Using Hermetic NodeJS v16.13.0
/usr/local/bin/pnpm: line 23: /usr/local/Cellar/hnvm/v0.12.7/lib/hnvm/../lib/hnvm/kondo.sh: No such file or directory

I thought that's weird, since I never remember having a problem with this script, at least in uc-frontend. I went to where it is on disk:

[joseph.galindo@C02XK68RJG5L lib]$ cd /usr/local/Cellar/hnvm/v0.12.7/lib/hnvm/
[joseph.galindo@C02XK68RJG5L hnvm]$ ls
colors.sh	config.sh	ensure_bin.sh	kondo.sh
[joseph.galindo@C02XK68RJG5L hnvm]$ pwd
/usr/local/Cellar/hnvm/v0.12.7/lib/hnvm
[joseph.galindo@C02XK68RJG5L hnvm]$ ls /usr/local/Cellar/hnvm/v0.12.7/lib/hnvm/kondo.sh
/usr/local/Cellar/hnvm/v0.12.7/lib/hnvm/kondo.sh

So I tried to log out what was happening to the $script_dir variable being relied on in hnvm, and found these:

[joseph.galindo@C02XK68RJG5L probot-pr-checklist (jrg/BT-3953)]$ pnpm kondo
derived script_dir is /usr/local/bin
derived script_dir in /usr/local/bin/pnpm is /usr/local/Cellar/hnvm/v0.12.7/bin
we are now sourcing /usr/local/Cellar/hnvm/v0.12.7/bin/../lib/hnvm/ensure_bin.sh in the /usr/local/bin/pnpm code
script_dir in usr/local/Cellar/hnvm/v0.12.7/lib/hnvm/ensure_bin is /usr/local/Cellar/hnvm/v0.12.7/lib/hnvm
Using Hermetic NodeJS v16.13.0
derived script_dir in /usr/local/bin/pnpm is /usr/local/Cellar/hnvm/v0.12.7/lib/hnvm
/usr/local/bin/pnpm: line 29: /usr/local/Cellar/hnvm/v0.12.7/lib/hnvm/../lib/hnvm/kondo.sh: No such file or directory
derived script_dir in /usr/local/bin/pnpm is /usr/local/Cellar/hnvm/v0.12.7/lib/hnvm
^^^ this is not good, we probably don't expect this value to change at all

It looks like these files:

  • /usr/local/bin/pnpm
  • /usr/local/Cellar/hnvm/v0.12.7/lib/hnvm/ensure_bin.sh

Both set up their own variable $script_dir. When the pnpm bin script bash sources the ensure_bin.sh script, I think the variable from ensure_bin.sh is sourced and shadows the variable in pnpm. Which can break the pnpm kondo logic since it relies on that variable.


To work around the issue, I changed pnpm locally to use source "$script_dir/kondo.sh" "${node_bin}" "${pnpm_bin}, but we probably need to fix upstream in hnvm itself.

joseph-galindo avatar Feb 03 '22 23:02 joseph-galindo