diff --git a/pecan/commands/serve.py b/pecan/commands/serve.py index cd0e81c..80f2681 100644 --- a/pecan/commands/serve.py +++ b/pecan/commands/serve.py @@ -1,11 +1,12 @@ """ PasteScript serve command for Pecan. """ -from paste import httpserver +from paste import httpserver +from paste.script import command as paste_command from paste.script.serve import ServeCommand as _ServeCommand -from base import Command - +from base import Command +import os import re @@ -43,10 +44,12 @@ class ServeCommand(_ServeCommand, Command): setattr(self.options, 'app_name', None) setattr(self.options, 'server', None) setattr(self.options, 'server_name', None) - + + config_file = self.validate_file(self.args) + # for file-watching to work, we need a filename, not a module if self.requires_config_file and self.args: - self.config = self.load_configuration(self.args[0]) + self.config = self.load_configuration(config_file) self.args[0] = self.config.__file__ if self.options.reload is None: self.options.reload = getattr(self.config.app, 'reload', False) @@ -59,3 +62,8 @@ class ServeCommand(_ServeCommand, Command): def loadapp(self, app_spec, name, relative_to, **kw): return self.load_app(self.config) + + def validate_file(self, argv): + if not argv or not os.path.isfile(argv[0]): + raise paste_command.BadCommand('This command needs a valid config file.') + return argv[0]