I'm trying to install coffee-script from a makefile, something like this:
./nave.sh use 0.6.5 && npm install coffee-script
That doesn't work, because nave creates a subshell; moreover, if I install the package from inside het nave-environment, and exit the subshell, this doesn't work (which is a problem for the web framework I use --- Django):
env: node: No such file or directory
In virtualenv, the following (imaginary) would work:
Is there a reason or a cause that this is not supported by nave (or is it supported, but can't I find it)? Or should we actually try and solve this?
You'd have to enter the subshell and THEN do the thing in there. When you exit, you're not in the subshell any more, and might not even have node (or that version of node) in your PATH any longer. That's why you're getting the node: No such file or directory error.
node: No such file or directory
Does this do what you want?
./nave.sh use 0.6.5 npm install coffee-script
./nave.sh use 0.6.5 node_modules/.bin/coffee
It wouldn't be too hard to add support for passing more than just one command to the nave use statement.
It does exactly what I want! Thanks for your reply, and sorry for the non-issue.
No problem. If you feel that the docs or API could have made this more obvious, a patch would be welcome.
Actually, it doesn't do exactly what I want; if I do
$ ./nave.sh use 0.6.5 node_modules/.bin/coffee -cs < test.coffee | head -1
already using 0.6.5
... if I'm already using it; this is a problem for my script that doesn't know whether it is already using it. Can I suppress this message? Shouldn't it go to stderr?
Oh, yeah, that's ugly. Should be printing to stderr.
Wanna send a pull req? I think there's an echo_err function already somewhere.
Hm, does it even need to say "already using" when the command is "use"?
Fix #32 Print informational stuff to stderr
@welwood08 Well, so that's a bit tricky, actually... Should it create another nested subshell if it's already in a subshell where NAVE=0.6.5? If not, I'd like to have some kind of indication that it's not doing that.
Ah yes, nevermind me - I was actually thinking of the "using x" message which seemed a bit verbose when that's what it was instructed to do (at one point I even had the idea to, instead of echoing node version, prefix/modify the shell prompt with it and nave level, but then the sensible, lazy me arrived). Anyway, glad it's going on stderr at least.
You mean like this? https://github.com/isaacs/dotfiles/blob/master/.extra.bashrc#L510-522
That does indeed look like what I was thinking of but never got round to learning, thanks.
I got a new error with the same use case; as of version 2.7, if I do
nave.sh use 0.6.5 node_modules/.bin/coffee
I get in response
Already installed: 0.6.5
/usr/bin/env: node: No such file or directory
Aha, reproducing. Got a fix, landing now.
Ok, fixed on 0.2.10