[Checkins] SVN: grokproject/trunk/ Refactor grokproject/__init__.py by moving things out into main.py,

Maurits van Rees m.van.rees at zestsoftware.nl
Fri May 2 15:54:51 EDT 2008


Log message for revision 86128:
  Refactor grokproject/__init__.py by moving things out into main.py,
  templates,py and utils.py, like zopeproject does.
  

Changed:
  U   grokproject/trunk/CHANGES.txt
  U   grokproject/trunk/grokproject/__init__.py
  A   grokproject/trunk/grokproject/main.py
  A   grokproject/trunk/grokproject/templates.py
  U   grokproject/trunk/grokproject/utils.py

-=-
Modified: grokproject/trunk/CHANGES.txt
===================================================================
--- grokproject/trunk/CHANGES.txt	2008-05-02 19:45:21 UTC (rev 86127)
+++ grokproject/trunk/CHANGES.txt	2008-05-02 19:54:50 UTC (rev 86128)
@@ -4,6 +4,9 @@
 0.8 (unreleased)
 ------------------
 
+* Refactor grokproject/__init__.py by moving things out into main.py,
+  templates,py and utils.py, like zopeproject does.
+
 * Add README.txt file to the created static/ dir.  Biggest reason:
   otherwise 'python setup.py sdist' simply does not add that empty
   directory.

