From c819d146be6bce86d97019494173253e71b85d2f Mon Sep 17 00:00:00 2001 From: fuzzyray Date: Tue, 5 May 2009 17:39:24 +0000 Subject: Rearrange trunk to support gentoolkit version 0.3. Split into gentoolkit, gentoolkit-dev, and deprecated. Import djanderson's work on the gentoolkit library and equery svn path=/trunk/gentoolkit/; revision=589 --- bin/euse | 547 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 547 insertions(+) create mode 100755 bin/euse (limited to 'bin/euse') diff --git a/bin/euse b/bin/euse new file mode 100755 index 0000000..b49b120 --- /dev/null +++ b/bin/euse @@ -0,0 +1,547 @@ +#!/bin/bash + +# $Header$ + +# bash replacement for the original euse by Arun Bhanu +# Author: Marius Mauch +# Licensed under the GPL v2 + +PROGRAM_NAME=euse +PROGRAM_VERSION=$(cat /etc/gentoolkit-version) + +MAKE_CONF_PATH=/etc/make.conf +MAKE_GLOBALS_PATH=/etc/make.globals +MAKE_PROFILE_PATH=/etc/make.profile +MAKE_CONF_BACKUP_PATH=/etc/make.conf.euse_backup + +[ -z "${MODE}" ] && MODE="showhelp" # available operation modes: showhelp, showversion, showdesc, showflags, modify + +parse_arguments() { + if [ -z "${1}" ]; then + return + fi + while [ -n "${1}" ]; do + case "${1}" in + -h | --help) MODE="showhelp";; + -V | -v | --version) MODE="showversion";; + -i | --info) MODE="showdesc";; + -I | --info-installed) MODE="showinstdesc";; + -l | --local) SCOPE="local";; + -g | --global) SCOPE="global";; + -a | --active) MODE="showflags";; + -E | --enable) MODE="modify"; ACTION="add";; + -D | --disable) MODE="modify"; ACTION="remove";; + -P | --prune) MODE="modify"; ACTION="prune";; + -*) + echo "ERROR: unknown option ${1} specified." + echo + MODE="showhelp" + ;; + "%active") + get_useflags + ARGUMENTS="${ARGUMENTS} ${ACTIVE_FLAGS[9]}" + ;; + *) + ARGUMENTS="${ARGUMENTS} ${1}" + ;; + esac + shift + done +} + +error() { + echo "ERROR: ${1}" + set +f + exit 1 +} + +get_real_path() { + set -P + cd "$1" + pwd + cd "$OLDPWD" + set +P +} + +check_sanity() { + # file permission tests + local descdir + local make_defaults + + descdir="$(get_portdir)/profiles" + + [ ! -r "${MAKE_CONF_PATH}" ] && error "${MAKE_CONF_PATH} is not readable" + [ ! -r "${MAKE_GLOBALS_PATH}" ] && error "${MAKE_GLOBALS_PATH} is not readable" + [ ! -h "${MAKE_PROFILE_PATH}" ] && error "${MAKE_PROFILE_PATH} is not a symlink" + [ -z "$(get_portdir)" ] && error "\$PORTDIR couldn't be determined" + [ ! -d "${descdir}" ] && error "${descdir} does not exist or is not a directory" + [ ! -r "${descdir}/use.desc" ] && error "${descdir}/use.desc is not readable" + [ ! -r "${descdir}/use.local.desc" ] && error "${descdir}/use.local.desc is not readable" + for make_defaults in $(get_all_make_defaults); do + [ ! -r "$make_defaults" ] && error "$_make_defaults is not readable" + done +# [ ! -r "$(get_make_defaults)" ] && error "$(get_make_defaults) is not readable" + [ "${MODE}" == "modify" -a ! -w "${MAKE_CONF_PATH}" ] && error ""${MAKE_CONF_PATH}" is not writable" +} + +showhelp() { +cat << HELP +${PROGRAM_NAME} (${PROGRAM_VERSION}) + +Syntax: ${PROGRAM_NAME}