mirror of
https://github.com/erkin/ponysay.git
synced 2024-11-23 04:47:59 +01:00
Merge
This commit is contained in:
commit
b46c13a16e
4 changed files with 82 additions and 57 deletions
20
Makefile
20
Makefile
|
@ -136,16 +136,20 @@ uninstall-old:
|
||||||
if [ -d "$(INSTALLDIR)/lib/ponysay/pq4ps-list.pl" ]; then unlink "$(INSTALLDIR)/lib/ponysay/pq4ps-list.pl" ; fi
|
if [ -d "$(INSTALLDIR)/lib/ponysay/pq4ps-list.pl" ]; then unlink "$(INSTALLDIR)/lib/ponysay/pq4ps-list.pl" ; fi
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
if [ -f "truncater" ]; then rm -f "truncater" ; fi
|
if [ -f "truncater" ]; then rm -f "truncater" ; fi
|
||||||
if [ -f "completion/bash-completion-think.sh" ]; then rm -f "completion/bash-completion-think.sh" ; fi
|
if [ -f "completion/bash-completion-think.sh" ]; then rm -f "completion/bash-completion-think.sh" ; fi
|
||||||
if [ -f "completion/fish-completion-think.fish" ]; then rm -f "completion/fish-completion-think.fish"; fi
|
if [ -f "completion/fish-completion-think.fish" ]; then rm -f "completion/fish-completion-think.fish" ; fi
|
||||||
if [ -f "completion/zsh-completion-think.zsh" ]; then rm -f "completion/zsh-completion-think.zsh" ; fi
|
if [ -f "completion/zsh-completion-think.zsh" ]; then rm -f "completion/zsh-completion-think.zsh" ; fi
|
||||||
if [ -f "manuals/manpage.6.gz" ]; then rm -f "manuals/manpage.6.gz" ; fi
|
if [ -f "completion/bash-completion.sh.install" ]; then rm -f "completion/bash-completion.sh.install" ; fi
|
||||||
if [ -f "manuals/manpage.es.6.gz" ]; then rm -f "manuals/manpage.es.6.gz" ; fi
|
if [ -f "completion/fish-completion.fish.install" ]; then rm -f "completion/fish-completion.fish.install"; fi
|
||||||
if [ -f "ponysay.info.gz" ]; then rm -f "ponysay.info.gz" ; fi
|
if [ -f "completion/zsh-completion.zsh.install" ]; then rm -f "completion/zsh-completion.zsh.install" ; fi
|
||||||
|
if [ -f "manuals/manpage.6.gz" ]; then rm -f "manuals/manpage.6.gz" ; fi
|
||||||
|
if [ -f "manuals/manpage.es.6.gz" ]; then rm -f "manuals/manpage.es.6.gz" ; fi
|
||||||
|
if [ -f "ponysay.info.gz" ]; then rm -f "ponysay.info.gz" ; fi
|
||||||
|
if [ -f "ponysay.py.install" ]; then rm -f "ponysay.py.install" ; fi
|
||||||
|
|
||||||
clean-old:
|
clean-old:
|
||||||
if [ -f "ponysaytruncater" ]; then rm -f "ponysaytruncater" ; fi
|
if [ -f "ponysaytruncater" ]; then rm -f "ponysaytruncater"; fi
|
||||||
|
|
||||||
|
|
||||||
## Scripts for maintainers
|
## Scripts for maintainers
|
||||||
|
|
|
@ -8,28 +8,18 @@ _ponysay()
|
||||||
options='-v -h -l -f -W -q'
|
options='-v -h -l -f -W -q'
|
||||||
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
|
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
|
||||||
|
|
||||||
if [ $prev = "-f" ]; then
|
if [ $prev = "-f" ]; then
|
||||||
COMPREPLY=()
|
ponies=$('/usr/bin/ponysay.py' --onelist)
|
||||||
|
COMPREPLY=( $( compgen -W "$ponies" -- "$cur" ) )
|
||||||
|
|
||||||
sysponies=/usr/share/ponysay/ponies/
|
elif [ $prev = "-q" ]; then
|
||||||
usrponies=~/.local/share/ponysay/ponies/
|
quoters=$('/usr/bin/ponysay.py' --quoters)
|
||||||
if [[ $TERM = "linux" ]]; then
|
COMPREPLY=( $( compgen -W "$quoters" -- "$cur" ) )
|
||||||
sysponies=/usr/share/ponysay/ttyponies/
|
|
||||||
usrponies=~/.local/share/ponysay/ttyponies/
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -d $sysponies ] && COMPREPLY+=( $( compgen -W "$(ls --color=no $sysponies | sed -e 's/.pony//g')" -- "$cur" ) )
|
|
||||||
[ -d $usrponies ] && COMPREPLY+=( $( compgen -W "$(ls --color=no $usrponies | sed -e 's/.pony//g')" -- "$cur" ) )
|
|
||||||
|
|
||||||
elif [ $prev = "-W" ]; then
|
elif [ $prev = "-W" ]; then
|
||||||
cols=$(( `stty size | cut -d ' ' -f 2` - 10 ))
|
cols=$(( `stty size | cut -d ' ' -f 2` - 10 ))
|
||||||
COMPREPLY=( $cols $(( $cols / 2 )) 100 60 )
|
COMPREPLY=( $cols $(( $cols / 2 )) 100 60 )
|
||||||
|
|
||||||
elif [ $prev = "-q" ]; then
|
|
||||||
qcmd=/usr/lib/ponysay/pq4ps
|
|
||||||
quoters=$($qcmd -l)
|
|
||||||
COMPREPLY=( $( compgen -W "$quoters" -- "$cur" ) )
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,43 +3,20 @@
|
||||||
#
|
#
|
||||||
# Author: Elis Axelsson <etu AT elis DOT nu>
|
# Author: Elis Axelsson <etu AT elis DOT nu>
|
||||||
|
|
||||||
if test $TERM = "linux"
|
|
||||||
set -g systempath /usr/share/ponysay/ttyponies/
|
|
||||||
set -g homepath ~/.local/share/ponysay/ttyponies/
|
|
||||||
else
|
|
||||||
set -g systempath /usr/share/ponysay/ponies/
|
|
||||||
set -g homepath ~/.local/share/ponysay/ponies/
|
|
||||||
end
|
|
||||||
|
|
||||||
|
set -g ponies ('/usr/bin/ponysay.pl' --onelist)
|
||||||
if test -d $systempath
|
set -g quoters ('/usr/bin/ponysay.pl' --quoters)
|
||||||
set -g systemponies (ls --color=no $systempath | sed -e 's/\.pony//' -e 's/_.*//' | perl -pe 's/([a-z])([A-Z])/\1\\\ \2/' )
|
|
||||||
end
|
|
||||||
|
|
||||||
if test -d $homepath
|
|
||||||
set -g homeponies (ls --color=no $homepath | sed -e 's/\.pony//' -e 's/_.*//' | perl -pe 's/([a-z])([A-Z])/\1\\\ \2/' )
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
set -g qcmd /usr/lib/ponysay/pq4ps
|
|
||||||
set -g quoters ($qcmd -l)
|
|
||||||
|
|
||||||
|
|
||||||
complete -c ponysay -s h --description "Help of ponysay"
|
complete -c ponysay -s h --description "Help of ponysay"
|
||||||
complete -c ponysay -s v --description "Version of ponysay"
|
complete -c ponysay -s v --description "Version of ponysay"
|
||||||
complete -c ponysay -s l --description "List pony files"
|
complete -c ponysay -s l --description "List pony files"
|
||||||
complete -c ponysay -s L --description "List pony files with alternatives"
|
complete -c ponysay -s L --description "List pony files with alternatives"
|
||||||
complete -c ponysay -s f -a "$homeponies $systemponies" --description "Select a pony"
|
complete -c ponysay -s f -a "$ponies" --description "Select a pony"
|
||||||
complete -c ponysay -s q -a "$quoters" --description "Select ponies for MLP:FiM quotes"
|
complete -c ponysay -s q -a "$quoters" --description "Select ponies for MLP:FiM quotes"
|
||||||
complete -c ponysay -s W -a "Integer" --description "The screen column where the message should be wrapped"
|
complete -c ponysay -s W -a "Integer" --description "The screen column where the message should be wrapped"
|
||||||
|
|
||||||
|
|
||||||
set -e systempath
|
set -e ponies
|
||||||
set -e homepath
|
|
||||||
|
|
||||||
set -e systemponies
|
|
||||||
set -e homeponies
|
|
||||||
|
|
||||||
set -e qcmd
|
|
||||||
set -e quoters
|
set -e quoters
|
||||||
|
|
||||||
|
|
64
ponysay.py
64
ponysay.py
|
@ -38,6 +38,17 @@ for ponydir in _ponydirs:
|
||||||
ponydirs.append(ponydir)
|
ponydirs.append(ponydir)
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
The directories where quotes files are stored
|
||||||
|
'''
|
||||||
|
quotedirs = []
|
||||||
|
_quotedirs = [INSTALLDIR + '/share/ponysay/quotes/', os.environ['HOME'] + '/.local/share/ponysay/quotes/']
|
||||||
|
for quotedir in _quotedirs:
|
||||||
|
if os.path.isdir(quotedir):
|
||||||
|
quotedirs.append(quotedir)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
Argument parsing
|
Argument parsing
|
||||||
'''
|
'''
|
||||||
|
@ -46,6 +57,8 @@ parser = argparse.ArgumentParser(description = 'Ponysay, like cowsay with ponies
|
||||||
parser.add_argument('-v', '--version', action = 'version', version = '%s %s' % ('ponysay', VERSION))
|
parser.add_argument('-v', '--version', action = 'version', version = '%s %s' % ('ponysay', VERSION))
|
||||||
parser.add_argument('-l', '--list', action = 'store_true', dest = 'list', help = 'list pony files')
|
parser.add_argument('-l', '--list', action = 'store_true', dest = 'list', help = 'list pony files')
|
||||||
parser.add_argument('-L', '--altlist', action = 'store_true', dest = 'linklist', help = 'list pony files with alternatives')
|
parser.add_argument('-L', '--altlist', action = 'store_true', dest = 'linklist', help = 'list pony files with alternatives')
|
||||||
|
parser.add_argument( '--quoters', action = 'store_true', dest = 'quoters', help = 'list ponies with quotes (visible in -l and -L)') # for shell completions
|
||||||
|
parser.add_argument( '--onelist', action = 'store_true', dest = 'onelist', help = 'list pony files in one columns') # for shell completions
|
||||||
parser.add_argument('-f', '--pony', action = 'append', dest = 'pony', help = 'select a pony (either a file name or a pony name)')
|
parser.add_argument('-f', '--pony', action = 'append', dest = 'pony', help = 'select a pony (either a file name or a pony name)')
|
||||||
parser.add_argument('message', nargs = '?', help = 'message to ponysay')
|
parser.add_argument('message', nargs = '?', help = 'message to ponysay')
|
||||||
|
|
||||||
|
@ -56,16 +69,20 @@ class ponysay():
|
||||||
def __init__(self, args):
|
def __init__(self, args):
|
||||||
if args.list: self.list()
|
if args.list: self.list()
|
||||||
elif args.linklist: self.linklist()
|
elif args.linklist: self.linklist()
|
||||||
|
elif args.quoters: self.quoters()
|
||||||
|
elif args.onelist: self.onelist()
|
||||||
else: self.print_pony(args)
|
else: self.print_pony(args)
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
Returns a set with all ponies that have quotes and is displayable
|
Returns a set with all ponies that have quotes and are displayable
|
||||||
'''
|
'''
|
||||||
def __quoters(self):
|
def __quoters(self):
|
||||||
quotes = []
|
quotes = []
|
||||||
quoteshash = set()
|
quoteshash = set()
|
||||||
_quotes = [item[:item.index('.')] for item in os.listdir(INSTALLDIR + '/share/ponysay/quotes/')]
|
_quotes = []
|
||||||
|
for quotedir in quotedirs:
|
||||||
|
_quotes += [item[:item.index('.')] for item in os.listdir(INSTALLDIR + '/share/ponysay/quotes/')]
|
||||||
for quote in _quotes:
|
for quote in _quotes:
|
||||||
if not quote == '':
|
if not quote == '':
|
||||||
if not quote in quoteshash:
|
if not quote in quoteshash:
|
||||||
|
@ -84,6 +101,9 @@ class ponysay():
|
||||||
|
|
||||||
return ponies
|
return ponies
|
||||||
|
|
||||||
|
'''
|
||||||
|
Returns one .pony-file with full path, names is filter for names, also accepts filepaths
|
||||||
|
'''
|
||||||
def __getponypath(self, names = None):
|
def __getponypath(self, names = None):
|
||||||
ponies = {}
|
ponies = {}
|
||||||
|
|
||||||
|
@ -101,7 +121,9 @@ class ponysay():
|
||||||
Returns a list with all (pony, quote file) pairs
|
Returns a list with all (pony, quote file) pairs
|
||||||
'''
|
'''
|
||||||
def __quotes(self):
|
def __quotes(self):
|
||||||
quotes = os.listdir(INSTALLDIR + '/share/ponysay/quotes/')
|
quotes = []
|
||||||
|
for quotedir in quotedirs:
|
||||||
|
quotes += [quotedir + item for item in os.listdir(quotedir)]
|
||||||
rc = []
|
rc = []
|
||||||
|
|
||||||
for ponydir in ponydirs:
|
for ponydir in ponydirs:
|
||||||
|
@ -109,8 +131,9 @@ class ponysay():
|
||||||
if not pony[0] == '.':
|
if not pony[0] == '.':
|
||||||
p = pony[:-5] # remove .pony
|
p = pony[:-5] # remove .pony
|
||||||
for quote in quotes:
|
for quote in quotes:
|
||||||
if ('+' + p + '+') in ('+' + quote + '+'):
|
q = quote[quote.rindex('/') + 1:]
|
||||||
rc.append((p, qoute))
|
if ('+' + p + '+') in ('+' + q + '+'):
|
||||||
|
rc.append((p, quote))
|
||||||
|
|
||||||
return rc
|
return rc
|
||||||
|
|
||||||
|
@ -215,6 +238,37 @@ class ponysay():
|
||||||
print('\n');
|
print('\n');
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
Lists with all ponies that have quotes and are displayable
|
||||||
|
'''
|
||||||
|
def quoters(self):
|
||||||
|
last = ""
|
||||||
|
ponies = []
|
||||||
|
for pony in self.__quoters():
|
||||||
|
ponies.append(pony)
|
||||||
|
ponies.sort()
|
||||||
|
for pony in ponies:
|
||||||
|
if not pony == last:
|
||||||
|
last = pony
|
||||||
|
print(pony)
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
Lists the available ponies one one column without anything bold
|
||||||
|
'''
|
||||||
|
def onelist(self):
|
||||||
|
last = ""
|
||||||
|
ponies = []
|
||||||
|
for ponydir in ponydirs: # Loop ponydirs
|
||||||
|
ponies += os.listdir(ponydir)
|
||||||
|
ponies = [item[:-5] for item in ponies] # remove .pony from file name
|
||||||
|
ponies.sort()
|
||||||
|
for pony in ponies:
|
||||||
|
if not pony == last:
|
||||||
|
last = pony
|
||||||
|
print(pony)
|
||||||
|
|
||||||
|
|
||||||
def print_pony(self, args):
|
def print_pony(self, args):
|
||||||
if args.message == None:
|
if args.message == None:
|
||||||
msg = sys.stdin.read().strip()
|
msg = sys.stdin.read().strip()
|
||||||
|
|
Loading…
Reference in a new issue