Abort install, don't clobber user files (#624)

Don't install plugins that would overwrite existing
user files, stop and tell the user to deal with it.

Close #624.
pull/662/head
Jorge Bucaran 3 years ago
parent 7a47e294b9
commit c8091b3dee
No known key found for this signature in database
GPG Key ID: E54BA3C0E646DB30

@ -145,13 +145,28 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
for plugin in $update_plugins $install_plugins
set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)]
set --local files $source/{functions,conf.d,completions}/*
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files)
for file in (string replace -- $source "" $files)
if set --local index (contains --index -- $plugin $install_plugins)
set --local user_files $fisher_path/{functions,conf.d,completions}/*
set --local conflict_files
for file in (string replace -- $source/ $fisher_path/ $files)
contains -- $file $user_files && set --append conflict_files $file
end
if set --query conflict_files[1] && set --erase install_plugins[$index]
echo -es "fisher: Cannot install \"$plugin\": please remove or move conflicting files elsewhere:\x1b[22m" \n" "$conflict_files >&2
continue
end
end
for file in (string replace -- $source/ "" $files)
command cp -Rf $source/$file $fisher_path/$file
end
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files)
contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin
contains -- $plugin $install_plugins && set --local event install || set --local event update
echo -es "Installing \x1b[1m$plugin\x1b[22m" \n" "$$plugin_files_var

Loading…
Cancel
Save