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