View previous topic :: View next topic |
Author |
Message |
kKDu Apprentice


Joined: 18 Aug 2003 Posts: 187
|
Posted: Fri Oct 03, 2003 3:05 pm Post subject: To have a fast look at ebuilds |
|
|
[NOTE]: The same result of these script you can get now with esearch.
Code: | esearch -e sylpheed-claws
[ U] sylpheed-claws (0.9.7): Bleeding edge version of Sylpheed
Portage [1] sylpheed-claws-0.9.5-r1
Portage [2] sylpheed-claws-0.9.7
Portage [3] sylpheed-claws-0.9.8
Overlay [4] sylpheed-claws-0.9.5-r2
Show Ebuild:
|
Only the lookout is little different.
[/NOTE]
Often I would like to have a fast look in a ebuild. So I have created a short script, called ecat, that is doing this.
Now I must only write Code: | ecat sylpheed-claws | in any directory and I see a list in which I can choose the sylpheed-claws-ebuild I want to see.
Code: | evim sylpheed-claws
The last stable version is:
[ U] sylpheed-claws (0.9.7): Bleeding edge version of Sylpheed
Choose a ebuild...:
[ 1 ] sylpheed-claws-0.9.5-r1
[ 2 ] sylpheed-claws-0.9.7
[ 3 ] sylpheed-claws-0.9.8
[ 4 O] sylpheed-claws-0.9.5-r2
...by entering a number:
|
Here is the script:
NOTE: You must have emerged esearch
Code: | #!/bin/bash
# here you can put an editor of your choice, if you
# don't want to use the global $EDITOR
LOCAL_EDITOR=""
if [ "$LOCAL_EDITOR" ]; then
ECAT="$LOCAL_EDITOR"
elif [ "$EDITOR" ]; then
ECAT="$EDITOR"
else
ECAT="cat"
fi
PORTDIR="/usr/portage"
#Looks for ${PORTDIR} and ${PORTDIR_OVERLAY}
source /etc/make.conf
#Set up colors
NO="\x1b[0;0m"
BR="\x1b[0;01m"
CY="\x1b[36;01m"
GR="\x1b[32;01m"
#Use ${PORTDIR} if it exists
if [ -d ${PORTDIR}"/"`esearch -n ^$1\$ | awk 'NR==4 { print $2 }'` ]; then
edir=${PORTDIR}"/"`esearch -n ^$1\$ | awk 'NR==4 { print $2 }'`
fi
#Use ${PORTDIR_OVERLAY} if it exists, too.
if [ -d ${PORTDIR_OVERLAY}"/"`esearch -n ^$1\$ | awk 'NR==4 { print $2 }'` ]; then
edir_overlay=${PORTDIR_OVERLAY}"/"`esearch -n ^$1\$ | awk 'NR==4 { print $2 }'`
fi
echo -e $GR"The last stable version is:"$NO
echo " "`esearch -c ^$1\$`
echo " "
echo -e $GR"Choose a ebuild...:"$NO
#List the ebuilds. Ebuilds, that are in ${PORTDIR_OVERLAY} are listen at
#the end with a O next to their number
declare -a ebuild
for i in `ls $edir | awk '/ebuild$/ { print }'`;do
z=$[$z+1]
echo -e "["$CY $z $NO"] "$BR $i $NO | sed 's/\.ebuild//g'
ebuild[$z]=$i
done
for i in `ls $edir_overlay | awk '/ebuild$/ { print }'`; do
z=$[$z+1]
echo -e "["$CY $z" O"$NO"] "$BR $i $NO | sed 's/\.ebuild//g'
ebuild[$z]=$i
done
echo -ne $GR"...by entering a number: "$NO
read number
if [ $number ]; then
echo " "
echo " * * * "$ECAT" "${ebuild[$number]}" * * *"
echo " "
if [ -e $edir/${ebuild[$number]} ]; then
$ECAT $edir/${ebuild[$number]} #| less
else
$ECAT $edir_overlay/${ebuild[$number]} #| less
fi
fi
|
Changelog
2003-10-03 if you press enter instead of a number, you are leaving the script
2003-10-21 change the editor choosing dialog
2004-01-21 now overlay works correct and I have change the EDITOR dialog again
Last edited by kKDu on Wed Jan 21, 2004 7:42 pm; edited 10 times in total |
|
Back to top |
|
 |
Pythonhead Developer


