diff options
| -rw-r--r-- | pyramid/scripts/common.py | 20 | ||||
| -rw-r--r-- | pyramid/scripts/pcreate.py | 13 | ||||
| -rw-r--r-- | pyramid/scripts/proutes.py | 15 | ||||
| -rw-r--r-- | pyramid/scripts/pshell.py | 14 | ||||
| -rw-r--r-- | pyramid/scripts/ptweens.py | 13 | ||||
| -rw-r--r-- | pyramid/scripts/pviews.py | 13 | ||||
| -rw-r--r-- | pyramid/tests/test_scripts/test_pcreate.py | 4 | ||||
| -rw-r--r-- | pyramid/tests/test_scripts/test_proutes.py | 9 | ||||
| -rw-r--r-- | pyramid/tests/test_scripts/test_pshell.py | 10 | ||||
| -rw-r--r-- | pyramid/tests/test_scripts/test_ptweens.py | 8 | ||||
| -rw-r--r-- | pyramid/tests/test_scripts/test_pviews.py | 8 |
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) |
