mkvtoolnix/packaging/macos/myinstall.sh

78 lines
1.9 KiB
Bash
Raw Permalink Normal View History

#!/bin/zsh
set -e
set -x
source ${0:h}/config.sh
MODE=
FILE=
INSTALL_COMMAND="make DESTDIR=TMPDIR install"
PACKAGE=
function fail {
print -- "$@"
exit 1
}
function run_build {
local package tmpdir install_command
package=${PACKAGE:-${PWD:t}}
tmpdir=$HOME/tmp/install-${$}-${package}
install_command=${INSTALL_COMMAND//TMPDIR/${tmpdir}}
echo PACKAGE $PACKAGE package $package tmpdir $tmpdir install_command $install_command
$DEBUG mkdir -p $tmpdir $PACKAGE_DIR
$DEBUG eval ${install_command}
$DEBUG cd ${tmpdir}${TARGET}
$DEBUG tar czf ${PACKAGE_DIR}/${package}.tar.gz .
$DEBUG cd ${tmpdir}/..
$DEBUG rm -rf $tmpdir
$DEBUG cd ${TARGET}
$DEBUG tar xzf ${PACKAGE_DIR}/${package}.tar.gz
}
function run_uninstall {
if [[ -z $FILE ]] fail "No file given"
FILE=${FILE:a}
if [[ ! -f $FILE ]] FILE=${PACKAGE_DIR}/${FILE}.tar.gz
if [[ ! -f $FILE ]] fail "No such package: $FILE"
local tmpfile=$(mktemp ${TMPDIR}/uninstallXXXXXX)
cd ${TARGET}
tar tzf ${FILE} > ${tmpfile}
grep -v '/$' ${tmpfile} | tr '\n' '\0' | xargs -0 $DEBUG rm -f
grep '/$' ${tmpfile} | perl -le '$/ = ""; print join("\n", reverse split(/\n/, <>))' | tr '\n' '\0' | xargs -0 $DEBUG rmdir || true
rm ${tmpfile}
}
function run_install {
if [[ -z $FILE ]] fail "No file given"
FILE=${FILE:a}
if [[ ! -f $FILE ]] FILE=${PACKAGE_DIR}/${FILE}.tar.gz
if [[ ! -f $FILE ]] fail "No such package: $FILE"
cd ${TARGET}
tar xzf ${FILE}
}
while [[ -n $1 ]]; do
case $1 in
build|-b) MODE=build ;;
uninstall|-u) MODE=uninstall; FILE=$2; shift ;;
install|-i) MODE=install; FILE=$2; shift ;;
package|-p) PACKAGE=$2; shift ;;
command|-c) INSTALL_COMMAND=$2; shift ;;
--) shift ; break; ;;
*) fail "Unknown option $1" ;;
esac
shift
done
if [[ -z $MODE ]] fail "No mode given"
run_${MODE} $@