diff options
| -rw-r--r-- | docs/pscripts/pserve.rst | 8 | ||||
| -rw-r--r-- | pyramid/scripts/pserve.py | 55 |
2 files changed, 31 insertions, 32 deletions
diff --git a/docs/pscripts/pserve.rst b/docs/pscripts/pserve.rst index d33d4a484..991976aea 100644 --- a/docs/pscripts/pserve.rst +++ b/docs/pscripts/pserve.rst @@ -3,11 +3,7 @@ .. _pserve_script: -``pserve`` ----------- - -.. program-output:: pserve --help - :prompt: - :shell: +.. autoprogram:: pyramid.scripts.pserve:PServeCommand.parser + :prog: pserve .. seealso:: :ref:`running_the_project_application` diff --git a/pyramid/scripts/pserve.py b/pyramid/scripts/pserve.py index b8776d44f..f3515804d 100644 --- a/pyramid/scripts/pserve.py +++ b/pyramid/scripts/pserve.py @@ -8,7 +8,7 @@ # Code taken also from QP: http://www.mems-exchange.org/software/qp/ From # lib/site.py -import optparse +import argparse import os import re import sys @@ -41,7 +41,6 @@ def main(argv=sys.argv, quiet=False): class PServeCommand(object): - usage = '%prog config_uri [var=value]' description = """\ This command serves a web application that uses a PasteDeploy configuration file for the server and application. @@ -51,54 +50,58 @@ class PServeCommand(object): """ default_verbosity = 1 - parser = optparse.OptionParser( - usage, + parser = argparse.ArgumentParser( + usage="%(prog)s config_uri [var=value]", description=textwrap.dedent(description) ) - parser.add_option( + parser.add_argument( '-n', '--app-name', dest='app_name', metavar='NAME', help="Load the named application (default main)") - parser.add_option( + parser.add_argument( '-s', '--server', dest='server', metavar='SERVER_TYPE', help="Use the named server.") - parser.add_option( + parser.add_argument( '--server-name', dest='server_name', metavar='SECTION_NAME', help=("Use the named server as defined in the configuration file " "(default: main)")) - parser.add_option( + parser.add_argument( '--reload', dest='reload', action='store_true', help="Use auto-restart file monitor") - parser.add_option( + parser.add_argument( '--reload-interval', dest='reload_interval', default=1, help=("Seconds between checking files (low number can cause " "significant CPU usage)")) - parser.add_option( + parser.add_argument( '-b', '--browser', dest='browser', action='store_true', help="Open a web browser to server url") - parser.add_option( + parser.add_argument( '-v', '--verbose', default=default_verbosity, dest='verbose', action='count', help="Set verbose level (default " + str(default_verbosity) + ")") - parser.add_option( + parser.add_argument( '-q', '--quiet', action='store_const', const=0, dest='verbose', help="Suppress verbose output") + parser.add_argument( + 'config_uri', + help='The URI to the configuration file.', + ) ConfigParser = configparser.ConfigParser # testing loadapp = staticmethod(loadapp) # testing @@ -107,13 +110,13 @@ class PServeCommand(object): _scheme_re = re.compile(r'^[a-z][a-z]+:', re.I) def __init__(self, argv, quiet=False): - self.options, self.args = self.parser.parse_args(argv[1:]) + self.args = self.parser.parse_args(argv[1:]) if quiet: - self.options.verbose = 0 + self.args.verbose = 0 self.watch_files = [] def out(self, msg): # pragma: no cover - if self.options.verbose > 0: + if self.args.verbose > 0: print(msg) def get_options(self): @@ -153,7 +156,7 @@ class PServeCommand(object): app_spec = self.args[0] vars = self.get_options() - app_name = self.options.app_name + app_name = self.args.app_name base = os.getcwd() if not self._scheme_re.search(app_spec): @@ -161,16 +164,16 @@ class PServeCommand(object): app_spec = 'config:' + app_spec else: config_path = None - server_name = self.options.server_name - if self.options.server: + server_name = self.args.server_name + if self.args.server: server_spec = 'egg:pyramid' assert server_name is None - server_name = self.options.server + server_name = self.args.server else: server_spec = app_spec # do not open the browser on each reload so check hupper first - if self.options.browser and not hupper.is_active(): + if self.args.browser and not hupper.is_active(): def open_browser(): context = loadcontext( SERVER, app_spec, name=server_name, relative_to=base, @@ -182,13 +185,13 @@ class PServeCommand(object): t.setDaemon(True) t.start() - if self.options.reload and not hupper.is_active(): - if self.options.verbose > 1: + if self.args.reload and not hupper.is_active(): + if self.args.verbose > 1: self.out('Running reloading file monitor') hupper.start_reloader( 'pyramid.scripts.pserve.main', - reload_interval=int(self.options.reload_interval), - verbose=self.options.verbose, + reload_interval=int(self.args.reload_interval), + verbose=self.args.verbose, ) return 0 @@ -207,7 +210,7 @@ class PServeCommand(object): app = self.loadapp( app_spec, name=app_name, relative_to=base, global_conf=vars) - if self.options.verbose > 0: + if self.args.verbose > 0: if hasattr(os, 'getpid'): msg = 'Starting server in PID %i.' % os.getpid() else: @@ -217,7 +220,7 @@ class PServeCommand(object): try: server(app) except (SystemExit, KeyboardInterrupt) as e: - if self.options.verbose > 1: + if self.args.verbose > 1: raise if str(e): msg = ' ' + str(e) |
