| [9fd196] | 1 | # bash_completion for molecuilder 
 | 
|---|
 | 2 | #
 | 
|---|
 | 3 | # gives a list of all available actions, gives list of options for the last action
 | 
|---|
 | 4 | 
 | 
|---|
 | 5 | function _molecuilder_option()
 | 
|---|
 | 6 | {
 | 
|---|
 | 7 |         local cmd="${1##*/}"
 | 
|---|
 | 8 |         local word=${COMP_WORDS[COMP_CWORD]}
 | 
|---|
 | 9 |         local line=${COMP_LINE}
 | 
|---|
 | 10 |         option=`echo $line | awk -F"--" {'print $NF'} | tr -d \ `
 | 
|---|
 | 11 |         previousoption=`echo $line | awk -F"--" {'print $(NF-1)'} | tr -d \ `
 | 
|---|
 | 12 |         #echo "current option is '$word', line is '$line', and cmd is '$cmd', last option is '$option', and last but one is '$previousoption'."
 | 
|---|
 | 13 |         COMPREPLY=()
 | 
|---|
 | 14 |         # if current option is molecuilder, give all available actions
 | 
|---|
 | 15 |         if test x"$option" = x"molecuilder"; then
 | 
|---|
 | 16 |                 # "molecuilder "
 | 
|---|
 | 17 |                 COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
 | 
|---|
 | 18 |         else
 | 
|---|
 | 19 |                 # if current argument is void, look at previous (if its not molecuilder)
 | 
|---|
 | 20 |                 if test x"$option" = x""; then
 | 
|---|
 | 21 |                         if test x"$previousoption" = x"molecuilder"; then
 | 
|---|
 | 22 |                                 # "molecuilder --"
 | 
|---|
 | 23 |                                 COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
 | 
|---|
 | 24 |                         else
 | 
|---|
 | 25 |                                 # "molecuilder --some-action --"
 | 
|---|
 | 26 |                                 COMPREPLY=($($cmd --help | grep "^'$previousoption.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
 | 
|---|
 | 27 |                                 if  test ${#COMPREPLY[*]} -eq 0; then
 | 
|---|
 | 28 |                                         # "molecuilder --some-option --"
 | 
|---|
 | 29 |                                         COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
 | 
|---|
 | 30 |                                 else
 | 
|---|
 | 31 |                                         COMPREPLY=($($cmd --help --actionname "$previousoption" | grep Option\  | awk -F"'" {'print "--"$2'} | tr -d \'))
 | 
|---|
 | 32 |                                         # if action has no options, give list of actions
 | 
|---|
 | 33 |                                         if  test ${#COMPREPLY[*]} -eq 0; then
 | 
|---|
 | 34 |                                                 COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
 | 
|---|
 | 35 |                                         fi
 | 
|---|
 | 36 |                                 fi
 | 
|---|
 | 37 |                         fi
 | 
|---|
 | 38 |                 elif test -z `echo "$word" 2>/dev/null | grep "\-\-"`; then
 | 
|---|
 | 39 |                         # "molecuilder somefile/value"
 | 
|---|
 | 40 |                         COMPREPLY=( $( compgen -W "$( ls --color=n -1 ${word}*.in ${word}*.pdb ${word}*.pcp ${word}*.psi ${word}*.data ${word}*.xyz 2>/dev/null| sed -e 's/ /\\ /g' )" -- $cur ))
 | 
|---|
 | 41 |                 else
 | 
|---|
 | 42 |                         # "molecuilder --something"
 | 
|---|
 | 43 |                         COMPREPLY=($($cmd --help | grep "^'$option.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
 | 
|---|
 | 44 |                         # check whether its an action
 | 
|---|
 | 45 |                         if test ${#COMPREPLY[*]} -eq 1; then
 | 
|---|
 | 46 |                                 # check whether it's same as option
 | 
|---|
 | 47 |                                 if test x"${COMPREPLY[0]}" = x"--$option"; then
 | 
|---|
 | 48 |                                         # "molecuilder --an-action"
 | 
|---|
 | 49 |                                         #echo "Giving help for option $option"
 | 
|---|
 | 50 |                                         COMPREPLY=($($cmd --help --actionname "$option" | grep Option\  | awk -F"'" {'print "--"$2'} | tr -d \'))
 | 
|---|
 | 51 |                                         # if action has no options, give list of actions
 | 
|---|
 | 52 |                                         if  test ${#COMPREPLY[*]} -eq 0; then
 | 
|---|
 | 53 |                                                 COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
 | 
|---|
 | 54 |                                         fi
 | 
|---|
 | 55 |                                 fi
 | 
|---|
 | 56 |                         fi
 | 
|---|
 | 57 |                         # if the "action" is unknown, it must be actually an option (segment), give all available options from previous action
 | 
|---|
 | 58 |                         if test ${#COMPREPLY[*]} -eq 0; then
 | 
|---|
 | 59 |                                 # "molecuilder --an-action --opt.."
 | 
|---|
 | 60 |                                 COMPREPLY=($($cmd --help --actionname "$previousoption" | grep Option\ | grep $option | awk -F"'" {'print "--"$2'} | tr -d \'))
 | 
|---|
 | 61 |                                 # if action has no options, give list of actions
 | 
|---|
 | 62 |                                 if  test ${#COMPREPLY[*]} -eq 0; then
 | 
|---|
 | 63 |                                         COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
 | 
|---|
 | 64 |                                 else
 | 
|---|
 | 65 |                                         #if we have a complete option, give again all available actions
 | 
|---|
 | 66 |                                         if test x"${COMPREPLY[0]}" = x"--$option"; then
 | 
|---|
 | 67 |                                                 # "molecuilder --an-action --one-of-its-options"
 | 
|---|
 | 68 |                                                 COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
 | 
|---|
 | 69 |                                         fi
 | 
|---|
 | 70 |                                 fi
 | 
|---|
 | 71 |                         fi
 | 
|---|
 | 72 |                 fi
 | 
|---|
 | 73 |         fi
 | 
|---|
 | 74 |         #echo "returning ${COMPREPLY[*]}."
 | 
|---|
 | 75 |         return 0
 | 
|---|
 | 76 | }
 | 
|---|
 | 77 | 
 | 
|---|
 | 78 | complete -F _molecuilder_option molecuilder
 | 
|---|