isp-maintenance/scripts/devtools/cli/runner.py

58 lines
1.3 KiB
Python
Raw Normal View History

2024-06-04 23:35:21 +08:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import click
import sh
from .lazy_group import LazyGroup
from . import settings
@click.group()
def cli1():
pass
@click.group(
cls=LazyGroup,
lazy_subcommands={'docker-compose': 'cli.runner.docker_compose'},
)
def cli2():
pass
@click.group(help='cmd for run/stop/restart project in docker containers')
def docker_compose():
pass
@docker_compose.command(help='cmd for run project docker containers')
def up():
with sh.contrib.sudo(password=settings.SUDO_PASSWORD, _with=True):
sh.docker_compose('-f', settings.COMPOSE_FILE, 'up', '-d', _fg=True)
@docker_compose.command(help='cmd for down project docker containers')
def down():
with sh.contrib.sudo(password=settings.SUDO_PASSWORD, _with=True):
sh.docker_compose('-f', settings.COMPOSE_FILE, 'down', _fg=True)
@docker_compose.command(help='cmd for restart project docker containers')
def restart():
with sh.contrib.sudo(password=settings.SUDO_PASSWORD, _with=True):
sh.docker_compose(
'-f',
settings.COMPOSE_FILE,
'up',
'-d',
'--build',
'--force-recreate',
_fg=True
)
cli = click.CommandCollection(
sources=[cli1, cli2],
help='cmd for running the project standalone or docker-compose'
)