Modified: grokproject/trunk/grokproject/__init__.py
===================================================================
--- grokproject/trunk/grokproject/__init__.py	2008-05-02 19:45:21 UTC (rev 86127)
+++ grokproject/trunk/grokproject/__init__.py	2008-05-02 19:54:50 UTC (rev 86128)
@@ -1,175 +1,2 @@
-import sys
-import os
-import optparse
-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'
-
-
-class ask_var(var):
-
-    def __init__(self, name, description,
-                 default='', should_echo=True, should_ask=True,
-                 getter=None):
-        super(ask_var, self).__init__(
-            name, description, default=default,
-            should_echo=should_echo)
-        self.should_ask = should_ask
-        self.getter = getter
-        if self.getter is None:
-            self.getter = lambda x, y: self.default
-
-def get_boolean_value_for_option(vars, option):
-    value = vars.get(option.name)
-    if value is not None:
-        if isinstance(option.default, bool):
-            want_boolean = True
-        else:
-            want_boolean = False
-        value = value.lower()
-        if value in ('1', 'true'):
-            if want_boolean:
-                value = True
-            else:
-                value = 'true'
-        elif value in ('0', 'false'):
-            if want_boolean:
-                value = False
-            else:
-                value = 'false'
-        else:
-            print ""
-            print "Error: %s should be true or false." % option.name
-            sys.exit(1)
-    else:
-        value = option.default
-    return value
-
-
-class GrokProject(templates.Template):
-    _template_dir = 'template'
-    summary = "A grok project"
-    required_templates = []
-
-    vars = [
-        ask_var('user', 'Name of an initial administrator user', default=NoDefault),
-        ask_var('passwd', 'Password for the initial administrator user',
-            default=NoDefault, should_echo=False),
-        ask_var('newest', 'Check for newer versions of packages',
-                default='false', should_ask=False,
-                getter=get_boolean_value_for_option),
-        ask_var('run_buildout', "After creating the project area "
-                "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):
-        if vars['package'] in ('grok', 'zope'):
-            print
-            print "Error: The chosen project name results in an invalid " \
-                  "package name: %s." % vars['package']
-            print "Please choose a different project name."
-            sys.exit(1)
-
-        skipped_vars = {}
-        for var in list(self.vars):
-            if not var.should_ask:
-                skipped_vars[var.name] = var.getter(vars, var)
-                self.vars.remove(var)
-
-        vars = super(GrokProject, self).check_vars(vars, cmd)
-        for name in skipped_vars:
-            vars[name] = skipped_vars[name]
-
-        for var_name in ['user', 'passwd']:
-            # Escape values that go in site.zcml.
-            vars[var_name] = xml.sax.saxutils.quoteattr(vars[var_name])
-        vars['app_class_name'] = vars['project'].capitalize()
-        vars = self.extra_vars(vars)
-        return vars
-
-    def extra_vars(self, vars):
-        # Handling the version.cfg file.
-        info = urllib.urlopen(VERSIONINFO_INFO_URL).read().strip()
-        version_info_url = urlparse.urljoin(VERSIONINFO_INFO_URL, info)
-        vars['version_info_url'] = version_info_url
-        version_info_file_contents = urllib.urlopen(version_info_url).read()
-        vars['version_info_file_contents'] = version_info_file_contents
-        # Handling eggs dir.
-        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):
-        if vars['run_buildout']:
-            os.chdir(vars['project'])
-            run_buildout(command.options.verbose)
-
-
-def main():
-    usage = "usage: %prog [options] PROJECT"
-    parser = optparse.OptionParser(usage=usage)
-    parser.add_option('--svn-repository', dest="repos", default=None,
-                      help="Import project to given repository location (this "
-                      "will also create the standard trunk/ tags/ branches/ "
-                      "hierarchy).")
-    parser.add_option('-v', '--verbose', action="store_true", dest="verbose",
-                      default=False, help="Be verbose.")
-
-    # Options that override the interactive part of filling the templates.
-    for var in GrokProject.vars:
-        option_name = '--'+var.name.replace('_', '-')
-        if not parser.has_option(option_name):
-            parser.add_option(
-                option_name, dest=var.name,
-                help=var.description)
-
-    options, args = parser.parse_args()
-    if len(args) != 1:
-        parser.print_usage()
-        return 1
-
-    # create sandbox using paste.script
-    project = args[0]
-    commands = command.get_commands()
-    cmd = commands['create'].load()
-    runner = cmd('create')
-
-    option_args = []
-    if options.repos is not None:
-        option_args.extend(['--svn-repository', options.repos])
-    if not options.verbose:
-        option_args.append('-q')
-
-    # Process the options that override the interactive part of filling
-    # the templates.
-    extra_args = []
-    for var in GrokProject.vars:
-        supplied_value = getattr(options, var.name)
-        if supplied_value is not None:
-            extra_args.append('%s=%s' % (var.name, supplied_value))
-    exit_code = runner.run(option_args + ['-t', 'grok', project]
-                           + extra_args)
-    sys.exit(exit_code)
+from grokproject.templates import GrokProject
+from grokproject.main import main

Added: grokproject/trunk/grokproject/main.py
===================================================================
--- grokproject/trunk/grokproject/main.py	                        (rev 0)
+++ grokproject/trunk/grokproject/main.py	2008-05-02 19:54:50 UTC (rev 86128)
@@ -0,0 +1,51 @@
+import sys
+from paste.script import command
+import optparse
+from grokproject import GrokProject
+
+
+def main():
+    usage = "usage: %prog [options] PROJECT"
+    parser = optparse.OptionParser(usage=usage)
+    parser.add_option('--svn-repository', dest="repos", default=None,
+                      help="Import project to given repository location (this "
+                      "will also create the standard trunk/ tags/ branches/ "
+                      "hierarchy).")
+    parser.add_option('-v', '--verbose', action="store_true", dest="verbose",
+                      default=False, help="Be verbose.")
+
+    # Options that override the interactive part of filling the templates.
+    for var in GrokProject.vars:
+        option_name = '--'+var.name.replace('_', '-')
+        if not parser.has_option(option_name):
+            parser.add_option(
+                option_name, dest=var.name,
+                help=var.description)
+
+    options, args = parser.parse_args()
+    if len(args) != 1:
+        parser.print_usage()
+        return 1
+
+    # create sandbox using paste.script
+    project = args[0]
+    commands = command.get_commands()
+    cmd = commands['create'].load()
+    runner = cmd('create')
+
+    option_args = []
+    if options.repos is not None:
+        option_args.extend(['--svn-repository', options.repos])
+    if not options.verbose:
+        option_args.append('-q')
+
+    # Process the options that override the interactive part of filling
+    # the templates.
+    extra_args = []
+    for var in GrokProject.vars:
+        supplied_value = getattr(options, var.name)
+        if supplied_value is not None:
+            extra_args.append('%s=%s' % (var.name, supplied_value))
+    exit_code = runner.run(option_args + ['-t', 'grok', project]
+                           + extra_args)
+    sys.exit(exit_code)


Property changes on: grokproject/trunk/grokproject/main.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: grokproject/trunk/grokproject/templates.py
===================================================================
--- grokproject/trunk/grokproject/templates.py	                        (rev 0)
+++ grokproject/trunk/grokproject/templates.py	2008-05-02 19:54:50 UTC (rev 86128)
@@ -0,0 +1,91 @@
+import sys
+import os
+import urllib
+import urlparse
+import xml.sax.saxutils
+from paste.script import templates
+from paste.script.templates import NoDefault
+from grokproject.utils import run_buildout
+from grokproject.utils import default_eggs_dir
+from grokproject.utils import get_buildout_default_eggs_dir
+from grokproject.utils import ask_var
+from grokproject.utils import get_boolean_value_for_option
+
+VERSIONINFO_INFO_URL = 'http://grok.zope.org/releaseinfo/current'
+
+
+class GrokProject(templates.Template):
+    _template_dir = 'template'
+    summary = "A grok project"
+    required_templates = []
+
+    vars = [
+        ask_var('user', 'Name of an initial administrator user',
+                default=NoDefault),
+        ask_var('passwd', 'Password for the initial administrator user',
+            default=NoDefault, should_echo=False),
+        ask_var('newest', 'Check for newer versions of packages',
+                default='false', should_ask=False,
+                getter=get_boolean_value_for_option),
+        ask_var('run_buildout', "After creating the project area "
+                "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 placepackages',
+                default=default_eggs_dir()),
+        ]
+
+    def check_vars(self, vars, cmd):
+        if vars['package'] in ('grok', 'zope'):
+            print
+            print "Error: The chosen project name results in an invalid " \
+                  "package name: %s." % vars['package']
+            print "Please choose a different project name."
+            sys.exit(1)
+
+        skipped_vars = {}
+        for var in list(self.vars):
+            if not var.should_ask:
+                skipped_vars[var.name] = var.getter(vars, var)
+                self.vars.remove(var)
+
+        vars = super(GrokProject, self).check_vars(vars, cmd)
+        for name in skipped_vars:
+            vars[name] = skipped_vars[name]
+
+        for var_name in ['user', 'passwd']:
+            # Escape values that go in site.zcml.
+            vars[var_name] = xml.sax.saxutils.quoteattr(vars[var_name])
+        vars['app_class_name'] = vars['project'].capitalize()
+        vars = self.extra_vars(vars)
+        return vars
+
+    def extra_vars(self, vars):
+        # Handling the version.cfg file.
+        info = urllib.urlopen(VERSIONINFO_INFO_URL).read().strip()
+        version_info_url = urlparse.urljoin(VERSIONINFO_INFO_URL, info)
+        vars['version_info_url'] = version_info_url
+        version_info_file_contents = urllib.urlopen(version_info_url).read()
+        vars['version_info_file_contents'] = version_info_file_contents
+        # Handling eggs dir.
+        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):
+        if vars['run_buildout']:
+            os.chdir(vars['project'])
+            run_buildout(command.options.verbose)


