View | Details | Raw Unified
Collapse All | Expand All

(-) euse (+81 lines)
 Lines 26-31    Link Here 
			-h | --help)    MODE="showhelp";;
			-h | --help)    MODE="showhelp";;
			-v | --version) MODE="showversion";;
			-v | --version) MODE="showversion";;
			-i | --info)    MODE="showdesc";;
			-i | --info)    MODE="showdesc";;
			-I | --info-installed) MODE="showinstdesc";;
			-l | --local)   SCOPE="local";;
			-l | --local)   SCOPE="local";;
			-g | --global)  SCOPE="global";;
			-g | --global)  SCOPE="global";;
			-a | --active)  MODE="showflags";;
			-a | --active)  MODE="showflags";;
 Lines 317-322    Link Here 
	fi
	fi
}
}
# Works like showdesc() but displays only descriptions of which the appropriate
# ebuild is installed and prints the name of those packages.
showinstdesc() {
	local descdir
	local current_desc
	local args
	local foundone=0
	
	args="${*:-*}"
	
	if [ -z "${SCOPE}" ]; then
		SCOPE="global" showinstdesc ${args}
		echo
		SCOPE="local" showinstdesc ${args}
		return
	fi
	
	descdir="$(get_portdir)/profiles"
	
	[ "${SCOPE}" == "global" ] && echo "global use flags (searching: ${args})"
	[ "${SCOPE}" == "local" ] && echo "local use flags (searching: ${args})"
	echo "************************************************************"
	
	if [ "${args}" == "*" ]; then
		args="$(get_useflaglist | sort -u)"
	fi
	
	set ${args}
	
	while [ -n "${1}" ]; do
		if [ "${SCOPE}" == "global" ]; then
			desc=`grep "^${1}  *-" "${descdir}/use.desc"`
			if [ ! -z "$desc" ]; then
				get_flagstatus "${1}"
				echo $desc
				# get list of installed packages matching this USE flag.
				# equery does only display package names if it is called in
				# backtick operators
				packages="`equery hasuse -i ${1}`"
				echo -n "Installed packages matching this USE flag: "
				if [ -z "$packages" ]; then
					foundone=0
					echo "none"
				else
					foundone=1
					echo 
					echo $packages | tr ' ' '\n' | while read line; do
						# cut off package's version information
						echo $line | sed  -e 's/\-[0-9].*$//' 
					done
				fi
			fi
		fi
		# local flags are a bit more complicated as there can be multiple 
		# entries per flag and we can't pipe into printf
		if [ "${SCOPE}" == "local" ]; then
			OIFS="$IFS"
			IFS=$'\n'
			for line in `grep ":${1}  *-" "${descdir}/use.local.desc" \
			| sed -e "s/^\([^:]\+\):\(${1}\) *- *\(.\+\)/\1|\2|\3/g"`; do
				pkg="$(echo $line | cut -d\| -f 1)"
				flag="$(echo $line | cut -d\| -f 2)"
				desc="$(echo $line | cut -d\| -f 3)"
				# print name only if package is installed
				if [ `eix -Ie ${pkg} | wc -l` -gt 1 ]; then
					foundone=1
					get_flagstatus "${flag}"
					printf "%s (%s):\n%s\n\n" "${flag}" "${pkg}" "${desc}"
				fi
			done
			IFS="$OIFS"
		fi
		shift
	done
	
	if [ ${foundone} == 0 ]; then
		echo "no matching entries found"
	fi
}
# show a list of all currently active flags and where they are activated
# show a list of all currently active flags and where they are activated
showflags() {
showflags() {
	local args
	local args