diff piecrust/commands/builtin/scaffolding.py @ 879:58ae026b4c31

chef: Optimize startup time.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 15 Jun 2017 22:38:05 -0700
parents 4850f8c21b6e
children c445a3d5d950
line wrap: on
line diff
--- a/piecrust/commands/builtin/scaffolding.py	Thu Jun 15 22:16:34 2017 -0700
+++ b/piecrust/commands/builtin/scaffolding.py	Thu Jun 15 22:38:05 2017 -0700
@@ -1,15 +1,7 @@
 import os
 import os.path
-import io
-import time
-import glob
 import logging
-import textwrap
-from piecrust import RESOURCES_DIR
-from piecrust.chefutil import print_help_item
 from piecrust.commands.base import ExtendableChefCommand, ChefCommandExtension
-from piecrust.pathutil import SiteNotFoundError
-from piecrust.sources.fs import FSContentSourceBase
 
 
 logger = logging.getLogger(__name__)
@@ -56,6 +48,8 @@
             p.set_defaults(sub_func=self._doRun)
 
     def checkedRun(self, ctx):
+        from piecrust.pathutil import SiteNotFoundError
+
         if ctx.app.root_dir is None:
             raise SiteNotFoundError(theme=ctx.app.theme_site)
 
@@ -65,7 +59,9 @@
         ctx.args.sub_func(ctx)
 
     def _doRun(self, ctx):
+        import time
         from piecrust.uriutil import multi_replace
+        from piecrust.sources.fs import FSContentSourceBase
 
         if not hasattr(ctx.args, 'source'):
             raise Exception("No source specified. "
@@ -144,6 +140,8 @@
         return descs[name]
 
     def getTemplate(self, app, name):
+        from piecrust import RESOURCES_DIR
+
         assert name in ['default', 'rss', 'atom']
         src_path = os.path.join(RESOURCES_DIR, 'prepare', '%s.html' % name)
         with open(src_path, 'r', encoding='utf8') as fp:
@@ -174,6 +172,8 @@
         return "User-defined template."
 
     def getTemplate(self, app, name):
+        import glob
+
         templates_dir = self._getTemplatesDir(app)
         pattern = os.path.join(templates_dir, '%s.*' % name)
         matches = glob.glob(pattern)
@@ -196,6 +196,10 @@
                  "Available templates for the 'prepare' command.")]
 
     def getHelpTopic(self, topic, app):
+        import io
+        import textwrap
+        from piecrust.chefutil import print_help_item
+
         with io.StringIO() as tplh:
             extensions = app.plugin_loader.getCommandExtensions()
             for e in extensions: