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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
#!/bin/sh
#
# Simple installer for dish
# Author: Dimitar Ivanov
#
set -e
VER=1.1.1
PROG=dish
DIST_FILES='
$BINDIR:dish:0755
$MANDIR:dish.1:0644
'
LINK_FILES='
$BINDIR:dicp:dish
'
BINDIR=/usr/local/bin
MANDIR=/usr/local/man/man1
SRCDIR=src
UIDGID=0:0
### Functions
#
Usage () {
cat << !
Usage: $0 [ -i | -u ] [ -b <bin-dir> ] [ -m <man-dir> ]
Options:
-i - Install program
-u - Uninstall program
-b <bin-dir> - Directory where to install the executable(s),
default is $BINDIR
-m <man-dir> - Directory where to install the manual page(s),
default is $MANDIR
-o <user:group> - Specify ownership for the installed files. This argument
is ignored if you are not root. Default is $UIDGID
-q - Don't ask any questions and run quietly
!
}
iamwho () {
> /tmp/.$$
ls -al /tmp/.$$ |tr -s ' ' |cut -f3 -d' '
rm -f /tmp/.$$
}
### Process options and arguments
#
[ -z "$1" ] && set -- -h
while [ $# -gt 0 ]
do
case $1 in
-i) ALLED=installed
CMD='cp -f $2 $1'
LINK='cd $1 && test ! -h $2 && ln -s $3 $2 || true'
CHMOD=chmod
CHOWN=chown
;;
-u) ALLED=uninstalled
CMD='rm -f $1/$2'
LINK='cd $1 && rm -f $2'
CHMOD=:
CHOWN=:
;;
-q) QUIET=yes
;;
-b) BINDIR=$2
shift
;;
-m) MANDIR=$2
shift
;;
-o) UIDGID=$2
shift
;;
*) Usage
exit
;;
esac
shift
done
### Do install/uninstall
#
[ $ALLED ] || { Usage ; exit ; }
[ $QUIET ] || {
echo ""
echo " --- '$PROG' installer ---"
echo ""
echo "Following files will be $ALLED:"
echo =========
files=`echo "$DIST_FILES" "$LINK_FILES"`
echo `eval echo $files` |tr ' ' '\n' |cut -d: -f1-2 |tr : /
echo ""
echo "Go ahead [y/N]"
read y
if [ y$y != yy ]; then echo "Exiting now .." ; exit ; fi
}
cd $SRCDIR || exit 1
# If not root, don't try to change ownership
me=`iamwho`
if [ $me != root ]; then CHOWN=: ; fi
# cp/rm some file
for file in $DIST_FILES
do
args=`echo $file |tr : ' '`
set `eval echo $args`
# copy or remove
eval $CMD
# change mode
$CHMOD $3 $1/$2
# change owner
$CHOWN $UIDGID $1/$2
done
# link/rm some files
for file in $LINK_FILES
do
args=`echo $file |tr : ' '`
set `eval echo $args`
eval $LINK
done
cd ..
[ $QUIET ] || {
echo ""
echo "'$PROG' $ALLED successfully"
echo ""
}
exit 0
|