Compare commits
2 commits
edd363c3a6
...
61e78e9718
Author | SHA1 | Date | |
---|---|---|---|
61e78e9718 | |||
b3305e87b8 |
1 changed files with 27 additions and 6 deletions
|
@ -244,6 +244,8 @@ fn extract_mod_config<R: Read + Seek>(archive: &mut ZipArchive<R>) -> Result<(Mo
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
|
tracing::debug!(?legacy_mod_data);
|
||||||
|
|
||||||
if let Some(name) = find_archive_file(archive, "dtmt.cfg") {
|
if let Some(name) = find_archive_file(archive, "dtmt.cfg") {
|
||||||
let mut f = archive
|
let mut f = archive
|
||||||
.by_name(&name)
|
.by_name(&name)
|
||||||
|
@ -276,6 +278,24 @@ fn extract_mod_config<R: Read + Seek>(archive: &mut ZipArchive<R>) -> Result<(Mo
|
||||||
|
|
||||||
Ok((cfg, root))
|
Ok((cfg, root))
|
||||||
}
|
}
|
||||||
|
} else if let Some((mod_id, resources, root)) = legacy_mod_data {
|
||||||
|
let cfg = ModConfig {
|
||||||
|
bundled: false,
|
||||||
|
dir: PathBuf::new(),
|
||||||
|
id: mod_id.clone(),
|
||||||
|
name: mod_id,
|
||||||
|
summary: "A mod for the game Warhammer 40,000: Darktide".into(),
|
||||||
|
version: "N/A".into(),
|
||||||
|
description: None,
|
||||||
|
author: None,
|
||||||
|
image: None,
|
||||||
|
categories: Vec::new(),
|
||||||
|
packages: Vec::new(),
|
||||||
|
resources,
|
||||||
|
depends: Vec::new(),
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok((cfg, root))
|
||||||
} else {
|
} else {
|
||||||
eyre::bail!(
|
eyre::bail!(
|
||||||
"Mod needs a config file or `.mod` file. \
|
"Mod needs a config file or `.mod` file. \
|
||||||
|
@ -414,6 +434,8 @@ pub(crate) async fn import_mod(state: ActionState, info: FileInfo) -> Result<Mod
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
|
tracing::trace!(?nexus);
|
||||||
|
|
||||||
let mut archive = ZipArchive::new(data).wrap_err("Failed to open ZIP archive")?;
|
let mut archive = ZipArchive::new(data).wrap_err("Failed to open ZIP archive")?;
|
||||||
|
|
||||||
if tracing::enabled!(tracing::Level::DEBUG) {
|
if tracing::enabled!(tracing::Level::DEBUG) {
|
||||||
|
@ -428,10 +450,13 @@ pub(crate) async fn import_mod(state: ActionState, info: FileInfo) -> Result<Mod
|
||||||
let (mut mod_cfg, root) =
|
let (mut mod_cfg, root) =
|
||||||
extract_mod_config(&mut archive).wrap_err("Failed to extract mod configuration")?;
|
extract_mod_config(&mut archive).wrap_err("Failed to extract mod configuration")?;
|
||||||
tracing::info!("Importing mod {} ({})", mod_cfg.name, mod_cfg.id);
|
tracing::info!("Importing mod {} ({})", mod_cfg.name, mod_cfg.id);
|
||||||
tracing::debug!(root, ?mod_cfg);
|
|
||||||
|
|
||||||
let mod_dir = state.data_dir.join(state.mod_dir.as_ref());
|
let mod_dir = state.data_dir.join(state.mod_dir.as_ref());
|
||||||
let dest = mod_dir.join(&mod_cfg.id);
|
let dest = mod_dir.join(&mod_cfg.id);
|
||||||
|
tracing::trace!("Creating mods directory {}", dest.display());
|
||||||
|
fs::create_dir_all(&dest)
|
||||||
|
.await
|
||||||
|
.wrap_err_with(|| format!("Failed to create data directory '{}'", dest.display()))?;
|
||||||
|
|
||||||
let image = if let Some(path) = &mod_cfg.image {
|
let image = if let Some(path) = &mod_cfg.image {
|
||||||
let name = archive
|
let name = archive
|
||||||
|
@ -480,11 +505,7 @@ pub(crate) async fn import_mod(state: ActionState, info: FileInfo) -> Result<Mod
|
||||||
};
|
};
|
||||||
|
|
||||||
tracing::trace!(?image);
|
tracing::trace!(?image);
|
||||||
|
tracing::debug!(root, ?mod_cfg);
|
||||||
tracing::trace!("Creating mods directory {}", dest.display());
|
|
||||||
fs::create_dir_all(&dest)
|
|
||||||
.await
|
|
||||||
.wrap_err_with(|| format!("Failed to create data directory '{}'", dest.display()))?;
|
|
||||||
|
|
||||||
let packages = if mod_cfg.bundled {
|
let packages = if mod_cfg.bundled {
|
||||||
extract_bundled_mod(&mut archive, root, &mod_dir).wrap_err("Failed to extract mod")?
|
extract_bundled_mod(&mut archive, root, &mod_dir).wrap_err("Failed to extract mod")?
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue