# bash completion for mkhint # Install: sudo cp mkhint.bash-completion /etc/bash-completion.d/mkhint _mkhintfile_completions() { local cur prev repo_dir hint_dir _init_completion || return repo_dir="/var/lib/sbopkg/SBo-danix" hint_dir="/etc/slackrepo/SBo-danix/hintfiles" local all_flags="--version -v --hintfile -f --new -n --list -l --review -R --clean -c --check -C --delete -d --no-dl -N --help -h" case "$prev" in --new|-n) local -a words=() while IFS= read -r f; do words+=("$(basename "${f%.info}")") done < <(find "$repo_dir" -mindepth 2 -maxdepth 2 -name "*.info" 2>/dev/null) COMPREPLY=($(compgen -W "${words[*]}" -- "$cur")) ;; --hintfile|-f|--delete|-d|--check|-C) local -a words=() for f in "$hint_dir"/*.hint; do [[ -f "$f" ]] && words+=("$(basename "${f%.hint}")") done COMPREPLY=($(compgen -W "${words[*]}" -- "$cur")) ;; --version|-v) local pkg="" i for (( i=1; i<${#COMP_WORDS[@]}-1; i++ )); do if [[ "${COMP_WORDS[i]}" == "--hintfile" || "${COMP_WORDS[i]}" == "-f" ]]; then pkg="${COMP_WORDS[i+1]}" break fi done if [[ -n "$pkg" ]]; then local hint_file="$hint_dir/${pkg}.hint" if [[ -f "$hint_file" ]]; then local ver ver=$(grep -m1 '^VERSION=' "$hint_file" | cut -d= -f2 | tr -d '"') [[ -n "$ver" ]] && COMPREPLY=($(compgen -W "$ver" -- "$cur")) fi fi ;; *) COMPREPLY=($(compgen -W "$all_flags" -- "$cur")) ;; esac } complete -F _mkhintfile_completions mkhint.sh mkhint