Metadata-Version: 1.0
Name: buildout.eggscleaner
Version: 0.1.5
Summary: A buildout extension to move non-used eggs to a specified directory
Home-page: https://github.com/thepjot/buildout.eggscleaner
Author: Peter Uittenbroek
Author-email: uittenbroek@goldmund-wyldebeast-wunderliebe.com
License: ZPL
Description: 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]
        
        0.1.4 (2012-08-17)
        
        - Redid documentation
          [thepjot]
        
        0.1.3 (2012-08-17)
        
        - Added doctest
          [thepjot]
        
        0.1 (internal release)
        ----------------
        - Creation
          [thepjot]
        
        
Keywords: buildout extensions eggs directory clean
Platform: UNKNOWN
Classifier: Framework :: Buildout
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: Zope Public License
