1use std::path::Path;
2use std::path::PathBuf;
3
4pub fn run(dev_tools_dir: &Path, tool: &str, packages: &[&str]) -> color_eyre::Result<PathBuf> {
10 let dev_tools_repo_dir = dev_tools_dir.join(tool);
11
12 std::fs::create_dir_all(&dev_tools_repo_dir)?;
13
14 let mut cmd_args = vec!["install"];
15 if cfg!(debug_assertions) {
16 cmd_args.push("--silent");
17 }
18 let dev_tools_repo_dir_bind = dev_tools_repo_dir.to_string_lossy();
19 cmd_args.extend_from_slice(&["--prefix", &dev_tools_repo_dir_bind]);
20 cmd_args.extend_from_slice(packages);
21
22 ytil_cmd::silent_cmd("npm").args(cmd_args).status()?.exit_ok()?;
23
24 Ok(dev_tools_repo_dir.join("node_modules").join(".bin"))
25}