display file conflict to user

This commit is contained in:
2026-03-07 16:01:28 +01:00
parent 8487bafa57
commit a78e517163
2 changed files with 15 additions and 4 deletions

View File

@@ -5,7 +5,7 @@ use std::{
};
use globset::{Glob, GlobSet, GlobSetBuilder};
use log::warn;
use log::{error, warn};
use crate::{
file_conflict_solver::ConflictSolver,
@@ -20,7 +20,7 @@ pub fn insert_mod_to_instance(
from_mod: &ModConfig,
files: &[ModFile],
priority: isize,
) {
) -> bool {
let mut solver = ConflictSolver::new();
let mut installed_files: Vec<(ModFile, &InstalledMod)> = Vec::new();
@@ -40,7 +40,14 @@ pub fn insert_mod_to_instance(
let new_mod = InstalledMod::new(from_mod.id(), priority);
for file in files {
if let Some(conflict) = solver.add_file(file, &new_mod) {
// TODO: Return conflict
error!(
"File conflict detected at: {} between {} and {}",
conflict.rhs_file.dst().to_string_lossy(),
conflict.lhs_mod.mod_id(),
conflict.rhs_mod.mod_id()
);
return false;
}
}
@@ -64,6 +71,8 @@ pub fn insert_mod_to_instance(
for (_, installed_mod) in map {
instance.update_or_create_mod(&installed_mod);
}
true
}
pub fn files_to_install_mod(

View File

@@ -39,7 +39,9 @@ fn command_add(root_config: &RootConfig, instance_id: &str, mod_id: &str) -> any
let files = files_to_install_mod(root_config, &instance, mod_to_install)?;
insert_mod_to_instance(&mut instance, mod_to_install, &files, 0);
if !insert_mod_to_instance(&mut instance, mod_to_install, &files, 0) {
return Err(anyhow!("File conflict"));
}
instance.save_to_file()?;