diff --git a/src/main.rs b/src/main.rs index b95cbd6..e93f59b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -27,6 +27,9 @@ enum Commands { /// The modpack's modloader #[arg(long, default_value_t = modpack::ModLoader::Fabric)] modloader: modpack::ModLoader, + /// Default providers to download the mods from for the modpack (can be overridden on a per-mod basis) + #[arg(long)] + providers: Vec, }, /// Create and initialise a new mcmpmgr project in the current directory New { @@ -38,6 +41,9 @@ enum Commands { /// The modpack's modloader #[arg(long, default_value_t = modpack::ModLoader::Fabric)] modloader: modpack::ModLoader, + /// Default providers to download the mods from for the modpack (can be overridden on a per-mod basis) + #[arg(long)] + providers: Vec, }, /// Add a new mod to the modpack Add { @@ -48,8 +54,8 @@ enum Commands { providers: Vec, /// URL to download the mod from #[arg(long)] - url: Option - } + url: Option, + }, } fn main() -> Result<(), Box> { @@ -62,6 +68,7 @@ fn main() -> Result<(), Box> { mc_version, modloader, name, + providers, } => { let dir = directory.unwrap_or(std::env::current_dir()?); let pack_name = if let Some(name) = name { @@ -80,14 +87,18 @@ fn main() -> Result<(), Box> { &pack_name, dir.display() ); - let mc_modpack_meta: ModpackMeta = + let mut mc_modpack_meta: ModpackMeta = ModpackMeta::new(&pack_name, &mc_version, modloader); + for provider in providers.into_iter() { + mc_modpack_meta = mc_modpack_meta.provider(provider); + } mc_modpack_meta.init_project(&dir)?; } Commands::New { name, mc_version, modloader, + providers, } => { let dir = std::env::current_dir()?.join(PathBuf::from(&name)); println!( @@ -96,10 +107,18 @@ fn main() -> Result<(), Box> { dir.display() ); std::fs::create_dir_all(&dir)?; - let mc_modpack_meta: ModpackMeta = ModpackMeta::new(&name, &mc_version, modloader); + let mut mc_modpack_meta: ModpackMeta = + ModpackMeta::new(&name, &mc_version, modloader); + for provider in providers.into_iter() { + mc_modpack_meta = mc_modpack_meta.provider(provider); + } mc_modpack_meta.init_project(&dir)?; } - Commands::Add { name, providers, url } => { + Commands::Add { + name, + providers, + url, + } => { let mut modpack_meta = ModpackMeta::load_from_current_directory()?; let mut mod_meta = ModMeta::new(&name)?; @@ -111,7 +130,7 @@ fn main() -> Result<(), Box> { } modpack_meta = modpack_meta.add_mod(mod_meta); modpack_meta.save_current_dir_project()?; - }, + } } }; diff --git a/src/modpack.rs b/src/modpack.rs index 852a57a..df7d66b 100644 --- a/src/modpack.rs +++ b/src/modpack.rs @@ -186,7 +186,7 @@ impl ModpackMeta { let modpack_meta_file_path = directory.clone().join(PathBuf::from(MODPACK_FILENAME)); if modpack_meta_file_path.exists() { return Err(format!( - "mcmodpack.toml already exists at {}", + "{MODPACK_FILENAME} already exists at {}", modpack_meta_file_path.display() ) .into());