mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2024-12-29 06:15:24 +00:00
78 lines
1.9 KiB
Bash
Executable File
78 lines
1.9 KiB
Bash
Executable File
#!/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 ~/opt/mac
|
|
$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 ~/opt/mac
|
|
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 ~/opt/mac
|
|
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} $@
|