skipped 60 lines 61 61 ("sh", "-c") 62 62 }; 63 63 64 + // assign the value of options.current_dir to current_dir 64 65 let status = Command::new(sh) 65 66 .arg(sh_flag) 66 67 .arg(args.join(" ")) skipped 17 lines 84 85 } 85 86 86 87 pub fn run(app_args: &args::AppArgs) { 88 + if args::COMMANDS_TO_FORWARD.contains(&app_args.command.as_str()) { 89 + let pm = install::guess_package_manager(&app_args.change_dir); 90 + 91 + if pm.is_none() { 92 + eprintln!("Aborted."); 93 + exit(1); 94 + } 95 + 96 + run_command( 97 + &[&pm.unwrap(), &app_args.command, &app_args.forwared], 98 + &RunOptions { 99 + current_dir: app_args.change_dir.clone(), 100 + envs: HashMap::new(), 101 + }, 102 + ); 103 + return; 104 + } 105 + 87 106 let pkg_paths = find_closest_files(&app_args.change_dir, "package.json", true); 88 107 let pkg_path = if pkg_paths.is_empty() { 89 108 eprintln!("No package.json found"); skipped 51 lines 141 160 .keys() 142 161 .map(|k| k.as_str()) 143 162 .collect::<Vec<&str>>(); 144 - script_name = 145 - prompt::select("Select an npm script to run", names_vec).expect("nothing was selected"); 163 + script_name = match prompt::select("Select an npm script to run", names_vec) { 164 + Some(name) => name, 165 + None => { 166 + println!("No script selected."); 167 + return; 168 + } 169 + }; 146 170 forwarded = " ".to_string(); 147 - forwarded.push_str(&prompt::input("Enter arguments to pass to the script")); 148 - } 149 - 150 - // Run npm install if the script_name is "install" 151 - if ["install", "add", "remove"].contains(&script_name.as_str()) { 152 - let pm = install::guess_package_manager(&execute_dir); 153 - 154 - if pm.is_none() { 155 - eprintln!("No package manager found."); 156 - exit(1); 157 - } 158 - 159 - run_command( 160 - &[&pm.unwrap(), &script_name, &forwarded], 161 - &RunOptions { 162 - current_dir: execute_dir, 163 - envs: HashMap::new(), 171 + forwarded.push_str( 172 + match &prompt::input("Enter arguments to pass to the script") { 173 + Some(args) => args, 174 + None => { 175 + println!("Aborted."); 176 + return; 177 + } 164 178 }, 165 179 ); 166 - return; 167 180 } 168 181 169 182 let npm_script = scripts skipped 53 lines