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