blob: e390f09eb71fda078e235edf271bfa90a9e9adcf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
#!/usr/bin/env bash
# Get bash script directory's parent
INSTALLDIR="$(dirname $( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd ))"
# Subscripts
truncatercmd="$INSTALLDIR/lib/ponysay/truncater"
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-"
# Cowsay script
if [ ${0} == *ponythink ]; then
if [ "$PONYSAY_COWTHINK" = "" ]; then
cmd=cowthink
customcmd=0
else
cmd="$PONYSAY_COWTHINK"
customcmd=1
fi
else
if [ "$PONYSAY_COWSAY" = "" ]; then
cmd=cowsay
customcmd=0
else
cmd="$PONYSAY_COWSAY"
customcmd=1
fi
fi
# Function for printing the ponies and the message
say() {
# Set PONYSAY_SHELL_LINES to default if not specified
[ "$PONYSAY_SHELL_LINES" = "" ] && PONYSAY_SHELL_LINES=2
# Height trunction, show top
function htrunchead {
head --lines=$(( $scrh - $PONYSAY_SHELL_LINES ))
}
# Height trunction, show bottom
function htrunctail {
tail --lines=$(( $scrh - $PONYSAY_SHELL_LINES ))
}
# Simplification of customisation of cowsay
if [ $customcmd = 0 ]; then
function cowcmd {
pcmd='#!/usr/bin/perl\nuse utf8;'
ccmd=$(for c in $(echo $PATH":" | sed -e 's/:/\/'"$cmd"' /g'); do if [ -f $c ]; then echo $c; break; fi done)
if [ ${0} == *ponythink ]; then
cat <(echo -e $pcmd) $ccmd > "/tmp/ponythink"
perl '/tmp/ponythink' "$@"
rm '/tmp/ponythink'
else
perl <(cat <(echo -e $pcmd) $ccmd) "$@"
fi
}
else
function cowcmd {
$cmd "$@"
}
fi
# KMS ponies support
if [ "$kmscmd" = "" ]; then
function runcmd {
cowcmd -f "$pony" "$@"
}
else
function runcmd {
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
else
runcmd "${wrap:+-W$wrap}" | wtrunc | htrunchead
fi
else
runcmd "${wrap:+-W$wrap}" | wtrunc
fi
}
# If no stdin and no arguments then print usage and exit
if [ -t 0 ] && [ $# == 0 ]; then
usage
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.
Please install it in order to use this wrapper.
Alternatively, symlink it to '$cmd' in anywhere in \$PATH
if it actually exists under a different filename.
EOF
exit 1
fi
|