"logs" command finished

This commit is contained in:
Jörn-Michael Miehe 2020-08-11 12:33:21 +02:00
parent 0299e6a86f
commit f94db364d7
5 changed files with 39 additions and 27 deletions

View file

@ -12,4 +12,7 @@ networks:
services: services:
hello-world: hello-world:
image: alpine:latest image: alpine:latest
command: sh -c 'while :; do echo Hello World "$$RANDOM"; sleep 10; done' command: sh -c 'LOOP=1; while :; do echo Hello World "$$LOOP"; LOOP=$$(($$LOOP + 1)); sleep 10; done'
foo-bar:
image: alpine:latest
command: sh -c 'LOOP=1; while :; do echo Foo Bar "$$LOOP"; LOOP=$$(($$LOOP + 1)); sleep 20; done'

1
example/kiwi Symbolic link
View file

@ -0,0 +1 @@
../src/kiwi-config.py

View file

@ -28,18 +28,15 @@ def get_exe_key(exe_name):
class SubCommand: class SubCommand:
__name = None __name = None
__parser = None _parser = None
def __init__(self, name, **kwargs): def __init__(self, name, **kwargs):
self.__name = name self.__name = name
self.__parser = Parser().get_subparsers().add_parser(name, **kwargs) self._parser = Parser().get_subparsers().add_parser(name, **kwargs)
def __str__(self): def __str__(self):
return self.__name return self.__name
def get_parser(self):
return self.__parser
def run(self): def run(self):
pass pass

View file

@ -38,7 +38,7 @@ class InitCommand(SubCommand):
description="Create a new kiwi-config instance" description="Create a new kiwi-config instance"
) )
self.get_parser().add_argument( self._parser.add_argument(
'-f', '--force', '-f', '--force',
action='store_true', action='store_true',
help=f"use default values even if {KIWI_CONF_NAME} is present" help=f"use default values even if {KIWI_CONF_NAME} is present"

View file

@ -1,3 +1,5 @@
import logging
from ..config import LoadedConfig from ..config import LoadedConfig
from ..core import Parser from ..core import Parser
@ -8,46 +10,55 @@ class LogsCommand(SubCommand):
def __init__(self): def __init__(self):
super().__init__( super().__init__(
'logs', 'logs',
description="Show logs of a project or service" description="Show logs of a project or service(s) of a project"
) )
self.get_parser().add_argument( self._parser.add_argument(
'-f', '--follow', action='store_true', '-f', '--follow', action='store_true',
help="output appended data as log grows" help="output appended data as log grows"
) )
self.get_parser().add_argument( self._parser.add_argument(
'project', 'project', type=str,
help="narf" help="select a project in this instance"
) )
self.get_parser().add_argument( self._parser.add_argument(
'service', nargs='?', 'services', metavar='service', nargs='*', type=str,
help="narf" help="select service(s) in a project"
) )
def run(self): def run(self):
config = LoadedConfig.get() config = LoadedConfig.get()
cli_args = Parser().get_args()
project_name = Parser().get_args().project project_name = cli_args.project
project_marker = config['markers:project'] project_marker = config['markers:project']
project_dir = f'{project_name}{project_marker}' project_dir = f'{project_name}{project_marker}'
environment = { environment = {
'KIWI_NET_NAME': config['network:name'], 'KIWI_HUB_NAME': config['network:name'],
'COMPOSE_PROJECT_NAME': project_name 'COMPOSE_PROJECT_NAME': project_name
} }
args = ['logs', '-t'] args = ['logs', '-t']
if Parser().get_args().follow: if cli_args.follow:
args = [*args, '-f', '--tail=10'] args = [*args, '-f', '--tail=10']
DockerCommand('docker-compose').run( if cli_args.services:
args, args = [*args, *cli_args.services]
cwd=project_dir, env=environment
) try:
else: if cli_args.follow:
DockerCommand('docker-compose').run_less( DockerCommand('docker-compose').run(
args, args,
cwd=project_dir, env=environment cwd=project_dir, env=environment
) )
else:
DockerCommand('docker-compose').run_less(
args,
cwd=project_dir, env=environment
)
except KeyboardInterrupt:
logging.debug("Subprocess aborted.")
print()