comparison piecrust/commands/builtin/admin.py @ 762:c84647485ab2

admin: Fix crash when running the `admin` command.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 30 Jun 2016 22:37:16 -0700
parents dba53f0f7671
children 5e91bc0e3b4d
comparison
equal deleted inserted replaced
761:4d8e82641597 762:c84647485ab2
47 dest='monitor_assets', 47 dest='monitor_assets',
48 action='store_false') 48 action='store_false')
49 p.set_defaults(sub_func=self._runFoodTruck) 49 p.set_defaults(sub_func=self._runFoodTruck)
50 50
51 def checkedRun(self, ctx): 51 def checkedRun(self, ctx):
52 if ctx.app.root_dir is None:
53 raise SiteNotFoundError(theme=ctx.app.theme_site)
54
52 if not hasattr(ctx.args, 'sub_func'): 55 if not hasattr(ctx.args, 'sub_func'):
53 return self._runFoodTruck(ctx) 56 ctx.parser.parse_args(['admin', '--help'])
57 return
54 return ctx.args.sub_func(ctx) 58 return ctx.args.sub_func(ctx)
55 59
56 def _runFoodTruck(self, ctx): 60 def _runFoodTruck(self, ctx):
57 # See `_run_sse_check` in `piecrust.serving.wrappers` for an explanation 61 # See `_run_sse_check` in `piecrust.serving.wrappers` for an explanation
58 # of this check. 62 # of this check.
59 if (ctx.args.monitor_assets and ( 63 if (ctx.args.monitor_assets and (
60 not ctx.args.debug or 64 not ctx.args.debug or
61 os.environ.get('WERKZEUG_RUN_MAIN') == 'true')): 65 os.environ.get('WERKZEUG_RUN_MAIN') == 'true')):
66 from piecrust.app import PieCrustFactory
62 from piecrust.serving.procloop import ProcessingLoop 67 from piecrust.serving.procloop import ProcessingLoop
68 appfactory = PieCrustFactory(
69 ctx.app.root_dir,
70 cache=ctx.app.cache.enabled,
71 cache_key=ctx.app.cache_key,
72 config_variant=ctx.config_variant,
73 config_values=ctx.config_values,
74 debug=ctx.app.debug,
75 theme_site=ctx.app.theme_site)
63 out_dir = os.path.join(ctx.app.root_dir, CACHE_DIR, 'foodtruck', 'server') 76 out_dir = os.path.join(ctx.app.root_dir, CACHE_DIR, 'foodtruck', 'server')
64 proc_loop = ProcessingLoop(ctx.app.root_dir, out_dir, debug=ctx.args.debug) 77 proc_loop = ProcessingLoop(appfactory, out_dir)
65 proc_loop.start() 78 proc_loop.start()
66 79
67 from foodtruck import settings 80 from foodtruck import settings
68 settings.FOODTRUCK_CMDLINE_MODE = True 81 settings.FOODTRUCK_CMDLINE_MODE = True
69 settings.FOODTRUCK_ROOT = ctx.app.root_dir 82 settings.FOODTRUCK_ROOT = ctx.app.root_dir