dotfiles script v0.4.4

- link: check if file already exists and is equal, replace file with
  link if wanted
- install: improve checks for .bash_completion scripts
This commit is contained in:
Lexi / Zoe 2019-04-30 19:59:51 +02:00
parent 31ceba56dc
commit 4cc7c408fd
1 changed files with 27 additions and 10 deletions

View File

@ -2,7 +2,7 @@
##
## binaryDiv's dotfiles management script
## Version 0.4.3
## Version 0.4.4
##
usage() {
@ -78,18 +78,20 @@ case "$cmd" in
# Enable user-defined bash completion per directory
bashcompletion_filename=.bash_completion
if [[ ! -e "$homedir/$bashcompletion_filename" ]]; then
if [[ ! -e "$homedir/$bashcompletion_filename" ]] ||
[[ ! "$(realpath "$homedir/$bashcompletion_filename")" -ef "$dotfilesdir/$bashcompletion_filename" ]];
then
echo "* Installing user-defined bash completion (~/.bash_completion.d/)"
"$0" link -q "$bashcompletion_filename" &&
show_bash_restart_info=1
elif [[ ! "$(realpath "$homedir/$bashcompletion_filename")" -ef "$dotfilesdir/$bashcompletion_filename" ]]; then
echo "! Warning: File $homedir/$bashcompletion_filename already exists but is NOT a link to $dotfilesdir/$bashcompletion_filename"
fi
mkdir -p "$homedir/.bash_completion.d"
# Activate dotfiles bash completion
bashcompletion_dotfiles_filename=.bash_completion.d/10-dotfiles.sh
if [[ ! -e "$homedir/$bashcompletion_dotfiles_filename" ]]; then
if [[ ! -e "$homedir/$bashcompletion_dotfiles_filename" ]] ||
[[ ! "$(realpath "$homedir/$bashcompletion_dotfiles_filename")" -ef "$dotfilesdir/$bashcompletion_dotfiles_filename" ]];
then
echo "* Installing bash completion for dotfiles script"
"$0" link -q "$bashcompletion_dotfiles_filename" &&
show_bash_restart_info=1
@ -190,15 +192,30 @@ case "$cmd" in
if [[ ! -e $file_dotfiles ]]; then
echo "! $file_dotfiles: target file does not exist"
exit 1
elif [[ -e $file_home ]]; then
if [[ ! "$(realpath "$file_home")" -ef "$file_dotfiles" ]]; then
fi
if [[ -e $file_home ]]; then
if [[ "$(realpath "$file_home")" -ef "$file_dotfiles" ]]; then
# Target is already a link to the correct file
continue
fi
if cmp --silent "$file_home" "$file_dotfiles"; then
echo "! $file_home already exists and is equal to $file_dotfiles"
read -p " Delete $file_home and create link? [y/N] " -r
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
# Don't delete file
continue
fi
rm "$file_home" || exit 1
else
echo "! $file_home already exists but is NOT a link to $file_dotfiles, please fix manually"
exit 1
fi
else
[[ $QUIET ]] || echo "* Creating link $file_home -> $file_dotfiles"
ln -sr "$file_dotfiles" "$file_home" || exit 1
fi
[[ $QUIET ]] || echo "* Creating link $file_home -> $file_dotfiles"
ln -sr "$file_dotfiles" "$file_home" || exit 1
done
;;