dotfiles script v0.5.1

- diff, edit: add support for host-specific files
- bash-completion: add support for host-specific files
This commit is contained in:
Lexi / Zoe 2019-10-06 20:18:50 +02:00
parent 154d8ea25e
commit 2d5e8bbce2
Signed by: binaryDiv
GPG Key ID: F8D4956E224DA232
1 changed files with 20 additions and 4 deletions

View File

@ -2,7 +2,7 @@
##
## binaryDiv's dotfiles management script
## Version 0.5.0
## Version 0.5.1
##
usage() {
@ -21,7 +21,9 @@ usage() {
ls [DIR] list contents of .dotfiles directory (or DIR relative to it)
(-l: list host-specific files, i.e. ~/.dotfiles/_local/HOSTNAME/DIR)
edit FILE open ~/.dotfiles/FILE in vim
(-l: open host-specific files, i.e. ~/.dotfiles/_local/HOSTNAME/DIR)
diff FILE use vimdiff to compare ~/FILE to ~/.dotfiles/FILE
(-l: compare host-specific files, i.e. ~/.dotfiles/_local/HOSTNAME/DIR)
link FILE... create a symlink from ~/FILE to ~/.dotfiles/FILE (multiple files possible)
(-q: be quiet, only print something if an error occurs)
(-l: link host-specific files, i.e. ~/FILE to ~/.dotfiles/_local/HOSTNAME/FILE)
@ -187,14 +189,18 @@ case "$cmd" in
;;
edit)
basedir=$dotfilesdir
[[ $1 = "-l" ]] && { basedir="$basedir/$dotfiles_local_prefix"; shift; }
[[ -n $1 ]] || { echo "$(basename $0) $cmd: Missing argument."; exit 1; }
vim "$dotfilesdir/$1"
vim "$basedir/$1"
;;
diff)
basedir=$dotfilesdir
[[ $1 = "-l" ]] && { basedir="$basedir/$dotfiles_local_prefix"; shift; }
[[ -n $1 ]] || { echo "$(basename $0) $cmd: Missing argument."; exit 1; }
file_A="$homedir/$1"
file_B="$dotfilesdir/$1"
file_B="$basedir/$1"
if [[ "$(realpath "$file_A")" -ef "$file_B" ]]; then
echo "$file_A is a link to $file_B"
@ -313,6 +319,12 @@ case "$cmd" in
files=($(compgen -f -X '*/@(.|..|.git)' .dotfiles/$cur))
COMPREPLY=(${files[@]#.dotfiles/})
}
_dotfiles_filenames_local() {
compopt -o filenames
dotfiles_prefix=.dotfiles/_local/$(hostname)
files=($(compgen -f -X '*/@(.|..|.git)' $dotfiles_prefix/$cur))
COMPREPLY=(${files[@]#$dotfiles_prefix/})
}
_dotfiles() {
COMPREPLY=()
local cur="${COMP_WORDS[COMP_CWORD]}"
@ -328,7 +340,11 @@ case "$cmd" in
;;
link|linkstatus)
_dotfiles_filenames
if [[ $COMP_CWORD -gt 2 && ${COMP_WORDS[2]} = "-l" ]]; then
_dotfiles_filenames_local
else
_dotfiles_filenames
fi
;;
createfrom)