diff --git a/completion/bash-completion.sh b/completion/bash-completion.sh deleted file mode 100644 index 2df8a5da..00000000 --- a/completion/bash-completion.sh +++ /dev/null @@ -1,36 +0,0 @@ -# bash completion for ponysay -*- shell-script -*- - -_ponysay() -{ - local cur prev words cword - _init_completion -n = || return - - options="--version --help --list --altlist --pony --wrap --quote --balloonlist --balloon --file ++file ++pony ++list ++altlist --all ++all" - options="$options --256-colours --tty-colours --kms-colours" - COMPREPLY=( $( compgen -W "$options" -- "$cur" ) ) - - if [ $prev = "-f" ] || [ $prev = "--pony" ] || [ $prev = "--file" ]; then - ponies=$('/usr/bin/ponysay' --onelist) - COMPREPLY=( $( compgen -W "$ponies" -- "$cur" ) ) - - elif [ $prev = "+f" ] || [ $prev = "++pony" ] || [ $prev = "++file" ]; then - extraponies=$('/usr/bin/ponysay' ++onelist) - COMPREPLY=( $( compgen -W "$extraponies" -- "$cur" ) ) - - elif [ $prev = "-q" ] || [ $prev = "--quote" ]; then - quoters=$('/usr/bin/ponysay' --quoters) - COMPREPLY=( $( compgen -W "$quoters" -- "$cur" ) ) - - elif [ $prev = "-b" ] || [ $prev = "--balloon" ] || [ $prev = "--bubble" ]; then - balloons=$('/usr/bin/ponysay' --balloonlist) - COMPREPLY=( $( compgen -W "$balloons" -- "$cur" ) ) - - elif [ $prev = "-W" ] || [ $prev = "--wrap" ]; then - cols=$(( `stty size | cut -d ' ' -f 2` - 10 )) - COMPREPLY=( $cols $(( $cols / 2 )) 100 60 none inherit ) - - fi -} - -complete -o default -F _ponysay ponysay - diff --git a/completion/fish-completion.fish b/completion/fish-completion.fish deleted file mode 100644 index b111bc15..00000000 --- a/completion/fish-completion.fish +++ /dev/null @@ -1,27 +0,0 @@ -# fish completion for ponysay -*- shell-script -*- -# Author: Elis Axelsson - -set -g ponies ('/usr/bin/ponysay' --onelist) -set -g xponies ('/usr/bin/ponysay' ++onelist) -set -g quoters ('/usr/bin/ponysay' --quoters) -set -g balloons ('/usr/bin/ponysay' --balloonlist) - - -## TODO: update with options [see info manual]: +f +l +L ++list ++altlist ++file --file ++pony {-A, +A, -V, -K, -X}(with alternative) -complete --command ponysay --short-option h --long-option help --description 'help of ponysay' -complete --command ponysay --short-option v --long-option version --description 'version of ponysay' -complete --command ponysay --short-option l --long-option list --description 'list pony names' -complete --command ponysay --short-option L --long-option altlist --description 'list pony names with alternatives' -complete --command ponysay --short-option B --long-option balloonlist --description 'list balloon style names' -complete --command ponysay --short-option f --long-option pony --arguments "$ponies" --description 'pony' -#complete --command ponysay --short-option F --arguments "$xponies" --desc#ription 'extra pony' -complete --command ponysay --short-option q --long-option quote --arguments "$quoters" --no-files --description 'pony' -complete --command ponysay --short-option b --long-option balloon --arguments "$balloons" --no-files --description 'balloon style' -complete --command ponysay --short-option W --long-option wrap --arguments 'Integer' --description 'specify the column when the message should be wrapped' ## TODO arguments `none` and `inherit` should be suggested -complete --command ponysay --arguments 'MESSAGE' - - -set -e ponies -set -e xponies -set -e quoters -set -e balloons diff --git a/completion/zsh-completion.zsh b/completion/zsh-completion.zsh deleted file mode 100644 index 35c72d66..00000000 --- a/completion/zsh-completion.zsh +++ /dev/null @@ -1,33 +0,0 @@ -# zsh completion for ponysay -*- shell-script -*- -#compdef ponysay ponythink -_opts=( - '(--version -v)'{-v,--version}'[Show version and exit]' - '(-h --help)'{-h,--help}'[Show this help and exit]' - '(-l --list)'{-l,--list}'[list pony names]' - '(-L --altlist)'{-L,--altlist}'[list pony names with alternatives]' - '(+l ++list)'{+l,++list}'[list extra pony names]' - '(+L ++altlist)'{+L,++altlist}'[list extra pony names with alternatives]' - '(-B --balloonlist)'{-B,--balloonlist}'[list balloon style names]' - '(-b --ballon)'{-b,--balloon}'[Selecy a balloon style]: :_path_files -W '/usr/share/ponysay/balloons' -g "*(\:r)"' - '(-c --compact)'{-c,--compat}'[Compress messages.]' - '(-W --wrap)'{-W,--wrap}'[The screen column where the message should be wrapped]' # TODO arguments `none` and `inherit` should be suggested - ) -_tty_select=( - '(-q --quite)'{-q,--quote}'[Select ponies for MLP:FiM quotes]: :_path_files -W '/usr/share/ponysay/ttyponies' -g "*(\:r)"' - '(-f --pony)'{-f,--pony}'[select pony]: :_path_files -W '/usr/share/ponysay/ttyponies/' -g "*(\:r)"' - '(+f ++pony)'{+f,++pony}'[Select a extra pony]: :_path_files -W '/usr/share/ponysay/extrattyponies' -g "*(\:r)"' - ) -_select=( - '(-q --quite)'{-q,--quote}'[Select ponies for MLP:FiM quotes]: :_path_files -W '/usr/share/ponysay/ponies' -g "*(\:r)"' - '(-f --pony)'{-f,--pony}'[select pony]: :_path_files -W '/usr/share/ponysay/ponies/' -g "*(\:r)"' - '(+f ++pony)'{+f,++pony}'[Select a extra pony]: :_path_files -W '/usr/share/ponysay/extraponies' -g "*(\:r)"' - ) -if [[ "${(f)"$(tty)"##*/}" == "tty*" ]]; then - _arguments \ - "$_opts[@]" \ - "$_tty_select[@]" -else - _arguments \ - "$_opts[@]" \ - "$_select[@]" -fi diff --git a/setup.py b/setup.py index a3be893c..cde061b3 100755 --- a/setup.py +++ b/setup.py @@ -357,6 +357,8 @@ class Setup(): if fileout is not None: fileout.close() if filein is not None: filein .close() + (fileout, filein) = (None, None) + env = conf['custom-env-python'] if env is None: (out, err) = Popen(['env', 'python', '--version'], stdout=PIPE, stderr=PIPE).communicate() @@ -371,7 +373,6 @@ class Setup(): mane = True break if mane: - (fileout, filein) = (None, None) try: fileout = open('ponysay.install', 'wb+') filein = open('ponysay.py', 'rb') @@ -432,16 +433,44 @@ class Setup(): if ext is not None: compress('ponysay.pdf', 'ponysay.pdf.' + ext, ext) + for command in commands: + source = 'completion/template' + sourceed = 'completion/template.%s' % (command) + try: + fileout = open(sourceed, 'wb+') + filein = open(source, 'rb') + data = filein.read().decode('utf-8', 'replace') + + if data.startswith('(ponysay\n'): + data = ('(%s ' % command) + data[len('(ponysay\n'):] + elif data.startswith('(ponysay '): + data = ('(%s ' % command) + data[len('(ponysay '):] + elif '\n(ponysay\n' in data: + edpos = data.find('\n(ponysay\n') + data = data[:edpos] + ('\n(%s\n' % command) + data[edpas + len('\n(ponysay\n'):] + elif '\n(ponysay ' in data: + data = data[:edpos] + ('\n(%s ' % command) + data[edpas + len('\n(ponysay '):] + else: + raise Exception('File %s does not look like expected' % source) + + fileout.write(data.encode('utf-8')) + finally: + if fileout is not None: fileout.close() + if filein is not None: filein .close() + for shell in [item[0] for item in shells]: if conf[shell] is not None: - src = 'completion/%s-completion.%s' % (shell, 'sh' if shell == 'bash' else shell) for command in commands: + sourceed = 'completion/template.%s' % (command) + generated = 'completion/%s-completion.%s' % (shell, command) + generatorcmd = './completion/auto-auto-complete.py %s --output %s --source %s' % (shell, generated, sourceed) + Popen(generatorcmd.split(' ')).communicate() if conf[command] is not None: - dest = src + '.' + command + dest = generated + '.install' (fileout, filein) = (None, None) try: fileout = open(dest, 'wb+') - filein = open(src, 'rb') + filein = open(generated, 'rb') data = filein.read().decode('utf-8', 'replace') data = data.replace('/usr/bin/ponysay', conf[command]) @@ -512,7 +541,7 @@ class Setup(): if conf[shell] is not None: for command in commands: if conf[command] is not None: - src = 'completion/%s-completion.%s.%s' % (shell, 'sh' if shell == 'bash' else shell, command) + src = 'completion/%s-completion.%s.install' % (shell, command) dest = conf[shell].replace('ponysay', command) self.cp(False, src, [dest]) if conf['pdf'] is not None: @@ -653,7 +682,8 @@ class Setup(): files.append('manuals/manpage%s.%s.%s' % (man, str(sec), comp)) for shell in [item[0] for item in shells]: for command in commands: - files.append('completion/%s-completion.%s.%s' % (shell, 'sh' if shell == 'bash' else shell, command)) + files.append('completion/%s-completion.%s' % (shell, command)) + files.append('completion/%s-completion.%s.install' % (shell, command)) self.removeLists(files, dirs) print() @@ -670,6 +700,9 @@ class Setup(): for shell in [item[0] for item in shells]: files.append('completion/%s-completion.%s.install' % (shell, 'sh' if shell == 'bash' else shell)) files.append('completion/%s-completion-think.%s' % (shell, 'sh' if shell == 'bash' else shell)) + for shell in [item[0] for item in shells]: + for command in commands: + files.append('completion/%s-completion.%s.%s' % (shell, 'sh' if shell == 'bash' else shell, command)) self.removeLists(files, dirs) print()