add docker cmd, more debug, add migrations to package
This commit is contained in:
		
							parent
							
								
									ae583a6d18
								
							
						
					
					
						commit
						8b15a45902
					
				| 
						 | 
					@ -89,6 +89,7 @@ def main(*args, **kwargs):
 | 
				
			||||||
    from .docs_cmd import docs
 | 
					    from .docs_cmd import docs
 | 
				
			||||||
    from .run_cmd import run
 | 
					    from .run_cmd import run
 | 
				
			||||||
    from .install_cmd import install
 | 
					    from .install_cmd import install
 | 
				
			||||||
 | 
					    from .docker_cmd import docker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Override logging level
 | 
					    # Override logging level
 | 
				
			||||||
    environ.setdefault("FG_LOGGING", logging.getLevelName(LOGGING_MAX))
 | 
					    environ.setdefault("FG_LOGGING", logging.getLevelName(LOGGING_MAX))
 | 
				
			||||||
| 
						 | 
					@ -98,4 +99,5 @@ def main(*args, **kwargs):
 | 
				
			||||||
    cli.add_command(install)
 | 
					    cli.add_command(install)
 | 
				
			||||||
    cli.add_command(plugin)
 | 
					    cli.add_command(plugin)
 | 
				
			||||||
    cli.add_command(run)
 | 
					    cli.add_command(run)
 | 
				
			||||||
 | 
					    cli.add_command(docker)
 | 
				
			||||||
    cli(*args, **kwargs)
 | 
					    cli(*args, **kwargs)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,54 @@
 | 
				
			||||||
 | 
					import click
 | 
				
			||||||
 | 
					from click.decorators import pass_context
 | 
				
			||||||
 | 
					from flask.cli import with_appcontext
 | 
				
			||||||
 | 
					from os import environ
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from flaschengeist import logger
 | 
				
			||||||
 | 
					from flaschengeist.controller import pluginController
 | 
				
			||||||
 | 
					from werkzeug.exceptions import NotFound
 | 
				
			||||||
 | 
					import traceback
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@click.group()
 | 
				
			||||||
 | 
					def docker():
 | 
				
			||||||
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@docker.command()
 | 
				
			||||||
 | 
					@with_appcontext
 | 
				
			||||||
 | 
					@pass_context
 | 
				
			||||||
 | 
					def setup(ctx):
 | 
				
			||||||
 | 
					    """Setup flaschengesit in docker container"""
 | 
				
			||||||
 | 
					    click.echo("Setup docker")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    plugins = environ.get("FG_ENABLE_PLUGINS")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if not plugins:
 | 
				
			||||||
 | 
					        click.secho("no evironment variable is set for 'FG_ENABLE_PLUGINS'", fg="yellow")
 | 
				
			||||||
 | 
					        click.secho("set 'FG_ENABLE_PLUGINS' to 'auth_ldap', 'mail', 'balance', 'pricelist_old', 'events'")
 | 
				
			||||||
 | 
					        plugins = ("auth_ldap", "mail", "pricelist_old", "events", "balance")
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        plugins = plugins.split(" ")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    print(plugins)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for name in plugins:
 | 
				
			||||||
 | 
					        click.echo(f"Installing {name}{'.'*(20-len(name))}", nl=False)
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            pluginController.install_plugin(name)
 | 
				
			||||||
 | 
					        except Exception as e:
 | 
				
			||||||
 | 
					            click.secho(" failed", fg="red")
 | 
				
			||||||
 | 
					            if logger.getEffectiveLevel() > 10:
 | 
				
			||||||
 | 
					                ctx.fail(f"[{e.__class__.__name__}] {e}")
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                ctx.fail(traceback.format_exc())
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            click.secho(" ok", fg="green")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for name in plugins:
 | 
				
			||||||
 | 
					        click.echo(f"Enabling {name}{'.'*(20-len(name))}", nl=False)
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            pluginController.enable_plugin(name)
 | 
				
			||||||
 | 
					            click.secho(" ok", fg="green")
 | 
				
			||||||
 | 
					        except NotFound:
 | 
				
			||||||
 | 
					            click.secho(" not installed / not found", fg="red")
 | 
				
			||||||
| 
						 | 
					@ -108,9 +108,12 @@ def install_plugin(plugin_name: str):
 | 
				
			||||||
    plugin.install()
 | 
					    plugin.install()
 | 
				
			||||||
    # Check migrations
 | 
					    # Check migrations
 | 
				
			||||||
    directory = entry_point[0].dist.locate_file("")
 | 
					    directory = entry_point[0].dist.locate_file("")
 | 
				
			||||||
 | 
					    logger.debug(f"Checking for migrations in {directory}")
 | 
				
			||||||
    for loc in entry_point[0].module.split(".") + ["migrations"]:
 | 
					    for loc in entry_point[0].module.split(".") + ["migrations"]:
 | 
				
			||||||
        directory /= loc
 | 
					        directory /= loc
 | 
				
			||||||
 | 
					        logger.debug(f"Checking for migrations with loc in {directory}")
 | 
				
			||||||
    if directory.exists():
 | 
					    if directory.exists():
 | 
				
			||||||
 | 
					        logger.debug(f"Found migrations in {directory}")
 | 
				
			||||||
        database_upgrade(revision=f"{plugin_name}@head")
 | 
					        database_upgrade(revision=f"{plugin_name}@head")
 | 
				
			||||||
    db.session.commit()
 | 
					    db.session.commit()
 | 
				
			||||||
    return plugin
 | 
					    return plugin
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
[metadata]
 | 
					[metadata]
 | 
				
			||||||
license = MIT
 | 
					license = MIT
 | 
				
			||||||
version = 2.0.0.dev0
 | 
					version = 2.0.0.dev1
 | 
				
			||||||
name = flaschengeist
 | 
					name = flaschengeist
 | 
				
			||||||
author = Tim Gröger
 | 
					author = Tim Gröger
 | 
				
			||||||
author_email = flaschengeist@wu5.de
 | 
					author_email = flaschengeist@wu5.de
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,7 @@ mysql =
 | 
				
			||||||
    mysqlclient;platform_system!='Windows'
 | 
					    mysqlclient;platform_system!='Windows'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[options.package_data]
 | 
					[options.package_data]
 | 
				
			||||||
* = *.toml, script.py.mako
 | 
					* = *.toml, script.py.mako, *.ini, */migrations/*, migrations/versions/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[options.entry_points]
 | 
					[options.entry_points]
 | 
				
			||||||
console_scripts =
 | 
					console_scripts =
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue