summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pyramid/scripts/common.py20
-rw-r--r--pyramid/scripts/pcreate.py13
-rw-r--r--pyramid/scripts/proutes.py15
-rw-r--r--pyramid/scripts/pshell.py14
-rw-r--r--pyramid/scripts/ptweens.py13
-rw-r--r--pyramid/scripts/pviews.py13
-rw-r--r--pyramid/tests/test_scripts/test_pcreate.py4
-rw-r--r--pyramid/tests/test_scripts/test_proutes.py9
-rw-r--r--pyramid/tests/test_scripts/test_pshell.py10
-rw-r--r--pyramid/tests/test_scripts/test_ptweens.py8
-rw-r--r--pyramid/tests/test_scripts/test_pviews.py8
11 files changed, 101 insertions, 26 deletions
diff --git a/pyramid/scripts/common.py b/pyramid/scripts/common.py
new file mode 100644
index 000000000..bbf734bd2
--- /dev/null
+++ b/pyramid/scripts/common.py
@@ -0,0 +1,20 @@
+import os
+from pyramid.compat import configparser
+from logging.config import fileConfig
+
+def logging_file_config(config_file, fileConfig=fileConfig):
+ """
+ Setup logging via the logging module's fileConfig function with the
+ specified ``config_file``, if applicable.
+
+ ConfigParser defaults are specified for the special ``__file__``
+ and ``here`` variables, similar to PasteDeploy config loading.
+ """
+ parser = configparser.ConfigParser()
+ parser.read([config_file])
+ if parser.has_section('loggers'):
+ config_file = os.path.abspath(config_file)
+ fileConfig(
+ config_file,
+ dict(__file__=config_file, here=os.path.dirname(config_file))
+ )
diff --git a/pyramid/scripts/pcreate.py b/pyramid/scripts/pcreate.py
index effb54734..dfd9f691b 100644
--- a/pyramid/scripts/pcreate.py
+++ b/pyramid/scripts/pcreate.py
@@ -10,8 +10,8 @@ import sys
_bad_chars_re = re.compile('[^a-zA-Z0-9_]')
-def main(argv=sys.argv):
- command = PCreateCommand(argv)
+def main(argv=sys.argv, quiet=False):
+ command = PCreateCommand(argv, quiet)
return command.run()
class PCreateCommand(object):
@@ -37,12 +37,9 @@ class PCreateCommand(object):
dest='overwrite',
action='store_true',
help='Always overwrite')
- parser.add_option('-q', '--quiet',
- dest='quiet',
- action='store_true',
- help='Dont emit any output')
- def __init__(self, argv):
+ def __init__(self, argv, quiet=False):
+ self.quiet = quiet
self.options, self.args = self.parser.parse_args(argv[1:])
self.scaffolds = self.all_scaffolds()
@@ -108,7 +105,7 @@ class PCreateCommand(object):
return scaffolds
def out(self, msg): # pragma: no cover
- if not self.options.quiet:
+ if not self.quiet:
print(msg)
diff --git a/pyramid/scripts/proutes.py b/pyramid/scripts/proutes.py
index 0dab9acda..fb1cf2059 100644
--- a/pyramid/scripts/proutes.py
+++ b/pyramid/scripts/proutes.py
@@ -4,8 +4,8 @@ import sys
from pyramid.compat import print_
from pyramid.paster import bootstrap
-def main(argv=sys.argv):
- command = PRoutesCommand(argv)
+def main(argv=sys.argv, quiet=False):
+ command = PRoutesCommand(argv, quiet)
command.run()
class PRoutesCommand(object):
@@ -33,8 +33,9 @@ class PRoutesCommand(object):
parser = optparse.OptionParser()
- def __init__(self, argv):
+ def __init__(self, argv, quiet=False):
self.options, self.args = self.parser.parse_args(argv[1:])
+ self.quiet = quiet
def _get_mapper(self, registry):
from pyramid.config import Configurator
@@ -42,9 +43,13 @@ class PRoutesCommand(object):
return config.get_routes_mapper()
def out(self, msg): # pragma: no cover
- print_(msg)
+ if not self.quiet:
+ print_(msg)
- def run(self):
+ def run(self, quiet=False):
+ if not self.args:
+ self.out('requires a config file argument')
+ return
from pyramid.interfaces import IRouteRequest
from pyramid.interfaces import IViewClassifier
from pyramid.interfaces import IView
diff --git a/pyramid/scripts/pshell.py b/pyramid/scripts/pshell.py
index d6bf03163..40673906b 100644
--- a/pyramid/scripts/pshell.py
+++ b/pyramid/scripts/pshell.py
@@ -8,8 +8,8 @@ from pyramid.paster import bootstrap
from pyramid.scripts.common import logging_file_config
-def main(argv=sys.argv):
- command = PShellCommand(argv)
+def main(argv=sys.argv, quiet=False):
+ command = PShellCommand(argv, quiet)
return command.run()
class PShellCommand(object):
@@ -56,7 +56,8 @@ class PShellCommand(object):
object_help = {}
setup = None
- def __init__(self, argv):
+ def __init__(self, argv, quiet=False):
+ self.quiet = quiet
self.options, self.args = self.parser.parse_args(argv[1:])
def pshell_file_config(self, filename):
@@ -78,7 +79,14 @@ class PShellCommand(object):
self.loaded_objects[k] = resolver.maybe_resolve(v)
self.object_help[k] = v
+ def out(self, msg): # pragma: no cover
+ if not self.quiet:
+ print(msg)
+
def run(self, shell=None):
+ if not self.args:
+ self.out('Requires a config file argument')
+ return
config_uri = self.args[0]
config_file = config_uri.split('#', 1)[0]
logging_file_config(config_file)
diff --git a/pyramid/scripts/ptweens.py b/pyramid/scripts/ptweens.py
index 56d8b422b..556b43254 100644
--- a/pyramid/scripts/ptweens.py
+++ b/pyramid/scripts/ptweens.py
@@ -9,8 +9,8 @@ from pyramid.paster import bootstrap
from pyramid.compat import print_
-def main(argv=sys.argv):
- command = PTweensCommand(argv)
+def main(argv=sys.argv, quiet=False):
+ command = PTweensCommand(argv, quiet)
command.run()
class PTweensCommand(object):
@@ -40,7 +40,8 @@ class PTweensCommand(object):
bootstrap = (bootstrap,) # testing
- def __init__(self, argv):
+ def __init__(self, argv, quiet=False):
+ self.quiet = quiet
self.options, self.args = self.parser.parse_args(argv[1:])
def _get_tweens(self, registry):
@@ -49,7 +50,8 @@ class PTweensCommand(object):
return config.registry.queryUtility(ITweens)
def out(self, msg): # pragma: no cover
- print_(msg)
+ if not self.quiet:
+ print_(msg)
def show_chain(self, chain):
fmt = '%-10s %-65s'
@@ -61,6 +63,9 @@ class PTweensCommand(object):
self.out(fmt % ('-', MAIN))
def run(self):
+ if not self.args:
+ self.out('Requires a config file argument')
+ return
config_uri = self.args[0]
env = self.bootstrap[0](config_uri)
registry = env['registry']
diff --git a/pyramid/scripts/pviews.py b/pyramid/scripts/pviews.py
index 69baaee87..8d3048633 100644
--- a/pyramid/scripts/pviews.py
+++ b/pyramid/scripts/pviews.py
@@ -5,8 +5,8 @@ from pyramid.compat import print_
from pyramid.interfaces import IMultiView
from pyramid.paster import bootstrap
-def main(argv=sys.argv):
- command = PViewsCommand(argv)
+def main(argv=sys.argv, quiet=False):
+ command = PViewsCommand(argv, quiet)
command.run()
class PViewsCommand(object):
@@ -37,11 +37,13 @@ class PViewsCommand(object):
bootstrap = (bootstrap,) # testing
- def __init__(self, argv):
+ def __init__(self, argv, quiet=False):
+ self.quiet = quiet
self.options, self.args = self.parser.parse_args(argv[1:])
def out(self, msg): # pragma: no cover
- print_(msg)
+ if not self.quiet:
+ print_(msg)
def _find_multi_routes(self, mapper, request):
infos = []
@@ -230,6 +232,9 @@ class PViewsCommand(object):
self.out("%sview predicates (%s)" % (indent, predicate_text))
def run(self):
+ if len(self.args) < 2:
+ self.out('Command requires a config file arg and a url arg')
+ return
config_uri, url = self.args
if not url.startswith('/'):
url = '/%s' % url
diff --git a/pyramid/tests/test_scripts/test_pcreate.py b/pyramid/tests/test_scripts/test_pcreate.py
index 346b35fda..cdd0daf2e 100644
--- a/pyramid/tests/test_scripts/test_pcreate.py
+++ b/pyramid/tests/test_scripts/test_pcreate.py
@@ -97,10 +97,10 @@ class TestPCreateCommand(unittest.TestCase):
class Test_main(unittest.TestCase):
def _callFUT(self, argv):
from pyramid.scripts.pcreate import main
- return main(argv)
+ return main(argv, quiet=True)
def test_it(self):
- result = self._callFUT(['pcreate', '-q'])
+ result = self._callFUT(['pcreate'])
self.assertEqual(result, None)
class DummyScaffold(object):
diff --git a/pyramid/tests/test_scripts/test_proutes.py b/pyramid/tests/test_scripts/test_proutes.py
index a8b577316..af6ff19d0 100644
--- a/pyramid/tests/test_scripts/test_proutes.py
+++ b/pyramid/tests/test_scripts/test_proutes.py
@@ -127,3 +127,12 @@ class TestPRoutesCommand(unittest.TestCase):
result = command._get_mapper(registry)
self.assertEqual(result.__class__, RoutesMapper)
+class Test_main(unittest.TestCase):
+ def _callFUT(self, argv):
+ from pyramid.scripts.proutes import main
+ return main(argv, quiet=True)
+
+ def test_it(self):
+ result = self._callFUT(['proutes'])
+ self.assertEqual(result, None)
+
diff --git a/pyramid/tests/test_scripts/test_pshell.py b/pyramid/tests/test_scripts/test_pshell.py
index b0ea8c5ea..e38da2077 100644
--- a/pyramid/tests/test_scripts/test_pshell.py
+++ b/pyramid/tests/test_scripts/test_pshell.py
@@ -247,3 +247,13 @@ class TestPShellCommand(unittest.TestCase):
self.assertTrue(self.bootstrap.closer.called)
self.assertTrue(shell.help)
+
+class Test_main(unittest.TestCase):
+ def _callFUT(self, argv):
+ from pyramid.scripts.pshell import main
+ return main(argv, quiet=True)
+
+ def test_it(self):
+ result = self._callFUT(['pshell'])
+ self.assertEqual(result, None)
+
diff --git a/pyramid/tests/test_scripts/test_ptweens.py b/pyramid/tests/test_scripts/test_ptweens.py
index 4ee38dd85..4dddaa0aa 100644
--- a/pyramid/tests/test_scripts/test_ptweens.py
+++ b/pyramid/tests/test_scripts/test_ptweens.py
@@ -51,3 +51,11 @@ class TestPTweensCommand(unittest.TestCase):
registry = dummy.DummyRegistry()
self.assertEqual(command._get_tweens(registry), None)
+class Test_main(unittest.TestCase):
+ def _callFUT(self, argv):
+ from pyramid.scripts.ptweens import main
+ return main(argv, quiet=True)
+
+ def test_it(self):
+ result = self._callFUT(['ptweens'])
+ self.assertEqual(result, None)
diff --git a/pyramid/tests/test_scripts/test_pviews.py b/pyramid/tests/test_scripts/test_pviews.py
index 473ba5598..e2c3892fa 100644
--- a/pyramid/tests/test_scripts/test_pviews.py
+++ b/pyramid/tests/test_scripts/test_pviews.py
@@ -465,3 +465,11 @@ class TestPViewsCommand(unittest.TestCase):
' pyramid.tests.test_scripts.dummy.view.call')
self.assertEqual(L[9], ' view predicates (predicate = x)')
+class Test_main(unittest.TestCase):
+ def _callFUT(self, argv):
+ from pyramid.scripts.pviews import main
+ return main(argv, quiet=True)
+
+ def test_it(self):
+ result = self._callFUT(['pviews'])
+ self.assertEqual(result, None)