dotfiles script v0.3.0: added bash-completion

This commit is contained in:
Lexi / Zoe 2019-01-05 02:50:50 +01:00
parent 801cabcba4
commit 885c75654f
Signed by: binaryDiv
GPG Key ID: F8D4956E224DA232
2 changed files with 48 additions and 1 deletions

7
.bash_completion Normal file
View File

@ -0,0 +1,7 @@
# ~/.bash_completion - Custom bash auto completions
# Enable bash completion for dotfiles manager (if installed)
if command -v dotfiles &>/dev/null; then
source <(dotfiles bash-completion)
fi

View File

@ -2,7 +2,7 @@
## ##
## binaryDiv's dotfiles management script ## binaryDiv's dotfiles management script
## Version 0.2.0 ## Version 0.3.0
## ##
usage() { usage() {
@ -125,6 +125,46 @@ case "$cmd" in
git -C "$dotfilesdir" pull "$@" git -C "$dotfilesdir" pull "$@"
;; ;;
bash-completion)
cat <<- 'END_OF_BASHCOMPLETION'
_dotfiles_filenames() {
compopt -o filenames
files=($(compgen -f -X '*/@(.|..|.git)' .dotfiles/$cur))
COMPREPLY=(${files[@]#.dotfiles/})
}
_dotfiles() {
COMPREPLY=()
local cur="${COMP_WORDS[COMP_CWORD]}"
local commands="help install ls diff link git pull"
local gitcommands="add commit diff fetch log pull push rebase status"
if [[ $COMP_CWORD -eq 1 ]]; then
COMPREPLY=($(compgen -W "$commands" -- $cur))
else
case "${COMP_WORDS[1]}" in
ls|diff)
[[ $COMP_CWORD -eq 2 ]] && _dotfiles_filenames
;;
link)
_dotfiles_filenames
;;
git)
if [[ $COMP_CWORD -eq 2 ]]; then
COMPREPLY=($(compgen -W "$gitcommands" -- ${cur}))
else
_dotfiles_filenames
fi
;;
esac
fi
}
complete -F _dotfiles dotfiles
END_OF_BASHCOMPLETION
;;
*) *)
echo "Unknown command '$cmd', use 'help' to show all commands." echo "Unknown command '$cmd', use 'help' to show all commands."
exit 1 exit 1