opam-test-all.sh
#! /bin/sh
set -e
script_dir="$(cd "$(dirname "$0")" && echo "$(pwd -P)/")"
src_dir="$(dirname "$script_dir")"
cd "$src_dir"
cleanup () {
set +e
if [ -f LOG ]; then
echo "failed."
echo
cat LOG
rm LOG
echo
exit 1
fi
}
trap cleanup EXIT INT
silent () {
"$@" > LOG 2>&1
rm LOG
}
requested_packages="$@"
export OPAMYES=yes
echo -n "Cleanup state and pin packages..."
silent ./scripts/opam-unpin.sh
silent . ./scripts/opam-pin.sh
echo " OK."
if ! [ -z "$requested_packages" ]; then
packages="$requested_packages"
fi
okfile="$0.DONE"
touch $okfile
ok=$(cat "$okfile")
ignore() {
for i in $ok; do
if [ $i = $1 ]; then return 0; fi
done
return 1
}
for package in $packages; do
if ignore $package; then
echo "Ignoring: $package."
continue
fi
echo -n "Installing: $package..."
silent opam install $package
echo " OK."
echo -n "Removing: $package..."
silent opam remove -a $package
echo " OK."
echo $package >> "$okfile"
done
echo
echo "Successfully installed the following packages: "
echo
cat $okfile | sed 's/^/- /'
rm $okfile