From 7321a480ea60ee212b06cd6698e1e3ab62b5e7f5 Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Mon, 12 May 2014 02:13:32 +0200 Subject: [PATCH] Simplified click integration a bit --- flask/app.py | 4 ++-- flask/cli.py | 38 ++++++++++++-------------------------- 2 files changed, 14 insertions(+), 28 deletions(-) diff --git a/flask/app.py b/flask/app.py index c7196be4..b397f38d 100644 --- a/flask/app.py +++ b/flask/app.py @@ -11,6 +11,7 @@ import os import sys +import click from threading import Lock from datetime import timedelta from itertools import chain @@ -34,7 +35,6 @@ from .templating import DispatchingJinjaLoader, Environment, \ _default_template_ctx_processor from .signals import request_started, request_finished, got_request_exception, \ request_tearing_down, appcontext_tearing_down -from .cli import make_default_cli from ._compat import reraise, string_types, text_type, integer_types # a lock used for logger initialization @@ -544,7 +544,7 @@ class Flask(_PackageBoundObject): #: provided by Flask itself and can be overridden. #: #: This is an instance of a :class:`click.Group` object. - self.cli = make_default_cli(self) + self.cli = click.Group(self) def _get_error_handlers(self): from warnings import warn diff --git a/flask/cli.py b/flask/cli.py index 7415bfea..ec8c5ca5 100644 --- a/flask/cli.py +++ b/flask/cli.py @@ -131,12 +131,6 @@ class DispatchingApp(object): return rv(environ, start_response) -def _no_such_app(): - raise NoAppException('Could not locate Flask application. ' - 'You did not provide FLASK_APP or the ' - '--app parameter.') - - class ScriptInfo(object): """Help object to deal with Flask applications. This is usually not necessary to interface with as it's used internally in the dispatching @@ -168,7 +162,9 @@ class ScriptInfo(object): rv = self.create_app(self) else: if self.app_import_path is None: - _no_such_app() + raise NoAppException('Could not locate Flask application. ' + 'You did not provide FLASK_APP or the ' + '--app parameter.') rv = locate_app(self.app_import_path) if self.debug is not None: rv.debug = self.debug @@ -418,29 +414,19 @@ def shell_command(): code.interact(banner=banner, local=app.make_shell_context()) -def make_default_cli(app): - """Creates the default click object for the app itself. Currently - there are no default commands registered because all builtin commands - are registered on the actual cmd object here. - """ - return click.Group() +cli = FlaskGroup(help="""\ +This shell command acts as general utility script for Flask applications. +It loads the application configured (either through the FLASK_APP environment +variable or the --app parameter) and then provides commands either provided +by the application or Flask itself. -@click.group(cls=FlaskGroup) -def cli(**params): - """ - This shell command acts as general utility script for Flask applications. +The most useful commands are the "run" and "shell" command. - It loads the application configured (either through the FLASK_APP environment - variable or the --app parameter) and then provides commands either provided - by the application or Flask itself. +Example usage: - The most useful commands are the "run" and "shell" command. - - Example usage: - - flask --app=hello --debug run - """ + flask --app=hello --debug run +""") def main(as_module=False):