diff --git a/README.md b/README.md index 5906de5..aeb1816 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ A Node environment manager written in rust. + ## Features - Written in fast and safe rust @@ -9,6 +10,7 @@ A Node environment manager written in rust. - Configuration for project specific versions - Version matching with semver expressions + ## Installation You can either @@ -48,6 +50,20 @@ nenv default latest nenv refresh ``` +### Pinning binaries to specific node versions + +```sh +# rome will always be executed with the lts version +nenv pin rome lts + +# tsc will always be executed with the latest typescript version +nenv pin tsc latest + +# undo +nenv unpin rome +nenv unpin tsc +``` + ### List nodejs versions ```sh diff --git a/src/args.rs b/src/args.rs index 9512b24..08519e2 100644 --- a/src/args.rs +++ b/src/args.rs @@ -75,7 +75,7 @@ pub struct ExecArgs { pub command: String, /// The arguments for the command - #[arg(trailing_var_arg = true, allow_hyphen_values = true)] + #[arg(last = true, allow_hyphen_values = true)] pub args: Vec, } diff --git a/src/mapper/mapped_dir.rs b/src/mapper/mapped_dir.rs index 425fa6a..4c9a9bf 100644 --- a/src/mapper/mapped_dir.rs +++ b/src/mapper/mapped_dir.rs @@ -42,7 +42,11 @@ impl NodeApp { #[cfg(not(windows))] async fn write_wrapper_script(&self, path: &Path) -> Result<(), io::Error> { - fs::write(path, format!("#!/bin/sh\nnenv exec {} \"$@\"", self.name)).await?; + fs::write( + path, + format!("#!/bin/sh\nnenv exec {} -- \"$@\"", self.name), + ) + .await?; let src_metadata = self.path.metadata()?; fs::set_permissions(&path, src_metadata.permissions()).await?; @@ -53,7 +57,7 @@ impl NodeApp { async fn write_wrapper_script(&self, path: &Path) -> Result<(), io::Error> { fs::write( path.with_extension("bat"), - format!("@echo off\nnenv exec {} %*", self.name), + format!("@echo off\nnenv exec {} -- %*", self.name), ) .await?; let src_metadata = self.path.metadata()?;