Joined: 16 Dec 2002 Posts: 1801 Location: Redondo Beach, Republic of Calif.
|
Posted: Fri Oct 03, 2003 3:39 pm Post subject: |
|
|
Very handy.
It would be nice if you could have it also check the overlay directory.
You could grab those values pretty easily with:
Code: | source /etc/make.conf |
Then reference ${PORTDIR} and ${PORTDIR_OVERLAY} |
|
Back to top |
|
 |
kKDu Apprentice


Joined: 18 Aug 2003 Posts: 187
|
Posted: Fri Oct 03, 2003 4:08 pm Post subject: |
|
|
Nice trick.
I have added it
But not enough, now only /usr/portage, ${PORTDIR} or {PORTDIR_OVERLAY} are avaiable. But if you have some ebuilds in /usr/portage for mozilla and some in ${PORTDIR_OVERLAY}, only ebuilds in /usr/portage will be avaiable.
I'm going to change this |
|
Back to top |
|
 |
kKDu Apprentice


Joined: 18 Aug 2003 Posts: 187
|
Posted: Fri Oct 03, 2003 5:54 pm Post subject: |
|
|
Now it works for me with all, ${PORTDIR} and ${PORTDIR_OVERLAY} ebuilds. Ebuilds from ${PORTDIR_OVERLAY} are identified with a O next to their number:
Code: | root #ecat freevo
The last stable version is:
[MN] freevo (1.3.4): Digital video jukebox (PVR, DVR). [ N] freevo (1.3.1): Freevo
Choose a ebuild...:
[ 1 ] freevo-1.3.4
[ 2 O] freevo-1.3.1
[ 3 O] freevo-1.3.2_pre2-r2
[ 4 O] freevo-1.3.2_pre3
[ 5 O] freevo-1.3.2_pre4
...by entering a number: |
Have fun with it  |
|
Back to top |
|
 |
kKDu Apprentice


Joined: 18 Aug 2003 Posts: 187
|
Posted: Sat Oct 04, 2003 5:14 pm Post subject: |
|
|
Important change (see change-log) |
|
Back to top |
|
 |
saskatchewan46 n00b


Joined: 08 Jul 2003 Posts: 57 Location: Saskatchewan
|
Posted: Sat Oct 18, 2003 4:24 am Post subject: |
|
|
This is very useful and fast script. I edited it slightly and renamed it "enano" as I nano the ebuild rather than cat. Thanks muchly for this... |
|
Back to top |
|
 |
BitJam Advocate

Joined: 12 Aug 2003 Posts: 2513 Location: Silver City, NM
|
Posted: Sat Oct 18, 2003 4:40 am Post subject: |
|
|
Kudos kKDu for a great script. It deserves a place in gentoolkit. |
|
Back to top |
|
 |
haceye Apprentice


Joined: 22 May 2003 Posts: 187 Location: Stuttgart, Germany
|
Posted: Mon Oct 20, 2003 3:26 pm Post subject: |
|
|
Hi,
I have talked to kKDu and he allowed me to add a similar function to directly into esearch.
You can use it like this:
Code: |
$ emerge ">=esearch-0.5" # You need the current version
$ esearch -e gentoolkit
[ U] gentoolkit (0.1.33): Collection of unofficial administration scripts for Gentoo
Portage [1] gentoolkit-0.1.32
Portage [2] gentoolkit-0.1.33
Portage [3] gentoolkit-0.1.32-r1
Show Ebuild: 2
# ...
|
David _________________ faster 'emerge -s'? emerge esearch |
|
Back to top |
|
 |
BitJam Advocate

Joined: 12 Aug 2003 Posts: 2513 Location: Silver City, NM
|
Posted: Mon Oct 20, 2003 4:13 pm Post subject: |
|
|
haceye wrote: | I have talked to kKDu and he allowed me to add a similar function to directly into esearch. |
It works great! I have one suggestion. After I am done looking at an ebuild I would prefer to be taken back to the list of ebuilds instead of exiting. Maybe the choice of zero could be used to exit. |
|
Back to top |
|
 |
kKDu Apprentice


