Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 212573 | Differences between
and this patch

Collapse All | Expand All

(-)euse (+81 lines)
Lines 26-31 Link Here
26
			-h | --help)    MODE="showhelp";;
26
			-h | --help)    MODE="showhelp";;
27
			-v | --version) MODE="showversion";;
27
			-v | --version) MODE="showversion";;
28
			-i | --info)    MODE="showdesc";;
28
			-i | --info)    MODE="showdesc";;
29
			-I | --info-installed) MODE="showinstdesc";;
29
			-l | --local)   SCOPE="local";;
30
			-l | --local)   SCOPE="local";;
30
			-g | --global)  SCOPE="global";;
31
			-g | --global)  SCOPE="global";;
31
			-a | --active)  MODE="showflags";;
32
			-a | --active)  MODE="showflags";;
Lines 317-322 Link Here
317
	fi
318
	fi
318
}
319
}
319
320
321
# Works like showdesc() but displays only descriptions of which the appropriate
322
# ebuild is installed and prints the name of those packages.
323
showinstdesc() {
324
	local descdir
325
	local current_desc
326
	local args
327
	local foundone=0
328
	
329
	args="${*:-*}"
330
	
331
	if [ -z "${SCOPE}" ]; then
332
		SCOPE="global" showinstdesc ${args}
333
		echo
334
		SCOPE="local" showinstdesc ${args}
335
		return
336
	fi
337
	
338
	descdir="$(get_portdir)/profiles"
339
	
340
	[ "${SCOPE}" == "global" ] && echo "global use flags (searching: ${args})"
341
	[ "${SCOPE}" == "local" ] && echo "local use flags (searching: ${args})"
342
	echo "************************************************************"
343
	
344
	if [ "${args}" == "*" ]; then
345
		args="$(get_useflaglist | sort -u)"
346
	fi
347
	
348
	set ${args}
349
	
350
	while [ -n "${1}" ]; do
351
		if [ "${SCOPE}" == "global" ]; then
352
			desc=`grep "^${1}  *-" "${descdir}/use.desc"`
353
			if [ ! -z "$desc" ]; then
354
				get_flagstatus "${1}"
355
				echo $desc
356
				# get list of installed packages matching this USE flag.
357
				# equery does only display package names if it is called in
358
				# backtick operators
359
				packages="`equery hasuse -i ${1}`"
360
				echo -n "Installed packages matching this USE flag: "
361
				if [ -z "$packages" ]; then
362
					foundone=0
363
					echo "none"
364
				else
365
					foundone=1
366
					echo 
367
					echo $packages | tr ' ' '\n' | while read line; do
368
						# cut off package's version information
369
						echo $line | sed  -e 's/\-[0-9].*$//' 
370
					done
371
				fi
372
			fi
373
		fi
374
		# local flags are a bit more complicated as there can be multiple 
375
		# entries per flag and we can't pipe into printf
376
		if [ "${SCOPE}" == "local" ]; then
377
			OIFS="$IFS"
378
			IFS=$'\n'
379
			for line in `grep ":${1}  *-" "${descdir}/use.local.desc" \
380
			| sed -e "s/^\([^:]\+\):\(${1}\) *- *\(.\+\)/\1|\2|\3/g"`; do
381
				pkg="$(echo $line | cut -d\| -f 1)"
382
				flag="$(echo $line | cut -d\| -f 2)"
383
				desc="$(echo $line | cut -d\| -f 3)"
384
				# print name only if package is installed
385
				if [ `eix -Ie ${pkg} | wc -l` -gt 1 ]; then
386
					foundone=1
387
					get_flagstatus "${flag}"
388
					printf "%s (%s):\n%s\n\n" "${flag}" "${pkg}" "${desc}"
389
				fi
390
			done
391
			IFS="$OIFS"
392
		fi
393
		shift
394
	done
395
	
396
	if [ ${foundone} == 0 ]; then
397
		echo "no matching entries found"
398
	fi
399
}
400
320
# show a list of all currently active flags and where they are activated
401
# show a list of all currently active flags and where they are activated
321
showflags() {
402
showflags() {
322
	local args
403
	local args

Return to bug 212573