diff --git a/flake.nix b/flake.nix index d291ef1..38d2ff3 100644 --- a/flake.nix +++ b/flake.nix @@ -17,6 +17,7 @@ src = self; installPhase = '' install -m 755 -D gis $out/bin/gis + install -m 644 -D gis_completion.bash $out/share/bash-completion/completions/gis ''; }; default = self.packages.${system}.gis; diff --git a/gis_completion.bash b/gis_completion.bash new file mode 100644 index 0000000..46a9642 --- /dev/null +++ b/gis_completion.bash @@ -0,0 +1,16 @@ +function _gis_completion { + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + if [[ ${prev} == -p ]] || [[ ${prev} == --path ]]; then + OLDIFS=$IFS + IFS=' +' + COMPREPLY=( $(compgen -d -- "${cur}") ) + IFS=$OLDIFS + else + args="--help --path fetch pull" + COMPREPLY=( $(compgen -W "${args}" -- "${cur}") ) + fi +} + +complete -o filenames -F _gis_completion gis diff --git a/install.bash b/install.bash index 83b6f83..28cac40 100755 --- a/install.bash +++ b/install.bash @@ -9,13 +9,16 @@ function _add_to_config { # Link files basedir="$(dirname "$(realpath "$0")")" -mkdir -p ~/.local/bin +mkdir -p ~/.local/{bin,share/bash-completion/completions} ln -frs "${basedir}/gis" ~/.local/bin/gis echo "Created link '~/.local/bin/gis'" +ln -frs "${basedir}/gis_completion.bash" ~/.local/share/bash-completion/completions/gis +echo "Created link '~/.local/share/bash-completion/completions/gis'" # Modify bashrc touch ~/.bashrc _add_to_config "export PATH=\$PATH:${HOME}/.local/bin" +_add_to_config "source ${HOME}/.local/share/bash-completion/completions/gis" echo "Updated '~/.bashrc'" echo diff --git a/install.zsh b/install.zsh index f1531cf..55574d7 100755 --- a/install.zsh +++ b/install.zsh @@ -12,10 +12,15 @@ basedir="$(dirname "$(realpath "$0")")" mkdir -p ~/.local/{bin,share/bash-completion/completions} ln -frs "${basedir}/gis" ~/.local/bin/gis echo "Created link '~/.local/bin/gis'" +ln -frs "${basedir}/gis_completion.bash" ~/.local/share/bash-completion/completions/gis +echo "Created link '~/.local/share/bash-completion/completions/gis'" # Modify config touch ~/.zshrc _add_to_config "export PATH=\$PATH:${HOME}/.local/bin" +_add_to_config "autoload -U +X compinit && compinit" +_add_to_config "autoload -U +X bashcompinit && bashcompinit" +_add_to_config "source /home/${USER}/.local/share/bash-completion/completions/gis" echo "Updated '~/.zshrc'" echo