Property changes on: grokproject/trunk/grokproject/templates.py
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: grokproject/trunk/grokproject/utils.py
===================================================================
--- grokproject/trunk/grokproject/utils.py	2008-05-02 19:45:21 UTC (rev 86127)
+++ grokproject/trunk/grokproject/utils.py	2008-05-02 19:54:50 UTC (rev 86128)
@@ -3,11 +3,52 @@
 import shutil
 import tempfile
 import pkg_resources
+from paste.script.templates import var
 from ConfigParser import ConfigParser
 
 HOME = os.path.expanduser('~')
 
 
+class ask_var(var):
+
+    def __init__(self, name, description,
+                 default='', should_echo=True, should_ask=True,
+                 getter=None):
+        super(ask_var, self).__init__(
+            name, description, default=default,
+            should_echo=should_echo)
+        self.should_ask = should_ask
+        self.getter = getter
+        if self.getter is None:
+            self.getter = lambda x, y: self.default
+
+def get_boolean_value_for_option(vars, option):
+    value = vars.get(option.name)
+    if value is not None:
+        if isinstance(option.default, bool):
+            want_boolean = True
+        else:
+            want_boolean = False
+        value = value.lower()
+        if value in ('1', 'true'):
+            if want_boolean:
+                value = True
+            else:
+                value = 'true'
+        elif value in ('0', 'false'):
+            if want_boolean:
+                value = False
+            else:
+                value = 'false'
+        else:
+            print ""
+            print "Error: %s should be true or false." % option.name
+            sys.exit(1)
+    else:
+        value = option.default
+    return value
+
+
 def get_buildout_default_eggs_dir():
     default_cfg = os.path.join(HOME, '.buildout', 'default.cfg')
     if os.path.isfile(default_cfg):
@@ -18,6 +59,7 @@
             if eggs_dir:
                 return os.path.expanduser(eggs_dir)
 
+
 def default_eggs_dir():
     buildout_default = get_buildout_default_eggs_dir()
     if buildout_default:



More information about the Checkins mailing list