Use replace action instead of explicit delete action where possible
This commit is contained in:
parent
4f08fabd34
commit
9e8214d742
31
src/main.rs
31
src/main.rs
@ -161,14 +161,29 @@ fn main() -> Result<(), String> {
|
||||
})
|
||||
.chain(once(add_action))
|
||||
.collect(),
|
||||
OldVersionPolicy::Delete => files
|
||||
.filter(|file| file_matcher.matches(file))
|
||||
.map(|file| FileAction {
|
||||
file: PathBuf::from(file),
|
||||
kind: Action::Delete,
|
||||
})
|
||||
.chain(once(add_action))
|
||||
.collect(),
|
||||
OldVersionPolicy::Delete => {
|
||||
let mut actions: Vec<_> = files
|
||||
.filter(|file| file_matcher.matches(file))
|
||||
.map(|file| {
|
||||
//special case -> file has the same name as current file, then we just need to replace it
|
||||
if file == file_name {
|
||||
FileAction {
|
||||
file: PathBuf::from(file),
|
||||
kind: Action::Replace,
|
||||
}
|
||||
} else {
|
||||
FileAction {
|
||||
file: PathBuf::from(file),
|
||||
kind: Action::Delete,
|
||||
}
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
if !actions.iter().any(|action| action.kind == Action::Replace) {
|
||||
actions.push(add_action);
|
||||
}
|
||||
actions
|
||||
},
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
Loading…
Reference in New Issue
Block a user