Joined: 18 Aug 2003 Posts: 187
|
Posted: Mon Oct 20, 2003 5:11 pm Post subject: |
|
|
Oh yes, it works
The only thing, I'm missing is a sort list of output:
Code: | esearch -e mozilla
...
[ U] mozilla (1.4-r3): The Mozilla Web Browser
Portage [7] mozilla-1.5
Portage [8] mozilla-1.4-r3
Portage [9] mozilla-1.0.1-r3
Portage [10] mozilla-1.1-r1
Portage [11] mozilla-1.4-r4
Portage [12] mozilla-1.3-r2
Portage [13] mozilla-1.2.1-r5
|
like this
Code: | ecat mozilla
The last stable version is:
[ U] mozilla (1.4-r3): The Mozilla Web Browser
Choose a ebuild...:
[ 1 ] mozilla-1.0.1-r3
[ 2 ] mozilla-1.1-r1
[ 3 ] mozilla-1.2.1-r5
[ 4 ] mozilla-1.3-r2
[ 5 ] mozilla-1.4-r3
[ 6 ] mozilla-1.4-r4
[ 7 ] mozilla-1.5
...by entering a number:
|
|
|
Back to top |
|
 |
haceye Apprentice


Joined: 22 May 2003 Posts: 187 Location: Stuttgart, Germany
|
Posted: Mon Oct 20, 2003 8:22 pm Post subject: |
|
|
Hi kKDu (I hope I spelled it right ),
I noticed this error, too. It occurs because listdir() doesn't sort it's output. Here's a little patch to fix this.
Will be part of esearch-0.5.1, of course.
Code: |
54c54,56
< for file in listdir(path):
---
> list = listdir(path)
> list.sort()
> for file in list:
|
David _________________ faster 'emerge -s'? emerge esearch |
|
Back to top |
|
 |
meowsqueak Veteran


Joined: 26 Aug 2003 Posts: 1549 Location: New Zealand
|
Posted: Mon Oct 20, 2003 10:43 pm Post subject: |
|
|
Why not have a variable defined at the top that you can easily change to support nano, vi, etc. Then you don't have to worry about searching and replacing through the script. |
|
Back to top |
|
 |
BitJam Advocate

Joined: 12 Aug 2003 Posts: 2513 Location: Silver City, NM
|
Posted: Wed Oct 29, 2003 4:16 pm Post subject: |
|
|
meowsqueak wrote: | Why not have a variable defined at the top that you can easily change to support nano, vi, etc. Then you don't have to worry about searching and replacing through the script. |
The $PAGER variable might be a good choice. This should already be set to the pager of choice for most people and can be overrriden via: Code: | PAGER=wacky_pager ecat ebuild |
|
|
Back to top |
|
 |
meowsqueak Veteran


Joined: 26 Aug 2003 Posts: 1549 Location: New Zealand
|
Posted: Wed Oct 29, 2003 7:29 pm Post subject: |
|
|
No, do not use $PAGER throughout the script - that would not improve anything. Instead, use an internal variable everywhere in the script, and at the start, set this variable to $PAGER. Some people use this script with nano or vi, which is usually not in $PAGER, and may be in $EDITOR. Having to replace all instances of PAGER with EDITOR defeats the purpose of my original idea, but if there's a single line that you can change to, e.g. 'local PROG=$EDITOR' then it becomes easier to change. This is something that should be considered in ALL scripts - hardcoded program locations are bad too.
Define everything at the start, then use those internal variables throughout the script. That's part of what makes a script well-written. |
|
Back to top |
|
 |
Genone Retired Dev


Joined: 14 Mar 2003 Posts: 9631 Location: beyond the rim
|
Posted: Sun Nov 16, 2003 5:39 am Post subject: |
|
|
We also have now ewhich in gentoolkit which will give you the ebuild filename portage would use for a given package name. |
|
Back to top |
|
 |
kKDu Apprentice


Joined: 18 Aug 2003 Posts: 187
|
Posted: Wed Jan 21, 2004 7:48 pm Post subject: |
|
|
For all that have had problems with the overlay-directory and the sort of the ebuilds, this is now fixed.
NOTE: you don't need this script, if you are happy with esearch -e, which does the same. |
|
Back to top |
|
 |
razamatan Apprentice


Joined: 28 Feb 2003 Posts: 160
|
Posted: Thu Jan 22, 2004 3:39 am Post subject: |
|
|
Genone wrote: | We also have now ewhich in gentoolkit which will give you the ebuild filename portage would use for a given package name. |
thanks for the heads up...
Code: | vi `ewhich [pkgname]` |
lovely. _________________ a razamatan doth speaketh,
"Never attribute to malice, that which can be adequately explained by stupidity" |
|
Back to top |
|
 |
|