lukechilds / zsh-nvm

Zsh plugin for installing, updating and loading nvm
MIT License
2.24k stars 113 forks source link

Unable to install nightly #43

Open FallingSnow opened 6 years ago

FallingSnow commented 6 years ago
$ nvm install nightly         
Version 'node' not found - try `nvm ls-remote` to browse available versions.
Clearing mirror cache...
Done!

Let me know if you need any more information.

lukechilds commented 6 years ago

Thanks for reporting.

I'm not quite sure why this has broken, possibly the format of https://nodejs.org/download/nightly/ has changed, although that seems unlikely.

Or possibly nvm has changed the way it parses versions, as it seems to be interpreting the nightly versions as iojs.

$ NVM_NODEJS_ORG_MIRROR=https://nodejs.org/download/nightly/ nvm install node
Version 'node' not found - try `nvm ls-remote` to browse available versions.

$ NVM_NODEJS_ORG_MIRROR=https://nodejs.org/download/nightly/ nvm ls-remote
    iojs-v1.0.0
    iojs-v1.0.1
    iojs-v1.0.2
    iojs-v1.0.3
    iojs-v1.0.4
    iojs-v1.1.0
    iojs-v1.2.0
    iojs-v1.3.0
    iojs-v1.4.1
    ...
    iojs-v3.3.1
FallingSnow commented 6 years ago

I was able to install nightly via v8-canary: NVM_NODEJS_ORG_MIRROR=https://nodejs.org/download/v8-canary nvm install node.

lukechilds commented 6 years ago

Hmmnn, seems to just be that by chance it's parsing a couple of the v8-canary listings as node instead of iojs:

$ NVM_NODEJS_ORG_MIRROR=https://nodejs.org/download/v8-canary/ nvm ls-remote
v9.0.0-v8-canary201710301f8f3dcf36
v10.0.0-v8-canary20180321f7efae222a
    iojs-v1.0.0
    iojs-v1.0.1
    iojs-v1.0.2
    ...
    iojs-v3.3.1
lukechilds commented 6 years ago

Unfortunately I don't really have the time to look into this further right now. PRs welcome!

I think the best solution would either be to remove this feature completely (it was always a bit of a hack), or add our own version parsing that properly detects canary/nightly/rc versions.

The latter would need to be done very carefully to avoid any breakage and not mess things up with nvm. It should probably be submitted as a PR to nvm rather than to zsh-nvm if the maintainers want it.

FallingSnow commented 6 years ago

I agree. I believe this is a feature that should be in nvm, not zsh-nvm. Unfortunately I doesn't seem like a priority to them.

cswl commented 6 years ago

@lukechilds I stopped messing with nightly node... so I didnt notice this yet...

I can write our own nightly/rc installer which parses the stuff.. which uses absolute versions and doesnt interfere with stable nvm installs...

I will get around to writing this tonight..

lukechilds commented 6 years ago

That would be amazing, I think it's a fairly big job though.

If you're serious about doing this it might be worth contributing it upstream, directly to nvm. Then everyone can benefit, not just users of zsh-nvm. It would probably be worth creating an issue there first and letting them know what you're planning, just to make sure they definitely want it.

cswl commented 6 years ago

So I took a look at why it's parsing nightly versions as iojs...

+nvm_ls_remote_index_tab:91> VERSIONS='' 
+nvm_ls_remote_index_tab:104> [ -z '' ']'
+nvm_ls_remote_index_tab:105> nvm_echo N/A
+nvm_echo:1> printf '%s\n' N/A
+nvm_ls_remote_index_tab:3> [ 3 -lt 3 ']'
+nvm_ls_remote_index_tab:8> local FLAVOR
+nvm_ls_remote_index_tab:9> FLAVOR=iojs 

It fails to parse VERSIONS and return N/A.. https://github.com/creationix/nvm/blob/bc87d3dd1c380298be2d624331bc83578255f5f9/nvm.sh#L1083

The checking logic in https://github.com/creationix/nvm/blob/bc87d3dd1c380298be2d624331bc83578255f5f9/nvm.sh#L512 Causes it to get detected as iojs..

Unfortunately the parsing logic is written in awk which I don't have much knowledge.. I will need to learn it before I can work in this..