diff options
Diffstat (limited to 'src/dmtool.bash')
-rw-r--r-- | src/dmtool.bash | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/src/dmtool.bash b/src/dmtool.bash deleted file mode 100644 index ffc75f7..0000000 --- a/src/dmtool.bash +++ /dev/null @@ -1,139 +0,0 @@ -# bash completion file for dmtool - -# Modified from bash completion for password-store - -_dmtool_complete_entries () { - local prefix1="${HOME}/.dmtool/" - prefix1="${prefix1%/}/" - local prefix2="/usr/share/dmtool/" - prefix2="${prefix2%/}/" - local suffix=".json" - local autoexpand=${1:-0} - - local IFS=$'\n' - local items=($(compgen -f $prefix1$cur)) - items+=($(compgen -f $prefix2$cur)) - - # Remember the value of the first item, to see if it is a directory. If - # it is a directory, then don't add a space to the completion - local firstitem="" - # Use counter, can't use ${#items[@]} as we skip hidden directories - local i=0 item - - for item in ${items[@]}; do - [[ $item =~ /\.[^/]*$ ]] && continue - - # if there is a unique match, and it is a directory with one entry - # autocomplete the subentry as well (recursively) - if [[ ${#items[@]} -eq 1 && $autoexpand -eq 1 ]]; then - while [[ -d $item ]]; do - local subitems=($(compgen -f "$item/")) - local filtereditems=( ) item2 - for item2 in "${subitems[@]}"; do - [[ $item2 =~ /\.[^/]*$ ]] && continue - filtereditems+=( "$item2" ) - done - if [[ ${#filtereditems[@]} -eq 1 ]]; then - item="${filtereditems[0]}" - else - break - fi - done - fi - - # append / to directories - [[ -d $item ]] && item="$item/" - - item="${item%$suffix}" - local prefix1ed="${item#$prefix1}" - COMPREPLY+=("${prefix1ed#$prefix2}") - if [[ $i -eq 0 ]]; then - firstitem=$item - fi - let i+=1 - done - - # The only time we want to add a space to the end is if there is only - # one match, and it is not a directory - if [[ $i -gt 1 || ( $i -eq 1 && -d $firstitem ) ]]; then - compopt -o nospace - fi -} - -_dmtool_skills() -{ - echo -e "athletics\nacrobatics\nstealth\narcana\nhistory\ninvestigation\nnature\nreligion\ninsight\nmedicine\nperception\nsurvival\ndeception\nintimidation\nperformance\npersuasion\nsleight of hand\nanimal handling" -} - -_dmtool_abilities() -{ - echo -e "str\ndex\ncon\nint\nwis\ncha" -} - -_dmtool_complete_skills_abilities() -{ - local IFS=$'\n' - COMPREPLY+=($(compgen -W "$(_dmtool_skills)" -- ${cur})) - COMPREPLY+=($(compgen -W "$(_dmtool_abilities)" -- ${cur})) -} - -_dmtool() -{ - COMPREPLY=() - local cur="${COMP_WORDS[COMP_CWORD]}" - local commands="ls cp mkdir mv rm attacks roll damage heal reset set edit add del help" - if [[ $COMP_CWORD -gt 1 ]]; then - local lastarg="${COMP_WORDS[$COMP_CWORD-1]}" - case "${COMP_WORDS[1]}" in - ls|mkdir|rm|reset) - _dmtool_complete_entries - ;; - cp|mv|add) - if [[ $COMP_CWORD -le 3 ]]; then - _dmtool_complete_entries - fi - ;; - attacks|roll|damage|heal|set|edit|del) - if [[ $COMP_CWORD -le 2 ]]; then - _dmtool_complete_entries - else - case "${COMP_WORDS[1]}" in - roll) - _dmtool_complete_skills_abilities - # Add in attacks - local IFS=$'\n' - opts="$(${COMP_WORDS[0]} attacks ${COMP_WORDS[2]})" - COMPREPLY+=($(compgen -W "$opts" -- ${cur})) - ;; - damage) - COMPREPLY+=($(compgen -W "--magical -m --silvered -s --adamantine -a" -- ${cur})) - if [[ $COMP_CWORD -eq 4 ]]; then - COMPREPLY+=($(compgen -W "slashing piercing bludgeoning poison acid fire cold radiant necrotic lightning thunder force psychic" -- ${cur})) - fi - ;; - set) - if [[ $COMP_CWORD -eq 3 ]]; then - _dmtool_complete_skills_abilities - COMPREPLY+=($(compgen -W "proficiency name" -- ${cur})) - elif [[ $COMP_CWORD -eq 4 ]]; then - local skills="$(_dmtool_skills)" - if [[ "$skills" =~ "$lastarg" ]]; then - COMPREPLY+=($(compgen -W "none proficient expert" -- ${cur})) - fi - fi - ;; - del) - #TODO: Add items and spells - _dmtool_complete_skills_abilities - ;; - esac - fi - ;; - esac - else - COMPREPLY+=($(compgen -W "${commands}" -- ${cur})) - _dmtool_complete_entries 1 - fi -} - -complete -o filenames -F _dmtool dmtool |