mirror of
https://github.com/WarrenHood/MCModpackManager.git
synced 2025-04-29 23:04:58 +01:00
Allow for specifying default modpack providers when initializing a new project
This commit is contained in:
parent
077fadabbf
commit
64bd74c2de
31
src/main.rs
31
src/main.rs
|
@ -27,6 +27,9 @@ enum Commands {
|
||||||
/// The modpack's modloader
|
/// The modpack's modloader
|
||||||
#[arg(long, default_value_t = modpack::ModLoader::Fabric)]
|
#[arg(long, default_value_t = modpack::ModLoader::Fabric)]
|
||||||
modloader: modpack::ModLoader,
|
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<ModProvider>,
|
||||||
},
|
},
|
||||||
/// Create and initialise a new mcmpmgr project in the current directory
|
/// Create and initialise a new mcmpmgr project in the current directory
|
||||||
New {
|
New {
|
||||||
|
@ -38,6 +41,9 @@ enum Commands {
|
||||||
/// The modpack's modloader
|
/// The modpack's modloader
|
||||||
#[arg(long, default_value_t = modpack::ModLoader::Fabric)]
|
#[arg(long, default_value_t = modpack::ModLoader::Fabric)]
|
||||||
modloader: modpack::ModLoader,
|
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<ModProvider>,
|
||||||
},
|
},
|
||||||
/// Add a new mod to the modpack
|
/// Add a new mod to the modpack
|
||||||
Add {
|
Add {
|
||||||
|
@ -48,8 +54,8 @@ enum Commands {
|
||||||
providers: Vec<ModProvider>,
|
providers: Vec<ModProvider>,
|
||||||
/// URL to download the mod from
|
/// URL to download the mod from
|
||||||
#[arg(long)]
|
#[arg(long)]
|
||||||
url: Option<String>
|
url: Option<String>,
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() -> Result<(), Box<dyn Error>> {
|
fn main() -> Result<(), Box<dyn Error>> {
|
||||||
|
@ -62,6 +68,7 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||||
mc_version,
|
mc_version,
|
||||||
modloader,
|
modloader,
|
||||||
name,
|
name,
|
||||||
|
providers,
|
||||||
} => {
|
} => {
|
||||||
let dir = directory.unwrap_or(std::env::current_dir()?);
|
let dir = directory.unwrap_or(std::env::current_dir()?);
|
||||||
let pack_name = if let Some(name) = name {
|
let pack_name = if let Some(name) = name {
|
||||||
|
@ -80,14 +87,18 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||||
&pack_name,
|
&pack_name,
|
||||||
dir.display()
|
dir.display()
|
||||||
);
|
);
|
||||||
let mc_modpack_meta: ModpackMeta =
|
let mut mc_modpack_meta: ModpackMeta =
|
||||||
ModpackMeta::new(&pack_name, &mc_version, modloader);
|
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)?;
|
mc_modpack_meta.init_project(&dir)?;
|
||||||
}
|
}
|
||||||
Commands::New {
|
Commands::New {
|
||||||
name,
|
name,
|
||||||
mc_version,
|
mc_version,
|
||||||
modloader,
|
modloader,
|
||||||
|
providers,
|
||||||
} => {
|
} => {
|
||||||
let dir = std::env::current_dir()?.join(PathBuf::from(&name));
|
let dir = std::env::current_dir()?.join(PathBuf::from(&name));
|
||||||
println!(
|
println!(
|
||||||
|
@ -96,10 +107,18 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||||
dir.display()
|
dir.display()
|
||||||
);
|
);
|
||||||
std::fs::create_dir_all(&dir)?;
|
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)?;
|
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 modpack_meta = ModpackMeta::load_from_current_directory()?;
|
||||||
|
|
||||||
let mut mod_meta = ModMeta::new(&name)?;
|
let mut mod_meta = ModMeta::new(&name)?;
|
||||||
|
@ -111,7 +130,7 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||||
}
|
}
|
||||||
modpack_meta = modpack_meta.add_mod(mod_meta);
|
modpack_meta = modpack_meta.add_mod(mod_meta);
|
||||||
modpack_meta.save_current_dir_project()?;
|
modpack_meta.save_current_dir_project()?;
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -186,7 +186,7 @@ impl ModpackMeta {
|
||||||
let modpack_meta_file_path = directory.clone().join(PathBuf::from(MODPACK_FILENAME));
|
let modpack_meta_file_path = directory.clone().join(PathBuf::from(MODPACK_FILENAME));
|
||||||
if modpack_meta_file_path.exists() {
|
if modpack_meta_file_path.exists() {
|
||||||
return Err(format!(
|
return Err(format!(
|
||||||
"mcmodpack.toml already exists at {}",
|
"{MODPACK_FILENAME} already exists at {}",
|
||||||
modpack_meta_file_path.display()
|
modpack_meta_file_path.display()
|
||||||
)
|
)
|
||||||
.into());
|
.into());
|
||||||
|
|
Loading…
Reference in a new issue