#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import click
import sh

from .lazy_group import LazyGroup
from .utils import abort_if_false
from . import settings


@click.group()
def cli1():
    pass


@click.group(
    cls=LazyGroup,
    lazy_subcommands={'docker-compose': 'cli.builder.docker_compose'},
)
def cli2():
    pass


@click.group(help='cmd for build/destroy project in docker containers')
def docker_compose():
    pass


@docker_compose.command(help='cmd for build project in docker containers')
def build():
    with sh.contrib.sudo(password=settings.SUDO_PASSWORD, _with=True):
        sh.docker_compose('-f', settings.COMPOSE_FILE, 'build', _fg=True)


@docker_compose.command(help='cmd for destroy project in docker containers')
@click.option(
    '--yes',
    is_flag=True,
    callback=abort_if_false,
    expose_value=False,
    prompt='Are you sure you want to destroy docker containers')
def destroy():
    with sh.contrib.sudo(password=settings.SUDO_PASSWORD, _with=True):
        sh.docker_compose('-f', settings.COMPOSE_FILE, 'down',  _fg=True)


cli = click.CommandCollection(
    sources=[cli1, cli2],
    help='cmd for building the project'
)