summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/pscripts/pserve.rst8
-rw-r--r--pyramid/scripts/pserve.py55
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)