display file conflict to user
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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()?;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user