doxy/doxy/cli.py

63 lines
1.4 KiB
Python
Raw Normal View History

2023-01-10 08:57:57 +01:00
from pathlib import Path
2023-01-10 15:45:35 +01:00
import click
2023-01-10 10:14:38 +01:00
from rich import print
from rich.tree import Tree
2023-01-10 08:57:57 +01:00
from doxy import services
2023-01-10 15:45:35 +01:00
from doxy.config import Config
2023-01-10 08:57:57 +01:00
@click.group()
@click.pass_context
def main(ctx):
ctx.ensure_object(dict)
config = Config()
config.load()
ctx.obj["CONFIG"] = config
@click.command()
@click.pass_context
def list(ctx):
2023-01-10 10:14:38 +01:00
tree = Tree("[bold]Available Services")
for service in services.find_services(Path(ctx.obj["CONFIG"].root_directory)):
tree.add(service)
print(tree)
2023-01-10 08:57:57 +01:00
2023-01-10 10:24:38 +01:00
def complete_service_name(ctx, param, incomplete):
config = Config()
config.load()
2023-01-10 15:45:35 +01:00
return [
k
for k in services.find_services(Path(config.root_directory))
if k.startswith(incomplete)
]
2023-01-10 10:24:38 +01:00
2023-01-10 15:19:16 +01:00
@click.command()
@click.argument("service", nargs=1, shell_complete=complete_service_name)
@click.pass_context
def edit(ctx, service):
2023-01-10 15:45:35 +01:00
compose_file = services.get_compose_file(
Path(ctx.obj["CONFIG"].root_directory) / service
)
2023-01-10 15:19:16 +01:00
click.edit(filename=Path(compose_file))
2023-01-10 08:57:57 +01:00
@click.command()
@click.pass_context
2023-01-10 10:24:38 +01:00
@click.argument("service", nargs=1, shell_complete=complete_service_name)
2023-01-10 08:57:57 +01:00
@click.argument("command", nargs=-1)
def control(ctx, service, command):
2023-01-10 15:45:35 +01:00
compose_file = services.get_compose_file(
Path(ctx.obj["CONFIG"].root_directory) / service
)
2023-01-10 08:57:57 +01:00
services.docker_compose_command(command, compose_file)
main.add_command(list)
2023-01-10 15:19:16 +01:00
main.add_command(edit)
2023-01-10 08:57:57 +01:00
main.add_command(control)