[Checkins] SVN: grokproject/trunk/ Add handling for the eggs-directory option in buildout.cfg, taken

Maurits van Rees m.van.rees at zestsoftware.nl
Fri May 2 14:23:22 EDT 2008


Log message for revision 86115:
  Add handling for the eggs-directory option in buildout.cfg, taken
  from zopeproject.
  

Changed:
  U   grokproject/trunk/CHANGES.txt
  U   grokproject/trunk/grokproject/__init__.py
  U   grokproject/trunk/grokproject/template/buildout.cfg_tmpl
  U   grokproject/trunk/grokproject/utils.py
  U   grokproject/trunk/tests.txt

-=-
Modified: grokproject/trunk/CHANGES.txt
===================================================================
--- grokproject/trunk/CHANGES.txt	2008-05-02 18:13:00 UTC (rev 86114)
+++ grokproject/trunk/CHANGES.txt	2008-05-02 18:23:21 UTC (rev 86115)
@@ -4,6 +4,9 @@
 0.8 (unreleased)
 ------------------
 
+* Add handling for the eggs-directory option in buildout.cfg, taken
+  from zopeproject.
+
 * Added test.
 
 * Copy the run_buildout function from zopeproject and put it in

Modified: grokproject/trunk/grokproject/__init__.py
===================================================================
--- grokproject/trunk/grokproject/__init__.py	2008-05-02 18:13:00 UTC (rev 86114)
+++ grokproject/trunk/grokproject/__init__.py	2008-05-02 18:23:21 UTC (rev 86115)
@@ -1,16 +1,14 @@
 import sys
 import os
-import os.path
 import optparse
-import shutil
-import tempfile
-import pkg_resources
 import urllib
 import urlparse
 import xml.sax.saxutils
 from paste.script import templates, command
 from paste.script.templates import var, NoDefault
 from grokproject.utils import run_buildout
+from grokproject.utils import default_eggs_dir
+from grokproject.utils import get_buildout_default_eggs_dir
 
 VERSIONINFO_INFO_URL = 'http://grok.zope.org/releaseinfo/current'
 
@@ -81,6 +79,8 @@
                 "bootstrap the buildout.",
                 default=True, should_ask=False,
                 getter=get_boolean_value_for_option),
+        ask_var('eggs_dir', 'Location where zc.buildout will look for and place '
+            'packages', default=default_eggs_dir())
         ]
 
     def check_vars(self, vars, cmd):
@@ -105,6 +105,20 @@
             # Escape values that go in site.zcml.
             vars[var_name] = xml.sax.saxutils.quoteattr(vars[var_name])
         vars['app_class_name'] = vars['project'].capitalize()
+
+        buildout_default = get_buildout_default_eggs_dir()
+        input = os.path.expanduser(vars['eggs_dir'])
+        if input == buildout_default:
+            vars['eggs_dir'] = (
+                '# eggs will be installed in the default buildout location\n'
+                '# (see .buildout/default.cfg in your home directory)')
+        else:
+            vars['eggs_dir'] = (
+                '# Warning: when you share this buildout.cfg with friends\n'
+                '# please remove the eggs-directory line as it is hardcoded.\n'
+                '# Consider adding this to the .buildout/default.cfg in your '
+                'home directory.\n'
+                'eggs-directory = %s') % input
         return vars
 
     def post(self, command, output_dir, vars):

Modified: grokproject/trunk/grokproject/template/buildout.cfg_tmpl
===================================================================
--- grokproject/trunk/grokproject/template/buildout.cfg_tmpl	2008-05-02 18:13:00 UTC (rev 86114)
+++ grokproject/trunk/grokproject/template/buildout.cfg_tmpl	2008-05-02 18:23:21 UTC (rev 86115)
@@ -4,6 +4,7 @@
 find-links = http://download.zope.org/distribution/
 newest = ${newest}
 extends = ${version_info_url}
+${eggs_dir}
 versions = versions
 
 [app]

Modified: grokproject/trunk/grokproject/utils.py
===================================================================
--- grokproject/trunk/grokproject/utils.py	2008-05-02 18:13:00 UTC (rev 86114)
+++ grokproject/trunk/grokproject/utils.py	2008-05-02 18:23:21 UTC (rev 86115)
@@ -1,3 +1,4 @@
+import os
 import sys
 import shutil
 import tempfile
@@ -2,4 +3,24 @@
 import pkg_resources
+from ConfigParser import ConfigParser
 
+HOME = os.path.expanduser('~')
 
+
+def get_buildout_default_eggs_dir():
+    default_cfg = os.path.join(HOME, '.buildout', 'default.cfg')
+    if os.path.isfile(default_cfg):
+        cfg = ConfigParser()
+        cfg.read(default_cfg)
+        if cfg.has_option('buildout', 'eggs-directory'):
+            eggs_dir = cfg.get('buildout', 'eggs-directory').strip()
+            if eggs_dir:
+                return os.path.expanduser(eggs_dir)
+
+def default_eggs_dir():
+    buildout_default = get_buildout_default_eggs_dir()
+    if buildout_default:
+        return buildout_default
+    return os.path.join(HOME, 'buildout-eggs')
+
+
 def run_buildout(verbose=False):

Modified: grokproject/trunk/tests.txt
===================================================================
--- grokproject/trunk/tests.txt	2008-05-02 18:13:00 UTC (rev 86114)
+++ grokproject/trunk/tests.txt	2008-05-02 18:23:21 UTC (rev 86115)
@@ -11,8 +11,9 @@
 
 Then use paster::
 
-    >>> sh('paster create -t grok grokexample user=a passwd=a --no-interactive')
-    paster create -t grok grokexample user=a passwd=a --no-interactive
+    >>> paster = current_dir + '/bin/paster create -t grok '
+    >>> sh(paster + 'grokexample user=a passwd=a --no-interactive')
+    /.../bin/paster create -t grok grokexample user=a passwd=a --no-interactive
     ...
 
 Let's check the contents



More information about the Checkins mailing list