From 258a81471b4106f12bafee2e5c0a5458e2db2280 Mon Sep 17 00:00:00 2001 From: Paul Varner Date: Tue, 28 Dec 2010 16:39:13 -0600 Subject: Added euse from bug 259318 --- bin/euse | 937 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 815 insertions(+), 122 deletions(-) (limited to 'bin') diff --git a/bin/euse b/bin/euse index 10f75b0..fc9d60f 100755 --- a/bin/euse +++ b/bin/euse @@ -13,6 +13,7 @@ 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 +PACKAGE_USE_PATH=/etc/portage/package.use [ -z "${MODE}" ] && MODE="showhelp" # available operation modes: showhelp, showversion, showdesc, showflags, modify @@ -32,13 +33,14 @@ parse_arguments() { -E | --enable) MODE="modify"; ACTION="add";; -D | --disable) MODE="modify"; ACTION="remove";; -P | --prune) MODE="modify"; ACTION="prune";; + -p | --package) MODE="modify"; shift; PACKAGE=${1}; SCOPE="local";; -*) echo "ERROR: unknown option ${1} specified." echo MODE="showhelp" ;; "%active") - get_useflags + get_portageuseflags ARGUMENTS="${ARGUMENTS} ${ACTIVE_FLAGS[9]}" ;; *) @@ -49,12 +51,20 @@ parse_arguments() { done } -error() { - echo "ERROR: ${1}" +fatal() { + echo -e "${*}" | sed -e "s/^/ERROR: /g" set +f exit 1 } +error() { + echo -e "${*}" | sed -e "s/^/ERROR: /g" +} + +warn() { + echo -e "${*}" | sed -e "s/^/WARNING: /g" +} + get_real_path() { set -P cd "$1" @@ -63,6 +73,8 @@ get_real_path() { set +P } +# Function: check_sanity {{{ +# Performs some basic system sanity checks check_sanity() { # file permission tests local descdir @@ -70,23 +82,23 @@ check_sanity() { 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" + [ ! -r "${MAKE_CONF_PATH}" ] && fatal "${MAKE_CONF_PATH} is not readable" + [ ! -r "${MAKE_GLOBALS_PATH}" ] && fatal "${MAKE_GLOBALS_PATH} is not readable" + [ ! -h "${MAKE_PROFILE_PATH}" ] && fatal "${MAKE_PROFILE_PATH} is not a symlink" + [ -z "$(get_portdir)" ] && fatal "\$PORTDIR couldn't be determined" + [ ! -d "${descdir}" ] && fatal "${descdir} does not exist or is not a directory" + [ ! -r "${descdir}/use.desc" ] && fatal "${descdir}/use.desc is not readable" + [ ! -r "${descdir}/use.local.desc" ] && fatal "${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" + [ ! -r "$make_defaults" ] && fatal "$_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" -} + [ "${MODE}" == "modify" -a ! -w "${MAKE_CONF_PATH}" ] && fatal ""${MAKE_CONF_PATH}" is not writable" + [ "${MODE}" == "modify" -a -s "${PACKAGE_USE_PATH}" -a ! -w "${PACKAGE_USE_PATH}" ] && fatal ""${PACKAGE_USE_PATH}" is not writable" +} # }}} showhelp() { cat << HELP -${PROGRAM_NAME} (${PROGRAM_VERSION}) +${PROGRAM_NAME} (${PROGRAM_VERSION}-JJ0) Syntax: ${PROGRAM_NAME}