Source code for zemfrog.loaders.command

import pkg_resources
from flask import Flask
from flask.cli import routes_command, run_command, shell_command

from ..helper import get_import_name, import_attr


[docs]def loader(app: Flask): """ A function to load all your commands and register them in the ``flask`` command. """ dirname = "commands" commands = app.config.get(dirname.upper(), []) import_name = get_import_name(app) prefix = dirname + "." for name in commands: if not name.startswith(prefix): name = prefix + name name += ".command" try: cmd = import_attr(import_name + name) except ImportError: cmd = import_attr(name.lstrip(prefix)) app.cli.add_command(cmd) if import_name: for cmd in (run_command, shell_command, routes_command): app.cli.add_command(cmd) for ep in pkg_resources.iter_entry_points("flask.commands"): app.cli.add_command(ep.load(), ep.name)