skip to navigation
skip to content

Not Logged In

buildout.eggscleaner 0.1.6

A buildout extension to move non-used eggs to a specified directory

Buildout Eggscleaner

Introduction

The buildout.eggscleaner extensions can be used to ensure your egg directory only contains 'used' eggs. The extension can report, but also move unused eggs to a specified directory.

Installation

Eggscleaner is a buildout extensions, can add it like so

[buildout]
extensions =
        buildout.eggscleaner

Options

old-eggs-directory
The directory you want buildout.eggscleaner to move your unused eggs to. Should an excact egg already exist, we remove the one in the ''used'' eggs directory

Example

[buildout]
extensions =
        buildout.eggscleaner
old-eggs-directory = ${buildout:directory}/old-eggs/

Tested with

zc.buildout: 1.4.3, 1.5.1, 1.5.2, 1.6.0 python: 2.4.6, 2.6.8

Working with other extensions

I looked at how buildout.dumppickedversions works and made this extension work in a similar manner. This extension will run alongside that one perfectly well.

Example outputs

Nothing do

*************** BUILDOUT EGGSCLEANER ****************
No unused eggs in eggs directory
*************** /BUILDOUT EGGSCLEANER ****************

Moving eggs

*************** BUILDOUT EGGSCLEANER ****************
Moved unused egg: webcouturier.dropdownmenu-2.3-py2.6.egg
Moved unused egg: collective.uploadify-1.0-py2.6.egg
Moved unused egg: collective.simplesocial-1.6-py2.6.egg
Moved unused egg: collective.autopermission-1.0b2-py2.6.egg
*************** /BUILDOUT EGGSCLEANER ****************

Reporting

*************** BUILDOUT EGGSCLEANER ****************
Don't have a 'old-eggs-directory' set, only reporting
Can add it by adding 'old-eggs-directory = ${buildout:directory}/old-eggs' to your [buildout]
Found unused egg: webcouturier.dropdownmenu-2.3-py2.6.egg
Found unused egg: plone.recipe.command-1.1-py2.6.egg
Found unused egg: collective.uploadify-1.0-py2.6.egg
Found unused egg: Products.DocFinderTab-1.0.5-py2.6.egg
Found unused egg: collective.simplesocial-1.6-py2.6.egg
Found unused egg: collective.autopermission-1.0b2-py2.6.egg
Found unused egg: Products.Clouseau-1.0-py2.6.egg
*************** /BUILDOUT EGGSCLEANER ****************

Detailed Documentation

Let's create an egg to use it in our tests:

>>> mkdir('myegg')
>>> write('myegg', 'setup.py',
... '''
... from setuptools import setup
... setup(name='myegg', version='1.0',)
... ''')
>>> write('myegg', 'README', '')
>>> print system(buildout+' setup myegg bdist_egg'), # doctest: +ELLIPSIS
Running setup script 'myegg/setup.py'.
...

>>> mkdir('baregg')
>>> write('baregg', 'setup.py',
... '''
... from setuptools import setup
... setup(name='baregg', version='1.0',)
... ''')
>>> write('baregg', 'README', '')
>>> print system(buildout+' setup baregg bdist_egg'), # doctest: +ELLIPSIS
Running setup script 'baregg/setup.py'.
...

Now let's create a buildout to install the egg and to use buildout.eggscleaner:

>>> write('buildout.cfg',
... '''
... [buildout]
... index = http://pypi.python.org/simple
... extensions = buildout.eggscleaner
... eggs-directory = ${buildout:directory}/eggs
... parts = foo
... find-links += %s
... [foo]
... recipe = zc.recipe.egg
... eggs = myegg
... ''' % join('myegg', 'dist'))

Running the buildout will print information about unused eggs:

>>> print system(buildout), # doctest: +ELLIPSIS
Getting distribution for 'buildout.eggscleaner'.
...

When we only want to report unused eggs we omit the '''old-eggs-directory''' option.

>>> write('buildout.cfg',
... '''
... [buildout]
... index = http://pypi.python.org/simple
... extensions = buildout.eggscleaner
... eggs-directory = ${buildout:directory}/eggs
... parts = foo
... find-links += %s
... [foo]
... recipe = zc.recipe.egg
... eggs = baregg
... ''' % join('baregg', 'dist'))
>>> print system(buildout) # doctest:+ELLIPSIS
Uninstalling foo.
Installing foo.
Getting distribution for 'baregg'.
Got baregg 1.0.
*************** BUILDOUT EGGSCLEANER ****************
Don't have a 'old-eggs-directory' set, only reporting
Can add it by adding 'old-eggs-directory = ${buildout:directory}/old-eggs' to your [buildout]
...
Found unused egg: myegg...
*************** /BUILDOUT EGGSCLEANER ****************
<BLANKLINE>

Check that indeed nothing has been moved nor deleted:

>>> assert 'myegg' in  ''.join(os.listdir('eggs'))

If we want to move unused eggs, we just add an old-eggs-directory option and give a directory target:

>>> write('buildout.cfg',
... '''
... [buildout]
... index = http://pypi.python.org/simple
... extensions = buildout.eggscleaner
... eggs-directory = ${buildout:directory}/eggs
... old-eggs-directory = ${buildout:directory}/old-eggs
... parts = foo
... find-links += %s
... [foo]
... recipe = zc.recipe.egg
... eggs = baregg
... ''' % join('baregg', 'dist'))

>>> print system(buildout) # doctest:+ELLIPSIS
Updating foo.
*************** BUILDOUT EGGSCLEANER ****************
...
Moved unused egg: myegg...
*************** /BUILDOUT EGGSCLEANER ****************
<BLANKLINE>

Check that indeed 'myegg' has been moved:

>>> assert 'myegg' not in  ''.join(os.listdir('eggs')), 'myegg has not been moved out of egg dir'
>>> assert 'myegg' in  ''.join(os.listdir('old-eggs')), 'myegg has not been moved to old-egg dir'

And baregg is still present:

>>> assert 'baregg' in  ''.join(os.listdir('eggs')), 'baregg is not present in egg dir'

Contributors

  • Peter Uittenbroek, Author

Change history

0.1.5 (2012-08-17)

  • Redid documentation [thepjot]
  • Added doctest [thepjot]

0.1 (internal release)

  • Creation [thepjot]
 
File Type Py Version Uploaded on Size
buildout.eggscleaner-0.1.6.zip (md5) Source 2012-08-17 14KB
  • Downloads (All Versions):
  • 76 downloads in the last day
  • 379 downloads in the last week
  • 1071 downloads in the last month