diff options
author | Christopher Allan Webber <cwebber@dustycloud.org> | 2016-03-12 11:30:08 -0800 |
---|---|---|
committer | Christopher Allan Webber <cwebber@dustycloud.org> | 2016-03-26 11:39:07 -0700 |
commit | 406058b3405cbf626a27458d2a97887bc48cb603 (patch) | |
tree | 48f935e41f77bcf25126290e534e4c41dc7acb4a /mediagoblin/gmg_commands | |
parent | f25b476202b5ebe706a99fa586041c23b85acaa5 (diff) | |
download | mediagoblin-406058b3405cbf626a27458d2a97887bc48cb603.tar.lz mediagoblin-406058b3405cbf626a27458d2a97887bc48cb603.tar.xz mediagoblin-406058b3405cbf626a27458d2a97887bc48cb603.zip |
Allow for passing in --with-plugins to the alembic gmg subcommand.
This allows plugin writers to easily take advantage off alembic's migration
autogeneration support.
* mediagoblin/gmg_commands/alembic_commands.py: Adjusted imports.
(FudgedCommandLine.main, parser_setup): Add support for importing
plugins when --with-plugins is passed in.
Diffstat (limited to 'mediagoblin/gmg_commands')
-rw-r--r-- | mediagoblin/gmg_commands/alembic_commands.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/mediagoblin/gmg_commands/alembic_commands.py b/mediagoblin/gmg_commands/alembic_commands.py index 58b931dc..dc679f22 100644 --- a/mediagoblin/gmg_commands/alembic_commands.py +++ b/mediagoblin/gmg_commands/alembic_commands.py @@ -22,17 +22,33 @@ from sqlalchemy.orm import sessionmaker from mediagoblin.db.open import setup_connection_and_db_from_config from mediagoblin.init import setup_global_and_app_config from mediagoblin.db.migration_tools import build_alembic_config +from mediagoblin.tools.common import import_component class FudgedCommandLine(config.CommandLine): def main(self, args, db, global_config): options = self.parser.parse_args(args.args_for_alembic) + + # This is useful for people running commands involving plugins, such + # as building autogenerated revisions. + if args.with_plugins: + plugins = global_config.get('plugins', {}).keys() + for plugin in plugins: + print(plugin) + try: + import_component('{0}.models:MODELS'.format(plugin)) + except ImportError: + # It doesn't really matter if there's no models to import + # here. + pass + # This code is inspired by a hack in Alembic, but isn't the same really. # Regardless, Alembic is Expat licensed. if not hasattr(options, "cmd"): print( "* Only use this command if you know what you are doing! *\n" "If not, use the 'gmg dbupdate' command instead.\n\n" + "(You can also pass --with-plugins here.)" "Alembic help:\n") self.parser.print_help() return @@ -45,6 +61,9 @@ class FudgedCommandLine(config.CommandLine): self.run_cmd(cfg, options) def parser_setup(subparser): + subparser.add_argument( + "--with-plugins", action="store_true", + help="Import all plugins' models before running alembic commands.") subparser.add_argument("args_for_alembic", nargs=argparse.REMAINDER) def raw_alembic_cli(args): |