mod cargo_pkg;
mod common;
mod config;
mod npm;
mod pip;
pub use common::PackageError;
pub use config::{CargoConfig, NpmConfig, PackagesConfig, PipConfig};
use cargo_pkg::CargoHandler;
use npm::NpmHandler;
use pip::PipHandler;
use std::path::Path;
pub fn install_packages(config: &PackagesConfig, project_dir: &Path) -> Result<(), PackageError> {
if let Some(ref npm_config) = config.npm {
println!("\n Installing npm packages...");
let handler = NpmHandler::new(npm_config.clone(), project_dir.to_path_buf());
if let Err(e) = handler.install() {
eprintln!(" Warning: npm install failed: {}", e);
}
}
if let Some(ref pip_config) = config.pip {
println!("\n Installing pip packages...");
let handler = PipHandler::new(pip_config.clone(), project_dir.to_path_buf());
if let Err(e) = handler.install() {
eprintln!(" Warning: pip install failed: {}", e);
}
}
if let Some(ref cargo_config) = config.cargo {
println!("\n Installing cargo binaries...");
let handler = CargoHandler::new(cargo_config.clone());
if let Err(e) = handler.install() {
eprintln!(" Warning: cargo install failed: {}", e);
}
}
Ok(())
}