Working config loading from TOML, env var, cli args
This commit is contained in:
@ -42,14 +42,15 @@ db.init(HAMSTER_FILE)
|
||||
@click.group(context_settings={"auto_envvar_prefix": "HAMSTERTOOL"})
|
||||
@click.option("-d", "--debug", is_flag=True)
|
||||
@click.option("--config", default=CONFIG_FILE, type=click.Path())
|
||||
@click.option("--kimai-api-key", envvar="KIMAI_API_KEY")
|
||||
@click.option("--kimai-api-url", envvar="KIMAI_API_URL")
|
||||
@click.option("--kimai-username", envvar="KIMAI_USERNAME")
|
||||
@click.option("--kimai-api-key", envvar="KIMAI_API_KEY")
|
||||
@click.pass_context
|
||||
def cli(ctx, config, debug, kimai_api_url, kimai_username, kimai_api_key):
|
||||
def cli(ctx, config, debug, kimai_api_url=None, kimai_username=None, kimai_api_key=None):
|
||||
file_config = {}
|
||||
if os.path.exists(config):
|
||||
with open(config, "rb") as f:
|
||||
ctx.default_map = tomllib.load(f)
|
||||
file_config = tomllib.load(f)
|
||||
if debug:
|
||||
logging.basicConfig()
|
||||
logging.getLogger().setLevel(logging.DEBUG)
|
||||
@ -62,6 +63,12 @@ def cli(ctx, config, debug, kimai_api_url, kimai_username, kimai_api_key):
|
||||
requests_log.setLevel(logging.DEBUG)
|
||||
requests_log.propagate = True
|
||||
|
||||
ctx.obj = KimaiAPI(
|
||||
kimai_username if kimai_username is not None else file_config.get("kimai_username"),
|
||||
kimai_api_key if kimai_api_key is not None else file_config.get("kimai_api_key"),
|
||||
kimai_api_url if kimai_api_url is not None else file_config.get("kimai_api_url"),
|
||||
)
|
||||
|
||||
|
||||
@cli.group()
|
||||
def categories():
|
||||
@ -326,12 +333,8 @@ def find_duplicates():
|
||||
|
||||
|
||||
@cli.group()
|
||||
@click.pass_context
|
||||
def kimai(ctx, kimai_username=None, kimai_api_key=None):
|
||||
ctx.ensure_object(dict)
|
||||
|
||||
ctx.obj['KIMAI_USERNAME'] = kimai_username
|
||||
ctx.obj['KIMAI_API_KEY'] = kimai_api_key
|
||||
def kimai():
|
||||
pass
|
||||
|
||||
|
||||
def _get_kimai_mapping_file(path, category_search=None):
|
||||
@ -776,11 +779,10 @@ def reset():
|
||||
|
||||
|
||||
@db_.command("sync")
|
||||
@click.pass_context
|
||||
def kimai_db_sync(ctx):
|
||||
@click.pass_obj
|
||||
def kimai_db_sync(api):
|
||||
sync(
|
||||
username=ctx.obj['KIMAI_USERNAME'],
|
||||
api_key=ctx.obj['KIMAI_API_KEY']
|
||||
api
|
||||
)
|
||||
|
||||
|
||||
@ -822,14 +824,12 @@ def mapping2db(mapping_path=None, global_=False):
|
||||
|
||||
|
||||
@cli.command()
|
||||
@click.pass_context
|
||||
def app(ctx):
|
||||
@click.pass_obj
|
||||
def app(kimai_api):
|
||||
from .app import HamsterToolsApp
|
||||
|
||||
app = HamsterToolsApp(
|
||||
kimai_api_url=ctx.obj["KIMAI_API_URL"],
|
||||
kimai_username=ctx.obj["KIMAI_USERNAME"],
|
||||
kimai_api_key=ctx.obj["KIMAI_API_KEY"]
|
||||
kimai_api
|
||||
)
|
||||
app.run()
|
||||
|
||||
|
Reference in New Issue
Block a user