Merge pull request #100 from derekstavis/install-remove-fish-prompt

install: Remove existing fish_prompt by backuping
This commit is contained in:
Bruno 2015-10-05 18:16:22 +01:00
commit c67b0314c2
2 changed files with 44 additions and 21 deletions

View File

@ -60,6 +60,27 @@ function fish_version_compatible
return (test $major = $OMF_FISH_MIN_VER[1] -a $minor -ge $OMF_FISH_MIN_VER[2])
end
function backup_file -a file_path
test -e "$file_path"; or return 1
set -l path (dirname $file_path)
set -l file (basename $file_path)
set -l name (echo $file | cut -d. -f1)
set -l timestamp (date +%s)
set -l backup_file "$path/$name.$timestamp.copy"
report progress "Existent $file found at $path"
report progress "↳ Moving to $backup_file"
if not mv "$file_path" $backup_file 2>/dev/null
report error "Aborting: Could not backup $file_path"
end
return 0
end
function install_omf
# Grant repository URL ends with .git
set git_uri (echo $OMF_REPO_URI | sed 's/\.git//').git
@ -79,19 +100,10 @@ function install_omf
set fish_config_file "$FISH_CONFIG/config.fish"
if test -e "$fish_config_file"
set -l timestamp (date +%s)
set -l original_fish_config_file "$FISH_CONFIG/config.$timestamp.copy"
backup_file "$FISH_CONFIG/config.fish";
or mkdir -p "$FISH_CONFIG"
report progress "Existent fish config file found at $fish_config_file"
report progress "↳ Moving file to $original_fish_config_file"
if not mv "$fish_config_file" "$original_fish_config_file" 2>/dev/null
report error "Aborting: Could not backup fish config file"
end
else
mkdir -p "$FISH_CONFIG"
end
backup_file "$FISH_CONFIG/functions/fish_prompt.fish"
report progress "Adding startup code to fish config file..."

View File

@ -1,3 +1,16 @@
function __omf.destroy.restore_backup -a file_path
set -l path (dirname $file_path)
set -l file (basename $file_path)
set -l name (echo $file | cut -d. -f1)
set -l backup_file_path (echo $path/$name.*.copy | tr ' ' '\n' | sort -r | head -1)
if test -e "$backup_file_path"
mv "$backup_file_path" "$path/$file" ^/dev/null
else
rm -f "$path/$file" ^/dev/null
end
end
function omf.destroy -d "Remove Oh My Fish"
echo (omf::dim)"Removing Oh My Fish..."(omf::off)
@ -5,16 +18,14 @@ function omf.destroy -d "Remove Oh My Fish"
emit uninstall_$pkg
end
set -l fish_config $XDG_CONFIG_HOME/fish
if test "$fish_config" = "/fish"
set fish_config $HOME/.config/fish
end
set -q XDG_CONFIG_HOME;
or set -l XDG_CONFIG_HOME "$HOME/.config"
set -l localbackup (find $fish_config -regextype posix-extended -regex '^.*fish/config\.[[:digit:]]+\.copy$' |\
sort -r |head -1)
if test -n $localbackup
mv $localbackup "$fish_config/config.fish"
end
set -l fish_config_home $XDG_CONFIG_HOME/fish
set -l fish_prompt_home $fish_config_home/functions
__omf.destroy.restore_backup "$fish_config_home/config.fish"
__omf.destroy.restore_backup "$fish_prompt_home/fish_prompt.fish"
if test "$OMF_PATH" != "$HOME"
rm -rf "$OMF_PATH"