Where is that egg?

In the Zope/Plone world working with zc.buildout is the norm nowadays. Many people use an egg cache for speed and disk space preservation. That way eggs aren’t stored directly in your buildout anymore and it can by cumbersome to get there location from the commandline. One way to solve this is collective.recipe.omelette but that only exposes the paths for all eggs at once. I wrote a small shell function to solve that issue.

function eggpath() {
        local name=$1;
        shift;
        local files=$*;
        if [ -z $files ]; then
                if [ -e ./bin/instance* ]; then
                        local files="$files ./bin/instance*";
                fi
                if [ -e ./bin/client* ]; then
                        local files="$files ./bin/client*";
                fi
        fi
        grep -o -iE "/.*$name.*.egg" $files | sort -u;
}

With this you can get the path of an egg from any script. First argument is a regexp which is used for matching the name, most of the time this is a simple string with a part of the egg name. Optionally you can provide the name of the script(s) which should be checked, if it’s not given the function will look for bin/instance* or bin/client* scripts by default, which are the most common names for the Zope scripts in Plone buildouts.

My most common use case for this is for opening the egg with my editor like this: mate `eggpath some.egg`.

I hope this is useful for other people as well.

Advertisements
Published in: on February 4, 2009 at 3:56 pm  Comments (1)  

The URI to TrackBack this entry is: https://fschulze.wordpress.com/2009/02/04/where-is-that-egg/trackback/

RSS feed for comments on this post.

One CommentLeave a comment

  1. hoping the formatting will keep intact, my version of this was…

    $ cat .scripts/egg
    #!/bin/bash
    while [ ! -d bin ]; do
    cd ..
    done
    grep “$*” bin/instance bin/paster | tr -d , | xargs mate


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: