#!/bin/bash -e function usage() { cat </dev/null)TOOLS | $TOOL |$(tput sgr0 2>/dev/null) $@" } ALLOW_SUDO=0 while [[ $1 == -* ]] do case $1 in -s) ALLOW_SUDO=1 ;; *) usage exit ;; esac shift done ACTION=$1 TOOL=$2 if [ "$TOOL" == "all" ] then for t in $($0 list) do [ "$ALLOW_SUDO" -eq 1 ] && $0 -s $ACTION $t [ "$ALLOW_SUDO" -eq 0 ] && $0 $ACTION $t done exit 0 elif [ -z "$TOOL" -a "$ACTION" != "list" -a "$ACTION" != "setup" ] then usage exit fi cd $(dirname "${BASH_SOURCE[0]}")/.. case $ACTION in setup) PACKAGE_REQS="build-essential libtool g++ gcc texinfo curl wget automake autoconf python-dev" PACKAGE_COUNT=10 if [ $(dpkg -l $PACKAGE_REQS | grep "^ii" | wc -l) -ne $PACKAGE_COUNT ] then if [ "$ALLOW_SUDO" -eq 1 ] then sudo apt-get -y install $PACKAGE_REQS else echo "Please install the following packages: $PACKAGE_REQS" fi fi echo "PATH=\"$PWD/bin:\$PATH\"" >> ~/.bashrc if [ -e ~/.zshrc ] then echo "PATH=\"$PWD/bin:\$PATH\"" >> ~/.zshrc fi ;; list) for t in * do [ ! -e "$t/install" ] && continue echo $t done ;; bin) cd bin ln -sf ../$TOOL/bin/* . tool_log "bin symlinks updated" cd .. ;; install) cd $TOOL if git status --ignored . | egrep -q 'Untracked|Ignored' then tool_log "appears to already be installed. Uninstall first?" exit 0 fi tool_log "starting install, logging to $PWD/install.log..." rm -f install.log [ -x ./install-root -a "$ALLOW_SUDO" -eq 1 ] && sudo ./install-root >> install.log 2>&1 if ./install >>install.log 2>&1 then tool_log "install finished" else tool_log "INSTALL FAILED" cat install.log >&2 exit 1 fi cd .. $0 bin $TOOL ;; uninstall) cd $TOOL [ -x ./uninstall ] && ./uninstall git clean -dffx . tool_log "uninstall finished" cd .. ;; upgrade) cd $TOOL if [ -x ./upgrade ] then ./upgrade tool_log "upgrade complete!" else tool_log "no upgrade script -- reinstalling" $0 uninstall $TOOL $0 install $TOOL fi ;; reinstall) $0 uninstall $TOOL $0 install $TOOL ;; search) cat README.md | grep "<\!--tool-->" | sed "s/<\!--[^-]*-->//g" | grep -i "$TOOL" ;; test) if ! cat README.md | grep "<\!--tool-->" | grep "| \[$TOOL\](" | grep -q -- "--test--" then tool_log "Tests not enabled." else [ "$ALLOW_SUDO" -eq 1 ] && $0 -s install $TOOL [ "$ALLOW_SUDO" -eq 0 ] && $0 install $TOOL cd $TOOL if [ -f ./test ] then tool_log "Running test script." ./test tool_log "test script succeeded!" exit 0 else tool_log "Install succeeded. No test script!" exit 0 fi fi ;; *) echo "TOOLS | ERROR | unknown action $ACTION" ;; esac