diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | CHANGELOG | 9 | ||||
-rw-r--r-- | Makefile | 65 | ||||
l--------- | bin/ponysay | 1 | ||||
-rw-r--r-- | completion/bash-completion.sh | 2 | ||||
l--------- | lib/ponysay/linklist.pl | 1 | ||||
l--------- | lib/ponysay/list.pl | 1 | ||||
l--------- | lib/ponysay/pq4ps | 1 | ||||
l--------- | lib/ponysay/pq4ps-list | 1 | ||||
l--------- | lib/ponysay/pq4ps-list.pl | 1 | ||||
l--------- | lib/ponysay/pq4ps.pl | 1 | ||||
-rwxr-xr-x | linklist.pl (renamed from ponysaylinklist.pl) | 1 | ||||
-rwxr-xr-x | list.pl (renamed from ponysaylist.pl) | 0 | ||||
-rw-r--r-- | manuals/ponysay.texinfo | 2 | ||||
l--------- | ponies/elsie.pony | 1 | ||||
-rwxr-xr-x | ponysay | 222 | ||||
-rw-r--r-- | ponysay.pdf | bin | 318391 -> 319214 bytes | |||
-rwxr-xr-x | pq4ps | 14 | ||||
-rwxr-xr-x | pq4ps-list | 6 | ||||
-rwxr-xr-x | pq4ps.pl | 4 | ||||
l--------- | share/ponysay/ponies | 1 | ||||
l--------- | share/ponysay/quotes | 1 | ||||
l--------- | share/ponysay/ttyponies | 1 | ||||
-rw-r--r-- | truncater.c (renamed from ponysaytruncater.c) | 0 | ||||
l--------- | ttyponies/elsie.pony | 1 |
25 files changed, 179 insertions, 160 deletions
@@ -6,5 +6,5 @@ /completion/*-completion-think.* /manuals/manpage.*.gz /ponysay.info.gz -/ponysaytruncater +/truncater @@ -1,6 +1,7 @@ Version 1.3 - New Ponies: forestspirit, raggedy, rhyme + New ponies: forestspirit, raggedy, rhyme + Version 1.2 @@ -8,8 +9,8 @@ Version 1.2 Support for extension: kmsponies4ponysay. - New ponies: ace, filthyrich, blueblood, gingergold, hayfever, - highscore, junebug, mrsparkle, persnickety, ponet, + New ponies: ace, filthyrich, blueblood, gingergold, hayfever, + highscore, junebug, mrsparkle, persnickety, ponet, screwloose, tornadobolt. Pony symlinks added: mrsparkle → nightlight @@ -19,6 +20,8 @@ Version 1.2 Arbitrary spaces in '-f' argument is not longer accepted (it causes problems with file names including spaces). + Note: Identifies itself as version 1.1 + Version 1.1 @@ -1,15 +1,15 @@ -all: ponysaytruncater manpages infomanual ponythinkcompletion +all: truncater manpages infomanual ponythinkcompletion -ponysaytruncater: - gcc -o "ponysaytruncater" "ponysaytruncater.c" +truncater: + gcc -o "truncater" "truncater.c" manpages: - gzip -9 < "manuals/manpage.6" > "manuals/manpage.6.gz" + gzip -9 < "manuals/manpage.6" > "manuals/manpage.6.gz" gzip -9 < "manuals/manpage.es.6" > "manuals/manpage.es.6.gz" infomanual: makeinfo "manuals/ponysay.texinfo" - gzip -9 "ponysay.info" + gzip -9 "ponysay.info" ponythinkcompletion: sed -e 's/ponysay/ponythink/g' <"completion/bash-completion.sh" | sed -e 's/\/ponythink\//\/ponysay\//g' -e 's/\\\/ponythink\\\//\\\/ponysay\\\//g' >"completion/bash-completion-think.sh" @@ -21,47 +21,47 @@ install: all mkdir -p "$(DESTDIR)/usr/share/ponysay/ponies" mkdir -p "$(DESTDIR)/usr/share/ponysay/ttyponies" mkdir -p "$(DESTDIR)/usr/share/ponysay/quotes" - cp -P ponies/*.pony "$(DESTDIR)/usr/share/ponysay/ponies/" + cp -P ponies/*.pony "$(DESTDIR)/usr/share/ponysay/ponies/" cp -P ttyponies/*.pony "$(DESTDIR)/usr/share/ponysay/ttyponies/" - cp -P quotes/*.* "$(DESTDIR)/usr/share/ponysay/quotes/" + cp -P quotes/*.* "$(DESTDIR)/usr/share/ponysay/quotes/" - mkdir -p "$(DESTDIR)/usr/bin/" + mkdir -p "$(DESTDIR)/usr/bin/" install "ponysay" "$(DESTDIR)/usr/bin/ponysay" - ln -sf "ponysay" "$(DESTDIR)/usr/bin/ponythink" - install "pq4ps" "$(DESTDIR)/usr/bin/pq4ps" - install "pq4ps.pl" "$(DESTDIR)/usr/bin/pq4ps.pl" - install "pq4ps-list" "$(DESTDIR)/usr/bin/pq4ps-list" - install "pq4ps-list.pl" "$(DESTDIR)/usr/bin/pq4ps-list.pl" - - mkdir -p "$(DESTDIR)/usr/lib/ponysay/" - install -s "ponysaytruncater" "$(DESTDIR)/usr/lib/ponysay/truncater" - install "ponysaylist.pl" "$(DESTDIR)/usr/lib/ponysay/list.pl" - install "ponysaylinklist.pl" "$(DESTDIR)/usr/lib/ponysay/linklist.pl" - - mkdir -p "$(DESTDIR)/usr/share/bash-completion/completions/" - install "completion/bash-completion.sh" "$(DESTDIR)/usr/share/bash-completion/completions/ponysay" + ln -sf "ponysay" "$(DESTDIR)/usr/bin/ponythink" + + mkdir -p "$(DESTDIR)/usr/lib/ponysay/" + install -s "truncater" "$(DESTDIR)/usr/lib/ponysay/truncater" + install "list.pl" "$(DESTDIR)/usr/lib/ponysay/list.pl" + install "linklist.pl" "$(DESTDIR)/usr/lib/ponysay/linklist.pl" + install "pq4ps" "$(DESTDIR)/usr/lib/pq4ps" + install "pq4ps.pl" "$(DESTDIR)/usr/lib/pq4ps.pl" + install "pq4ps-list" "$(DESTDIR)/usr/lib/pq4ps-list" + install "pq4ps-list.pl" "$(DESTDIR)/usr/lib/pq4ps-list.pl" + + mkdir -p "$(DESTDIR)/usr/share/bash-completion/completions/" + install "completion/bash-completion.sh" "$(DESTDIR)/usr/share/bash-completion/completions/ponysay" install "completion/bash-completion-think.sh" "$(DESTDIR)/usr/share/bash-completion/completions/ponythink" - mkdir -p "$(DESTDIR)/usr/share/fish/completions/" - install "completion/fish-completion.fish" "$(DESTDIR)/usr/share/fish/completions/ponysay.fish" + mkdir -p "$(DESTDIR)/usr/share/fish/completions/" + install "completion/fish-completion.fish" "$(DESTDIR)/usr/share/fish/completions/ponysay.fish" install "completion/fish-completion-think.fish" "$(DESTDIR)/usr/share/fish/completions/ponythink.fish" - mkdir -p "$(DESTDIR)/usr/share/zsh/site-functions/" - install "completion/zsh-completion.zsh" "$(DESTDIR)/usr/share/zsh/site-functions/_ponysay" + mkdir -p "$(DESTDIR)/usr/share/zsh/site-functions/" + install "completion/zsh-completion.zsh" "$(DESTDIR)/usr/share/zsh/site-functions/_ponysay" install "completion/zsh-completion-think.zsh" "$(DESTDIR)/usr/share/zsh/site-functions/_ponythink" - mkdir -p "$(DESTDIR)/usr/share/licenses/ponysay/" + mkdir -p "$(DESTDIR)/usr/share/licenses/ponysay/" install "COPYING" "$(DESTDIR)/usr/share/licenses/ponysay/COPYING" - mkdir -p "$(DESTDIR)/usr/share/man/man6" + mkdir -p "$(DESTDIR)/usr/share/man/man6" install "manuals/manpage.6.gz" "$(DESTDIR)/usr/share/man/man6/ponysay.6.gz" - ln -sf "ponysay.6.gz" "$(DESTDIR)/usr/share/man/man6/ponythink.6.gz" + ln -sf "ponysay.6.gz" "$(DESTDIR)/usr/share/man/man6/ponythink.6.gz" - mkdir -p "$(DESTDIR)/usr/share/man/es/man6" + mkdir -p "$(DESTDIR)/usr/share/man/es/man6" install "manuals/manpage.es.6.gz" "$(DESTDIR)/usr/share/man/es/man6/ponysay.6.gz" - ln -sf "ponysay.6.gz" "$(DESTDIR)/usr/share/man/es/man6/ponythink.6.gz" + ln -sf "ponysay.6.gz" "$(DESTDIR)/usr/share/man/es/man6/ponythink.6.gz" - mkdir -p "$(DESTDIR)/usr/share/info" + mkdir -p "$(DESTDIR)/usr/share/info" install "ponysay.info.gz" "$(DESTDIR)/usr/share/info/ponysay.info.gz" install "ponysay.info.gz" "$(DESTDIR)/usr/share/info/ponythink.info.gz" install-info --dir-file="$(DESTDIR)/usr/share/info/dir" --entry="Miscellaneous" --description="My Little Ponies for your terminal" "$(DESTDIR)/usr/share/info/ponysay.info.gz" @@ -139,7 +139,7 @@ ttyponies: pdfmanual: texi2pdf "manuals/ponysay.texinfo" - git add "manuals/ponysay.texinfo" + git add "manuals/ponysay.texinfo" "ponysay.pdf" if [[ -f "ponysay.aux" ]]; then unlink "ponysay.aux"; fi if [[ -f "ponysay.cp" ]]; then unlink "ponysay.cp" ; fi if [[ -f "ponysay.cps" ]]; then unlink "ponysay.cps"; fi @@ -161,3 +161,4 @@ quotes: submodules mkdir -p "quotes" cp "ponyquotes4ponysay/ponyquotes/"*.* "quotes" git add "quotes/"*.* + diff --git a/bin/ponysay b/bin/ponysay new file mode 120000 index 0000000..4f77813 --- /dev/null +++ b/bin/ponysay @@ -0,0 +1 @@ +../ponysay
\ No newline at end of file diff --git a/completion/bash-completion.sh b/completion/bash-completion.sh index 53c53ef..92b1ef6 100644 --- a/completion/bash-completion.sh +++ b/completion/bash-completion.sh @@ -5,7 +5,7 @@ _ponysay() local cur prev words cword _init_completion -n = || return - quotes=$(pq4ps --list 2>/dev/null) + quotes=$(/usr/lib/ponysay/pq4ps --list 2>/dev/null) quotesexit=$? options='-v -h -l -f -W' if [[ $quotesexit = 0 ]]; then diff --git a/lib/ponysay/linklist.pl b/lib/ponysay/linklist.pl new file mode 120000 index 0000000..c3bdca4 --- /dev/null +++ b/lib/ponysay/linklist.pl @@ -0,0 +1 @@ +../../linklist.pl
\ No newline at end of file diff --git a/lib/ponysay/list.pl b/lib/ponysay/list.pl new file mode 120000 index 0000000..1446e25 --- /dev/null +++ b/lib/ponysay/list.pl @@ -0,0 +1 @@ +../../list.pl
\ No newline at end of file diff --git a/lib/ponysay/pq4ps b/lib/ponysay/pq4ps new file mode 120000 index 0000000..8fcf18f --- /dev/null +++ b/lib/ponysay/pq4ps @@ -0,0 +1 @@ +../../pq4ps
\ No newline at end of file diff --git a/lib/ponysay/pq4ps-list b/lib/ponysay/pq4ps-list new file mode 120000 index 0000000..78c69af --- /dev/null +++ b/lib/ponysay/pq4ps-list @@ -0,0 +1 @@ +../../pq4ps-list
\ No newline at end of file diff --git a/lib/ponysay/pq4ps-list.pl b/lib/ponysay/pq4ps-list.pl new file mode 120000 index 0000000..d26a31f --- /dev/null +++ b/lib/ponysay/pq4ps-list.pl @@ -0,0 +1 @@ +../../pq4ps-list.pl
\ No newline at end of file diff --git a/lib/ponysay/pq4ps.pl b/lib/ponysay/pq4ps.pl new file mode 120000 index 0000000..31f9221 --- /dev/null +++ b/lib/ponysay/pq4ps.pl @@ -0,0 +1 @@ +../../pq4ps.pl
\ No newline at end of file diff --git a/ponysaylinklist.pl b/linklist.pl index b7b4c6e..c0377aa 100755 --- a/ponysaylinklist.pl +++ b/linklist.pl @@ -33,4 +33,3 @@ while ((my ($source, $target), @ARGV) = @ARGV) { print "\n"; } } - diff --git a/manuals/ponysay.texinfo b/manuals/ponysay.texinfo index adacb54..3043a6a 100644 --- a/manuals/ponysay.texinfo +++ b/manuals/ponysay.texinfo @@ -849,6 +849,8 @@ Arbitrary spaces in @command{-f} argument is not longer accepted (it causes prob file names including spaces.) @end itemize +@b{Note}: Identifies itself as version 1.1 + @heading Version 1.1 @itemize @bullet diff --git a/ponies/elsie.pony b/ponies/elsie.pony new file mode 120000 index 0000000..acc1800 --- /dev/null +++ b/ponies/elsie.pony @@ -0,0 +1 @@ +./prettyvision.pony
\ No newline at end of file @@ -1,80 +1,86 @@ #!/usr/bin/env bash -version=1.1 -SCRIPTDIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get bash script directory -pony="*" -wrap="" +VERSION=1.3 -SYSTEMPONIES="$(dirname $SCRIPTDIR)/share/ponysay" -HOMEPONIES="${HOME}/.local/share/ponysay" + +# Get bash script directory's parent +INSTALLDIR="$(dirname $( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd ))" + +# Directory for installed media files +SYSTEMSHARE="$INSTALLDIR/share/ponysay" +HOMESHARE="${HOME}/.local/share/ponysay" + +# Subscripts +listcmd="$INSTALLDIR/lib/ponysay/list.pl" +linklistcmd="$INSTALLDIR/lib/ponysay/linklist.pl" +truncatercmd="$INSTALLDIR/lib/ponysay/truncater" +qlistcmd="$INSTALLDIR/lib/ponysay/pq4ps-list" +quotecmd="$INSTALLDIR/lib/ponysay/pq4ps" + +pony="*" # Selected pony +wrap="" # Message wrap column +ponies=() # Selected ponies + +scrw=`(stty size <&2 || echo 0 0) | cut -d ' ' -f 2` # Screen width +scrh=`(stty size <&2 || echo 0 0) | cut -d ' ' -f 1` # Screen height + +# KMS ponies extension kmscmd="" [[ "$TERM" = "linux" ]] && kmscmd=$(for c in $(echo $PATH":" | sed -e 's/:/\/ponysay2kmsponysay /g'); do if [[ -f $c ]]; then echo $c; break; fi done) [[ ! "$kmscmd" = "" ]] && TERM="-linux-" +# Directories for installed ponies files if [ "$TERM" = "linux" ]; then - SYSTEMPONIES="$SYSTEMPONIES/ttyponies" - HOMEPONIES="$HOMEPONIES/ttyponies" + SYSTEMPONIES="$SYSTEMSHARE/ttyponies" + HOMEPONIES="$HOMESHARE/ttyponies" else - SYSTEMPONIES="$SYSTEMPONIES/ponies" - HOMEPONIES="$HOMEPONIES/ponies" + SYSTEMPONIES="$SYSTEMSHARE/ponies" + HOMEPONIES="$HOMESHARE/ponies" fi -if [[ "$PONYSAY_COWSAY" = "" ]]; then - cmd=cowsay - customcmd=0 +# Cowsay script +if [[ ${0} == *ponythink ]]; then + if [[ "$PONYSAY_COWTHINK" = "" ]]; then + cmd=cowthink + customcmd=0 + else + cmd="$PONYSAY_COWTHINK" + customcmd=1 + fi else - cmd="$PONYSAY_COWSAY" - customcmd=1 + if [[ "$PONYSAY_COWSAY" = "" ]]; then + cmd=cowsay + customcmd=0 + else + cmd="$PONYSAY_COWSAY" + customcmd=1 + fi fi -[[ ${0} == *ponythink ]] && -if [[ "$PONYSAY_COWTHINK" = "" ]]; then - cmd=cowthink - customcmd=0 -else - cmd="$PONYSAY_COWTHINK" - customcmd=1 -fi + +# Ponysay version print function version() { - echo "ponysay v$version" + echo "ponysay v$VERSION" } -scrw=`(stty size <&2 || echo 0 0) | cut -d ' ' -f 2` -listcmd="${SCRIPTDIR}/../lib/ponysay/list.pl" -linklistcmd="${SCRIPTDIR}/../lib/ponysay/linklist.pl" -truncatercmd="${SCRIPTDIR}/../lib/ponysay/truncater" -[[ -f "./ponysaylist.pl" ]] && listcmd="./ponysaylist.pl" -[[ -f "./ponysaylinklist.pl" ]] && linklistcmd="./ponysaylinklist.pl" -[[ -f "./ponysaytruncater" ]] && truncatercmd="./ponysaytruncater" - -haspq=1 -if [[ -f './pq4ps-list' ]]; then - function qlist { - ./pq4ps-list - } -elif [[ -f '/usr/bin/pq4ps-list' ]]; then - function qlist { - /usr/bin/pq4ps-list - } -else - haspq=0 - function qlist { - cat - } -fi - +# Pony list function list() { - echo -e "\\e[01mponyfiles located in $SYSTEMPONIES:\\e[21m" - perl $listcmd $scrw $(ls --color=no $SYSTEMPONIES | sed -e 's/\.pony$//' | sort) | qlist - + if [[ -d $SYSTEMPONIES ]]; then + echo -e "\\e[01mponyfiles located in $SYSTEMPONIES:\\e[21m" + perl $listcmd $scrw $(ls --color=no $SYSTEMPONIES | sed -e 's/\.pony$//' | sort) | $qlistcmd + fi if [[ -d $HOMEPONIES ]]; then echo -e "\\e[01mponyfiles located in $HOMEPONIES:\\e[21m" - perl $listcmd $scrw $(ls --color=no $HOMEPONIES | sed -e 's/\.pony$//' | sort) | qlist + perl $listcmd $scrw $(ls --color=no $HOMEPONIES | sed -e 's/\.pony$//' | sort) | $qlistcmd + fi + if [[ ! -d $SYSTEMPONIES ]] && [[ ! -d $HOMEPONIES ]]; then + echo >&2 "All the ponies are missing! Call the Princess!" fi } +# Pony list function with symlink map, for one directory _linklist() { echo -e "\\e[01mponyfiles located in $1:\\e[21m" files=$(ls --color=no $1 | sed -e 's/\.pony$//' | sort) @@ -93,11 +99,10 @@ _linklist() { args=$(echo $args $file $target) done - scrw=`(stty size <&2 || echo 0 0) | cut -d ' ' -f 2` - - perl $listcmd $scrw $(perl $linklistcmd $(echo $args) | sed -e 's/ /_/g') | sed -e 's/_/ /g' | qlist + perl $listcmd $scrw $(perl $linklistcmd $(echo $args) | sed -e 's/ /_/g') | sed -e 's/_/ /g' | $qlistcmd } +# Pony list function with symlink map, for both directories linklist() { _linklist $SYSTEMPONIES @@ -106,6 +111,13 @@ linklist() { fi } +# Pony quotes +ponyquotes() { + [[ "$TERM" = "-linux-" ]] && TERM="linux" + "$0" ${wrap:+-W$wrap} $("$quotecmd" "$*") +} + +# Usage help print function usage() { version cat <<EOF @@ -120,15 +132,7 @@ Options: -h Show this help and exit. -l List pony files. -L List pony files with synonyms inside brackets. -EOF - - if [[ $haspq = 1 ]]; then - cat <<EOF -q Use the pony quote feature. -EOF - fi - - cat <<EOF -f[name] Select a pony (either a file name or a pony name.) -W[column] The screen column where the message should be wrapped. @@ -136,41 +140,41 @@ See man ponysay(6) for more information. EOF } -# if no stdin and no arguments then print usage and exit -if [[ -t 0 && $# == 0 ]]; then - usage - exit -fi - +# Function for printing the ponies and the message say() { # Ponies use UTF-8 drawing characters. Prevent a Perl warning. export PERL_UNICODE=S - - if [ "$TERM" = "linux" ] || [ "$TERM" = "-linux-" ]; then - echo -ne '\e[H\e[2J' - fi - + + # Clear screen in TTY + ( [[ "$TERM" = "linux" ]] || [[ "$TERM" = "-linux-" ]]) && echo -ne '\e[H\e[2J' + + # Set PONYSAY_SHELL_LINES to default if not specified + [[ "$PONYSAY_SHELL_LINES" = "" ]] && PONYSAY_SHELL_LINES=2 + + # Width trunction function wtrunc { if [ "$PONYSAY_FULL_WIDTH" = 'yes' ] || [ "$PONYSAY_FULL_WIDTH" = 'y' ] || [ "$PONYSAY_FULL_WIDTH" = '1' ]; then cat else - WIDTH=`(stty size <&2 || echo 0 0) | cut -d ' ' -f 2` - $truncatercmd $WIDTH 2>/dev/null || cat + if [[ -f $truncatercmd ]]; then + $truncatercmd $scrw + else + cat + fi fi } - - if [ "$PONYSAY_SHELL_LINES" = "" ]; then - PONYSAY_SHELL_LINES=2 - fi - + + # Height trunction, show top function htrunchead { - head --lines=$(( `stty size <&2 | cut -d ' ' -f 1` - $PONYSAY_SHELL_LINES )) + head --lines=$(( $scrh - $PONYSAY_SHELL_LINES )) } - + + # Height trunction, show bottom function htrunctail { - tail --lines=$(( `stty size <&2 | cut -d ' ' -f 1` - $PONYSAY_SHELL_LINES )) + tail --lines=$(( $scrh - $PONYSAY_SHELL_LINES )) } - + + # Simplification of customisation of cowsay if [[ $customcmd = 0 ]]; then function cowcmd { pcmd='#!/usr/bin/perl\nuse utf8;' @@ -186,11 +190,11 @@ say() { } else function cowcmd { - echo "custom $cmd" $cmd "$@" } fi - + + # KMS ponies support if [[ "$kmscmd" = "" ]]; then function runcmd { cowcmd -f "$pony" "$@" @@ -200,7 +204,8 @@ say() { cowcmd -f <($kmscmd "$pony") "$@" } fi - + + # Print the pony and the message if [ "$TERM" = "linux" ] || [ "$PONYSAY_TRUNCATE_HEIGHT" = 'yes' ] || [ "$PONYSAY_TRUNCATE_HEIGHT" = 'y' ] || [ "$PONYSAY_TRUNCATE_HEIGHT" = '1' ]; then if [ "$PONYSAY_BOTTOM" = 'yes' ] || [ "$PONYSAY_BOTTOM" = 'y' ] || [ "$PONYSAY_BOTTOM" = '1' ]; then runcmd "${wrap:+-W$wrap}" | wtrunc | htrunctail @@ -212,15 +217,18 @@ say() { fi } -ponies=() -opts="f:W:Llhv" -if [[ $haspq ]]; then - opts=$opts"q" + +# If no stdin and no arguments then print usage and exit +if [[ -t 0 && $# == 0 ]]; then + usage + exit fi -usepq=0 -while getopts $opts OPT; do + + +# Parse options +while getopts "f:W:Llhvq" OPT; do case ${OPT} in v) version; exit ;; h) usage; exit ;; @@ -228,27 +236,14 @@ while getopts $opts OPT; do l) list; exit ;; L) linklist; exit ;; W) wrap="$OPTARG" ;; - q) usepq=1 ;; + q) ponyquotes; exit ;; \?) usage >&2; exit 1 ;; esac done shift $((OPTIND - 1)) -if [[ $usepq = 1 ]]; then - if [[ -f './pq4ps' ]]; then - function q { - ./pq4ps $@ - } - elif [[ -f '/usr/bin/pq4ps' ]]; then - function q { - /usr/bin/pq4ps $@ - } - fi - [[ "$TERM" = "-linux-" ]] && TERM="linux" - $0 ${wrap:+-W$wrap} $(q "$*") - exit -fi +# Check for cowsay hash $cmd &>/dev/null; if [ $? -ne 0 ]; then cat >&2 <<EOF You don't seem to have the $cmd program. @@ -260,13 +255,15 @@ EOF exit 1 fi + +# Select random pony for the set of -f arguments if [[ ! ${#ponies[@]} == 0 ]]; then pony="${ponies[$RANDOM%${#ponies[@]}]}" fi + +# Pony not a file? Search for it if [[ ! -f $pony ]]; then - # Pony not a file? Search for it - ponies=() [[ -d $SYSTEMPONIES ]] && ponies+=( "$SYSTEMPONIES"/$pony.pony ) [[ -d $HOMEPONIES ]] && ponies+=( "$HOMEPONIES"/$pony.pony ) @@ -280,10 +277,13 @@ if [[ ! -f $pony ]]; then pony="${ponies[$RANDOM%${#ponies[@]}]}" fi + +# Print pony with message if [[ -n "$*" ]]; then # Handle a message given via arguments say <<<"$*" else + # Handle a message given in stdin say fi diff --git a/ponysay.pdf b/ponysay.pdf Binary files differindex bd85e2e..465c785 100644 --- a/ponysay.pdf +++ b/ponysay.pdf @@ -1,15 +1,17 @@ #!/bin/bash +INSTALLDIR="$(dirname "$(dirname "$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )")")" # Get main bash script directory's parent + if [[ $# == 1 ]] && [[ "$1" == '-l' || "$1" == '--list' ]]; then - perl $0.pl | cut -d @ -f 1 | uniq + perl "$0.pl" "$INSTALLDIR" | cut -d @ -f 1 | uniq else - _ponies="$(perl $0.pl)" + _ponies="$(perl "$0.pl" "$INSTALLDIR")" ponies=() - if [[ ! $# == 0 ]]; then - p="" + if (( $# > 1 )); then + p=() for arg in "$@"; do - p=$p$(echo "$_ponies" | grep "^$arg@")" " + p+=( $(echo "$_ponies" | grep "^$arg@") ) done _ponies=$p fi @@ -32,7 +34,7 @@ else p="$(echo $pony | cut -d '@' -f 1)" f="$(echo $pony | cut -d '@' -f 2)" - q="$(cat "/usr/share/ponysay/quotes/$f")" + q="$(cat "$INSTALLDIR/share/ponysay/quotes/$f")" echo "-f" $p $q fi @@ -1,6 +1,6 @@ #!/bin/bash -cmd=$(echo $0 | sed -e 's/\-list$//g') -pl=$0.pl +cmd="$(echo "$0" | sed -e 's/\-list$//g')" +pl="$0.pl" -bash -c "$($pl $($cmd --list))" +bash -c "$("$pl" $($cmd --list))" @@ -1,9 +1,9 @@ #!/usr/bin/perl -opendir(DIR, "/usr/share/ponysay/ponies/"); +opendir(DIR, $ARGV[0]."/share/ponysay/ponies/"); @files = readdir(DIR); -opendir(DIR, "/usr/share/ponysay/quotes/"); +opendir(DIR, $ARGV[0]."/share/ponysay/quotes/"); @quotes = readdir(DIR); diff --git a/share/ponysay/ponies b/share/ponysay/ponies new file mode 120000 index 0000000..2852287 --- /dev/null +++ b/share/ponysay/ponies @@ -0,0 +1 @@ +../../ponies/
\ No newline at end of file diff --git a/share/ponysay/quotes b/share/ponysay/quotes new file mode 120000 index 0000000..3203ed3 --- /dev/null +++ b/share/ponysay/quotes @@ -0,0 +1 @@ +../../quotes/
\ No newline at end of file diff --git a/share/ponysay/ttyponies b/share/ponysay/ttyponies new file mode 120000 index 0000000..7824083 --- /dev/null +++ b/share/ponysay/ttyponies @@ -0,0 +1 @@ +../../ttyponies/
\ No newline at end of file diff --git a/ponysaytruncater.c b/truncater.c index d703406..d703406 100644 --- a/ponysaytruncater.c +++ b/truncater.c diff --git a/ttyponies/elsie.pony b/ttyponies/elsie.pony new file mode 120000 index 0000000..acc1800 --- /dev/null +++ b/ttyponies/elsie.pony @@ -0,0 +1 @@ +./prettyvision.pony
\ No newline at end of file |