mirror of
https://github.com/erkin/ponysay
synced 2024-11-30 15:19:16 +00:00
Search for ponies more intelligently
This commit is contained in:
parent
c840fc6976
commit
729ac65c7f
1 changed files with 31 additions and 24 deletions
51
ponysay
51
ponysay
|
@ -1,37 +1,44 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Ponies use UTF-8 drawing characters. Prevent a Perl warning.
|
||||||
export PERL_UNICODE=S
|
export PERL_UNICODE=S
|
||||||
|
|
||||||
[[ -z ${PONYDIR} ]] && PONYDIR=/usr/share/ponies
|
SYSTEMPONIES=/usr/share/ponies
|
||||||
HOMEDIR=${HOME}/.ponies
|
HOMEPONIES="${HOME}/.ponies"
|
||||||
|
|
||||||
cmd=cowsay
|
cmd=cowsay
|
||||||
[[ ${0} == *ponythink ]] && cmd=cowthink
|
[[ ${0} == *ponythink ]] && cmd=cowthink
|
||||||
|
|
||||||
function ponyf() {
|
pony=
|
||||||
if [[ -f ${HOMEDIR}/${1}.pony ]]; then
|
|
||||||
${cmd} -f "${HOMEDIR}/${1}.pony" $@
|
|
||||||
elif [[ -f ${PONYDIR}/${1}.pony ]]; then
|
|
||||||
${cmd} -f "${PONYDIR}/${1}.pony" $@
|
|
||||||
else
|
|
||||||
ponyr $@
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function ponyr() {
|
|
||||||
if [[ -d ${HOMEDIR} ]] && [[ -n $(find ${HOMEDIR} -name \*.pony) ]]; then
|
|
||||||
${cmd} -f $(ls ${HOMEDIR}/*.pony | sort -R | head -n1) $@
|
|
||||||
elif [[ -d ${PONYDIR} ]] && [[ -n $(find ${PONYDIR} -name \*.pony) ]]; then
|
|
||||||
${cmd} -f $(ls ${PONYDIR}/*.pony | sort -R | head -n1) $@
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
while getopts f:hv OPT
|
while getopts f:hv OPT
|
||||||
do
|
do
|
||||||
case ${OPT} in
|
case ${OPT} in
|
||||||
v) echo "ponysay v0.2" ; exit;;
|
v) echo "ponysay v0.4" ; exit;;
|
||||||
h) echo "-v for version, -h for this, -f to specify a ponyfile. It'll choose a random ponyfile if no argument is given." ; exit;;
|
h) echo "-v for version, -h for this, -f to specify a ponyfile. It'll choose a random ponyfile if no argument is given." ; exit;;
|
||||||
f) ponyf $* ; exit;;
|
f) pony=$OPTARG ;;
|
||||||
\?) echo "DERP"; exit;;
|
\?) echo "DERP"; exit;;
|
||||||
*) ponyr $* ; exit;;
|
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
ponyr $*
|
|
||||||
|
# Pony not a file? Search for it
|
||||||
|
if [[ ! -f $pony ]]; then
|
||||||
|
|
||||||
|
# Pony not set? Choose all
|
||||||
|
[[ -z $pony ]] && pony="*"
|
||||||
|
|
||||||
|
ponies=()
|
||||||
|
|
||||||
|
[[ -d $SYSTEMPONIES ]] && ponies+=( "$SYSTEMPONIES"/$pony.pony )
|
||||||
|
[[ -d $HOMEPONIES ]] && ponies+=( "$HOMEPONIES"/$pony.pony )
|
||||||
|
|
||||||
|
if (( ${#ponies} < 1 )); then
|
||||||
|
echo >&2 "All the ponies are missing! Call the Princess!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Choose a random pony
|
||||||
|
pony="${ponies[$RANDOM%${#ponies[@]}]}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$cmd" -f "$pony"
|
||||||
|
|
Loading…
Reference in a new issue