mirror of
https://github.com/sstephenson/bats.git
synced 2024-12-26 14:39:46 +01:00
added uninstall feature
This commit is contained in:
parent
03608115df
commit
64705397d1
118
install.sh
118
install.sh
|
@ -19,19 +19,119 @@ abs_dirname() {
|
||||||
cd "$cwd"
|
cd "$cwd"
|
||||||
}
|
}
|
||||||
|
|
||||||
PREFIX="$1"
|
print_usage() {
|
||||||
if [ -z "$1" ]; then
|
|
||||||
{ echo "usage: $0 <prefix>"
|
{ echo "usage: $0 <prefix>"
|
||||||
echo " e.g. $0 /usr/local"
|
echo " e.g. $0 /usr/local"
|
||||||
|
echo "uninstall: $0 -u [-i] [<prefix>]"
|
||||||
|
echo " e.g. $0 -u -i /usr/local"
|
||||||
|
echo " e.g. $0 -u"
|
||||||
} >&2
|
} >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
add_to_uninstall() {
|
||||||
|
pushd . >/dev/null
|
||||||
|
cd $1
|
||||||
|
for i in $(ls $3); do
|
||||||
|
FILE=$2/$i
|
||||||
|
if [ -e $FILE ]; then
|
||||||
|
DELETE_FILES+=( $FILE )
|
||||||
|
else
|
||||||
|
UNKNOWN_FILES+=( $FILE )
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
popd >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# parse command line
|
||||||
|
UNINSTALL=false
|
||||||
|
INTERACTIVE=true
|
||||||
|
for i in $@; do
|
||||||
|
if [ $i == "-u" ]; then
|
||||||
|
UNINSTALL=true
|
||||||
|
elif [ $i == "-i" ]; then
|
||||||
|
# the -i suppresses comfirmations
|
||||||
|
INTERACTIVE=false
|
||||||
|
else
|
||||||
|
# don't permit two prefixes
|
||||||
|
if [ ! -z "$PREFIX" ]; then print_usage; fi
|
||||||
|
PREFIX=$i
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# validate command line
|
||||||
|
if [ -z "$PREFIX" ]; then
|
||||||
|
if $UNINSTALL ; then
|
||||||
|
# no prefix necessary if uninstalling
|
||||||
|
set +e
|
||||||
|
PREFIX=$(which bats)
|
||||||
|
if [ 0 -eq $? ]; then
|
||||||
|
PREFIX=$(echo $PREFIX | sed -e 's$/[^/]*/bats\$$$')
|
||||||
|
else
|
||||||
|
echo "bats not in system path. Specify prefix." >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
set -e
|
||||||
|
else
|
||||||
|
print_usage;
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# complete the install/uninstall process
|
||||||
BATS_ROOT="$(abs_dirname "$0")"
|
BATS_ROOT="$(abs_dirname "$0")"
|
||||||
mkdir -p "$PREFIX"/{bin,libexec,share/man/man{1,7}}
|
if $UNINSTALL; then
|
||||||
cp -R "$BATS_ROOT"/bin/* "$PREFIX"/bin
|
DELETE_FILES=()
|
||||||
cp -R "$BATS_ROOT"/libexec/* "$PREFIX"/libexec
|
UNKNOWN_FILES=()
|
||||||
cp "$BATS_ROOT"/man/bats.1 "$PREFIX"/share/man/man1
|
CONTINUE=false
|
||||||
cp "$BATS_ROOT"/man/bats.7 "$PREFIX"/share/man/man7
|
pushd . >/dev/null
|
||||||
|
cd $BATS_ROOT
|
||||||
|
# get a list of files to delete
|
||||||
|
add_to_uninstall bin "$PREFIX"/bin '*'
|
||||||
|
add_to_uninstall libexec "$PREFIX"/libexec '*'
|
||||||
|
add_to_uninstall man "$PREFIX"/share/man/man1 '*.1'
|
||||||
|
add_to_uninstall man "$PREFIX"/share/man/man7 '*.7'
|
||||||
|
# confirm deletion
|
||||||
|
if $INTERACTIVE; then
|
||||||
|
if [ ${#DELETE_FILES[@]} -ne 0 ]; then
|
||||||
|
echo DELETING FILES
|
||||||
|
for i in ${DELETE_FILES[@]}; do
|
||||||
|
echo -e '\t'$i
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ ${#UNKNOWN_FILES[@]} -ne 0 ]; then
|
||||||
|
echo UNKNOWN FILES
|
||||||
|
for i in ${UNKNOWN_FILES[@]}; do
|
||||||
|
echo -e '\t'$i
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
CONTINUE=true
|
||||||
|
fi
|
||||||
|
if $INTERACTIVE; then
|
||||||
|
if [ ${#DELETE_FILES[@]} -ne 0 ]; then
|
||||||
|
read -p "Press [y] to continue, [n] to cancel" -n 1 -r -s
|
||||||
|
if [ "$REPLY" == 'y' ]; then
|
||||||
|
echo ' -- Continuing'
|
||||||
|
CONTINUE=true
|
||||||
|
else
|
||||||
|
echo ' -- CANCELING'
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
CONTINUE=false
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# delete the files
|
||||||
|
if $CONTINUE; then
|
||||||
|
rm ${DELETE_FILES[@]}
|
||||||
|
fi
|
||||||
|
popd >/dev/null
|
||||||
|
true
|
||||||
|
else
|
||||||
|
mkdir -p "$PREFIX"/{bin,libexec,share/man/man{1,7}}
|
||||||
|
cp -R "$BATS_ROOT"/bin/* "$PREFIX"/bin
|
||||||
|
cp -R "$BATS_ROOT"/libexec/* "$PREFIX"/libexec
|
||||||
|
cp "$BATS_ROOT"/man/bats.1 "$PREFIX"/share/man/man1
|
||||||
|
cp "$BATS_ROOT"/man/bats.7 "$PREFIX"/share/man/man7
|
||||||
|
|
||||||
echo "Installed Bats to $PREFIX/bin/bats"
|
echo "Installed Bats to $PREFIX/bin/bats"
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user