#!/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'
)