public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
From: Mikko Husari <husku@husku.net>
To: gentoo-user@lists.gentoo.org
Subject: [gentoo-user] Simplistic bash-script to manage package.use
Date: Sun, 13 Jul 2008 00:19:56 +0300	[thread overview]
Message-ID: <48791FFC.5040901@husku.net> (raw)

[-- 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

             reply	other threads:[~2008-07-12 21:20 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-12 21:19 Mikko Husari [this message]
2008-07-12 21:42 ` [gentoo-user] Simplistic bash-script to manage package.use 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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48791FFC.5040901@husku.net \
    --to=husku@husku.net \
    --cc=gentoo-user@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox