@@ -9,8 +9,10 @@ use crate::manifest::Manifest;
99use crate :: resolver:: { self , ResolvedDep } ;
1010use walkdir:: WalkDir ;
1111
12- /// The name of the directory where local dependencies are installed.
13- const MODULES_DIR : & str = ".nu_modules" ;
12+ /// The name of the local environment directory.
13+ const NU_ENV_DIR : & str = ".nu-env" ;
14+ /// The subdirectory within `.nu-env/` where module files are installed.
15+ const MODULES_SUBDIR : & str = "modules" ;
1416
1517#[ derive( Debug , Default ) ]
1618struct NupmMetadataHints {
@@ -22,11 +24,13 @@ struct NupmMetadataHints {
2224pub fn install ( project_dir : & Path , frozen : bool ) -> Result < ( ) > {
2325 let manifest = Manifest :: from_dir ( project_dir) ?;
2426 let lock_path = project_dir. join ( "quiver.lock" ) ;
25- let modules_dir = project_dir. join ( MODULES_DIR ) ;
27+ let nu_env_dir = project_dir. join ( NU_ENV_DIR ) ;
28+ let modules_dir = nu_env_dir. join ( MODULES_SUBDIR ) ;
29+ let display_name = format ! ( "{NU_ENV_DIR}/{MODULES_SUBDIR}" ) ;
2630
2731 if manifest. dependencies . is_empty ( ) {
2832 eprintln ! ( "No dependencies declared in nupackage.toml." ) ;
29- write_activate_overlay ( & modules_dir , MODULES_DIR , std:: iter:: empty :: < & str > ( ) ) ?;
33+ write_activate_overlay ( & nu_env_dir , & display_name , std:: iter:: empty :: < & str > ( ) ) ?;
3034 return Ok ( ( ) ) ;
3135 }
3236
@@ -62,7 +66,7 @@ pub fn install(project_dir: &Path, frozen: bool) -> Result<()> {
6266 } ;
6367
6468 // Install each dependency
65- install_resolved ( & resolved_modules, & modules_dir, & lock_path, MODULES_DIR )
69+ install_resolved ( & resolved_modules, & modules_dir, & lock_path, & nu_env_dir , & display_name )
6670}
6771
6872/// Run an update: always re-resolve, ignoring existing lockfile.
@@ -174,6 +178,7 @@ fn install_resolved(
174178 modules : & [ ResolvedDep ] ,
175179 modules_dir : & Path ,
176180 lock_path : & Path ,
181+ overlay_dir : & Path ,
177182 display_name : & str ,
178183) -> Result < ( ) > {
179184 std:: fs:: create_dir_all ( modules_dir) ?;
@@ -218,7 +223,7 @@ fn install_resolved(
218223 eprintln ! ( "Installed {module_count} module{module_suffix} into {display_name}/" ) ;
219224
220225 write_activate_overlay (
221- modules_dir ,
226+ overlay_dir ,
222227 display_name,
223228 module_use_paths. iter ( ) . map ( |path| path. as_str ( ) ) ,
224229 ) ?;
@@ -227,19 +232,19 @@ fn install_resolved(
227232}
228233
229234fn write_activate_overlay < IM , SM > (
230- modules_dir : & Path ,
235+ overlay_dir : & Path ,
231236 display_name : & str ,
232237 module_names : IM ,
233238) -> Result < ( ) >
234239where
235240 IM : IntoIterator < Item = SM > ,
236241 SM : AsRef < str > ,
237242{
238- std:: fs:: create_dir_all ( modules_dir ) ?;
243+ std:: fs:: create_dir_all ( overlay_dir ) ?;
239244
240- let activate_path = modules_dir . join ( "activate.nu" ) ;
245+ let activate_path = overlay_dir . join ( "activate.nu" ) ;
241246 let mut activate_script = String :: from (
242- "# Generated by quiver - do not edit\n export-env {\n let modules_dir = ($env.FILE_PWD | path join)\n $env.NU_LIB_DIRS = ($env.NU_LIB_DIRS | default [] | append $modules_dir)\n }\n \n " ,
247+ "# Generated by quiver - do not edit\n export-env {\n let modules_dir = ($env.FILE_PWD | path join \" modules \" )\n $env.NU_LIB_DIRS = ($env.NU_LIB_DIRS | default [] | append $modules_dir)\n }\n \n " ,
243248 ) ;
244249
245250 for module_name in module_names {
@@ -605,7 +610,7 @@ mod tests {
605610 fn writes_activate_overlay_with_modules ( ) {
606611 let modules_dir = make_temp_dir ( "with_modules" ) ;
607612
608- write_activate_overlay ( & modules_dir, ".nu_modules " , [ "nu-foo" , "nu-bar" ] ) . unwrap ( ) ;
613+ write_activate_overlay ( & modules_dir, ".nu-env/modules " , [ "nu-foo" , "nu-bar" ] ) . unwrap ( ) ;
609614
610615 let activate = std:: fs:: read_to_string ( modules_dir. join ( "activate.nu" ) ) . unwrap ( ) ;
611616 assert ! ( activate. contains( "export use nu-foo *" ) ) ;
@@ -619,7 +624,7 @@ mod tests {
619624 fn writes_activate_overlay_without_modules ( ) {
620625 let modules_dir = make_temp_dir ( "without_modules" ) ;
621626
622- write_activate_overlay ( & modules_dir, ".nu_modules " , std:: iter:: empty :: < & str > ( ) ) . unwrap ( ) ;
627+ write_activate_overlay ( & modules_dir, ".nu-env/modules " , std:: iter:: empty :: < & str > ( ) ) . unwrap ( ) ;
623628
624629 let activate = std:: fs:: read_to_string ( modules_dir. join ( "activate.nu" ) ) . unwrap ( ) ;
625630 assert ! ( !activate. lines( ) . any( |line| line. starts_with( "export use " ) ) ) ;
@@ -745,7 +750,7 @@ version = "0.1.0"
745750 install ( & project_dir, true ) . unwrap ( ) ;
746751
747752 let activate =
748- std:: fs:: read_to_string ( project_dir. join ( ".nu_modules " ) . join ( "activate.nu" ) ) . unwrap ( ) ;
753+ std:: fs:: read_to_string ( project_dir. join ( ".nu-env " ) . join ( "activate.nu" ) ) . unwrap ( ) ;
749754 assert ! ( !activate. lines( ) . any( |line| line. starts_with( "export use " ) ) ) ;
750755 assert ! ( activate. contains( "export alias deactivate = overlay hide activate" ) ) ;
751756
0 commit comments