public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-user] Simplistic bash-script to manage package.use
@ 2008-07-12 21:19 Mikko Husari
  2008-07-12 21:42 ` Gentoo User
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Mikko Husari @ 2008-07-12 21:19 UTC (permalink / raw
  To: gentoo-user

[-- Attachment #1: Type: text/plain, Size: 658 bytes --]

greetings earthlings,

i did not found (nor did i look for long enough) any tools/scripts to 
easily manage package.use file, so i did my own. now i started to think 
that, if there really is not any, my creation would be sufficient 
(although possibly buggy) for most users who wish to have "easy" control 
over package.use.

yes, i know this is not the best place to "announce" but, this is not an 
real announcement, this is an query for an superior solution which would 
show my creation to be useless/dublicate/stupid. (if mine is 
useless/stupid it would be nice, so i would not have to maintain it and 
i also could use some real software).

-- husku

[-- Attachment #2: guse.sh --]
[-- Type: text/plain, Size: 3126 bytes --]

#!/bin/bash

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.


UF="package.use"
if [[ -z $1 ]]; then
	echo "guse.sh pkgspec [flag modifiers]"
	echo "  - list use-flags for package by leaving the modifiers out"
	echo "  - this little script fondles your package.use"
	echo "	- by using double-dash (--) you are doomed back to default"
	echo "example:"
	echo "   guse.sh kopete qq privacy -yahoo -msn jabber --highlight"
	echo
	exit
fi
[[ -n $1 ]] && ROWS=`grep $1 $UF` && HITS=`echo "${ROWS}"|wc -l`
[[ $HITS -gt 1 ]] && echo "Duplicates" && echo "$ROWS" && exit

# search from portage
[[ $HITS -lt 1 ]] && OLD=`emerge --nospinner -s ${1}|grep \*|awk '{print $2}'` \
&& HITS=`echo "${OLD}"|wc -l` && NEWATOM="yes"

if [[ $HITS -gt 1 ]]; then
	echo "All Candidates:"
	echo "${OLD}"
	exit
elif [[ $HITS -lt 1 ]]; then
	echo Package\ atom\ not\ found
	exit
else 
	if [[ -n $NEWATOM ]]; then
		if [[ -n $2 ]]; then
			for a; do
				NEW="$NEW $a"
			done
			echo new: ${NEW:0}
			echo ${NEW:0} >> $UF
		else
			equery uses $1
		fi
	else
		OLD="${ROWS}";
 		OLD_sed=`echo "${OLD}"|sed 's/\ /\\\ /g'`
		OLD_sed=`echo "${OLD_sed}"|sed 's/\\//\\\\\//g'`
		ORIG_sed=$OLD_sed
		if [[ -z $2 ]]; then
			equery uses $1
			echo Your\ custom\ Set:
			echo $OLD
			exit
		fi
		for a; do
			loops=$(( $loops+1 ));
			if [[ loops -gt 1 ]]; then
			if [[ -n $a ]]; then
				[[ `equery uses $1|grep ${a:1}|wc -l` -lt 1 ]] && echo Typo\:\ $a\ Does\ not\ exists && exit
				if [[ ${a:0:1} == "-" && $OLD =~ " "${a:1} ]]; then
					
					if [[ ${a:0:2} == "--" ]]; then
						# remove
						echo remove negative: ${a:1}
						OLD_sed=`echo "${OLD_sed}"|sed 's/ '"${a:1}"'/ /g'`
					else	
						# disable
						echo disable: ${a:1}
						OLD_sed=`echo "${OLD_sed}"|sed 's/'${a:1}'/'${a}'/g'`
					fi
					
				elif [[ ${a:0:1} != "-" && $OLD =~ " -"${a} ]]; then
					# enable
					echo enable: $a
					OLD_sed=`echo "${OLD_sed}"|sed 's/-'${a}'/'${a}'/g'`
					
				elif [[ $OLD =~ " ${a}" ]]; then
					echo keeping: $a
				else
					if [[ ${a:0:2} = "--" ]]; then
						# remove
						echo remove positive: ${a:2}
						OLD_sed=`echo "${OLD_sed}"|sed 's/ '${a:2}'/ /'`
					else
						OLD_sed="${OLD_sed}\\ $a"
						echo add: $a
					fi
				fi
			elif [[ -z $a ]]; then
				echo This is what you have:
				echo $OLD
				exit
			else
				NEW="$OLD_sed\\ $a"
				echo lisataan: $NEW
				OLD_sed=$NEW
			fi
			else
				echo ATOM: `echo $OLD|awk '{print $1}'`
			fi
		done
		[[ "$OLD_sed" != "$ORIG_sed" ]] && sed -i.bak 's/'"${ORIG_sed}"'/'"${OLD_sed}"'/' $UF
	fi
fi

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2008-07-14  0:21 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-12 21:19 [gentoo-user] Simplistic bash-script to manage package.use Mikko Husari
2008-07-12 21:42 ` Gentoo User
2008-07-12 22:01   ` Mikko Husari
2008-07-13 10:38     ` Gentoo User
2008-07-13 10:48       ` Mikko Husari
2008-07-13 15:19         ` Alan McKinnon
2008-07-13 16:07       ` Neil Bothwick
2008-07-14  0:19         ` Gentoo User
2008-07-14  0:21           ` Neil Bothwick
2008-07-13 11:29 ` Arttu V.
2008-07-13 12:51   ` Mikko Husari
2008-07-13 11:32 ` Neil Bothwick
2008-07-13 12:50   ` Mikko Husari
2008-07-13 13:07     ` Neil Bothwick
2008-07-13 13:42       ` Mikko Husari

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox