aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--CHANGELOG9
-rw-r--r--Makefile65
l---------bin/ponysay1
-rw-r--r--completion/bash-completion.sh2
l---------lib/ponysay/linklist.pl1
l---------lib/ponysay/list.pl1
l---------lib/ponysay/pq4ps1
l---------lib/ponysay/pq4ps-list1
l---------lib/ponysay/pq4ps-list.pl1
l---------lib/ponysay/pq4ps.pl1
-rwxr-xr-xlinklist.pl (renamed from ponysaylinklist.pl)1
-rwxr-xr-xlist.pl (renamed from ponysaylist.pl)0
-rw-r--r--manuals/ponysay.texinfo2
l---------ponies/elsie.pony1
-rwxr-xr-xponysay222
-rw-r--r--ponysay.pdfbin318391 -> 319214 bytes
-rwxr-xr-xpq4ps14
-rwxr-xr-xpq4ps-list6
-rwxr-xr-xpq4ps.pl4
l---------share/ponysay/ponies1
l---------share/ponysay/quotes1
l---------share/ponysay/ttyponies1
-rw-r--r--truncater.c (renamed from ponysaytruncater.c)0
l---------ttyponies/elsie.pony1
25 files changed, 179 insertions, 160 deletions
diff --git a/.gitignore b/.gitignore
index 2f8f23f..a55bb47 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,5 +6,5 @@
/completion/*-completion-think.*
/manuals/manpage.*.gz
/ponysay.info.gz
-/ponysaytruncater
+/truncater
diff --git a/CHANGELOG b/CHANGELOG
index 5566ad2..228cc95 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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
diff --git a/Makefile b/Makefile
index a5ec6b4..570e265 100644
--- a/Makefile
+++ b/Makefile
@@ -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/ponysaylist.pl b/list.pl
index 2004484..2004484 100755
--- a/ponysaylist.pl
+++ b/list.pl
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
diff --git a/ponysay b/ponysay
index 52439c4..7ec14ba 100755
--- a/ponysay
+++ b/ponysay
@@ -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
index bd85e2e..465c785 100644
--- a/ponysay.pdf
+++ b/ponysay.pdf
Binary files differ
diff --git a/pq4ps b/pq4ps
index 433f062..ace4a30 100755
--- a/pq4ps
+++ b/pq4ps
@@ -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
diff --git a/pq4ps-list b/pq4ps-list
index 4a082fe..8febce4 100755
--- a/pq4ps-list
+++ b/pq4ps-list
@@ -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))"
diff --git a/pq4ps.pl b/pq4ps.pl
index a10c998..2f45053 100755
--- a/pq4ps.pl
+++ b/pq4ps.pl
@@ -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