mirror of
https://github.com/yavook/kiwi-scp.git
synced 2024-11-21 20:33:00 +00:00
Runner logic back into package, as singleton
This commit is contained in:
parent
65fcb91bd0
commit
3cb195fe1a
7 changed files with 71 additions and 50 deletions
|
@ -21,26 +21,13 @@ def set_verbosity(logger, handler, verbosity):
|
|||
|
||||
|
||||
def main():
|
||||
commands = [
|
||||
InitCommand,
|
||||
ShowCommand,
|
||||
LogsCommand
|
||||
]
|
||||
|
||||
for cmd in commands:
|
||||
cmd.setup()
|
||||
|
||||
args = kiwi.Parser().get_args()
|
||||
|
||||
log_handler = logging.StreamHandler()
|
||||
logging.getLogger().addHandler(log_handler)
|
||||
|
||||
set_verbosity(logging.getLogger(), log_handler, args.verbosity)
|
||||
|
||||
for cmd in commands:
|
||||
if cmd.command == args.command:
|
||||
cmd.run()
|
||||
return
|
||||
kiwi.Runner().run(args.command)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
from .core import Parser
|
||||
from .runner import Runner
|
||||
|
||||
__all__ = [
|
||||
'Parser'
|
||||
'Parser',
|
||||
'Runner'
|
||||
]
|
||||
|
|
40
src/kiwi/runner.py
Normal file
40
src/kiwi/runner.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
from .subcommands import *
|
||||
|
||||
###########
|
||||
# CONSTANTS
|
||||
|
||||
SUBCOMMANDS = [
|
||||
InitCommand,
|
||||
ShowCommand,
|
||||
LogsCommand
|
||||
]
|
||||
|
||||
|
||||
class Runner:
|
||||
class __Runner:
|
||||
__commands = []
|
||||
|
||||
def __init__(self):
|
||||
for cmd in SUBCOMMANDS:
|
||||
self.__commands.append(cmd())
|
||||
|
||||
def run(self, command_name):
|
||||
for cmd in self.__commands:
|
||||
if str(cmd) == command_name:
|
||||
cmd.run()
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
__instance = None
|
||||
|
||||
def __init__(self):
|
||||
if Runner.__instance is None:
|
||||
Runner.__instance = Runner.__Runner()
|
||||
|
||||
def __getattr__(self, item):
|
||||
return getattr(self.__instance, item)
|
||||
|
||||
|
||||
if __name__ == 'kiwi.runner':
|
||||
Runner().setup_all()
|
|
@ -1,11 +1,9 @@
|
|||
import os
|
||||
import subprocess
|
||||
|
||||
from ..core import Parser
|
||||
from ..config import LoadedConfig
|
||||
|
||||
###########
|
||||
# CONSTANTS
|
||||
|
||||
|
||||
def is_executable(filename):
|
||||
if filename is None:
|
||||
|
@ -28,14 +26,20 @@ def get_exe_key(exe_name):
|
|||
|
||||
|
||||
class SubCommand:
|
||||
command = None
|
||||
__name = None
|
||||
__parser = None
|
||||
|
||||
@classmethod
|
||||
def setup(cls):
|
||||
pass
|
||||
def __init__(self, name, **kwargs):
|
||||
self.__name = name
|
||||
self.__parser = Parser().get_subparsers().add_parser(name, **kwargs)
|
||||
|
||||
@classmethod
|
||||
def run(cls):
|
||||
def __str__(self):
|
||||
return self.__name
|
||||
|
||||
def get_parser(self):
|
||||
return self.__parser
|
||||
|
||||
def run(self):
|
||||
pass
|
||||
|
||||
|
||||
|
|
|
@ -32,23 +32,19 @@ def user_input_exe(config, exe_name):
|
|||
|
||||
|
||||
class InitCommand(SubCommand):
|
||||
command = 'init'
|
||||
|
||||
@classmethod
|
||||
def setup(cls):
|
||||
parser = Parser().get_subparsers().add_parser(
|
||||
cls.command,
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
'init',
|
||||
description="Create a new kiwi-config instance"
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
self.get_parser().add_argument(
|
||||
'-f', '--force',
|
||||
action='store_true',
|
||||
help=f"Use default values even if {KIWI_CONF_NAME} is present"
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def run(cls):
|
||||
def run(self):
|
||||
logging.info(f"Initializing kiwi-config instance in '{os.getcwd()}'")
|
||||
|
||||
if Parser().get_args().force and os.path.isfile(KIWI_CONF_NAME):
|
||||
|
|
|
@ -4,15 +4,11 @@ from ._utils import SubCommand, Docker
|
|||
|
||||
|
||||
class LogsCommand(SubCommand):
|
||||
command = 'logs'
|
||||
|
||||
@classmethod
|
||||
def setup(cls):
|
||||
_ = Parser().get_subparsers().add_parser(
|
||||
cls.command,
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
'logs',
|
||||
description="Show logs of a project"
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def run(cls):
|
||||
def run(self):
|
||||
print(Docker.run_command('docker-compose', ['logs', '-tf', '--tail=10'], cwd='hello-world.project', env={'COMPOSE_PROJECT_NAME': 'hello-world'}))
|
||||
|
|
|
@ -5,16 +5,12 @@ from ._utils import SubCommand
|
|||
|
||||
|
||||
class ShowCommand(SubCommand):
|
||||
command = 'show'
|
||||
|
||||
@classmethod
|
||||
def setup(cls):
|
||||
_ = Parser().get_subparsers().add_parser(
|
||||
cls.command,
|
||||
description="Show effective kiwi.yml"
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
'logs',
|
||||
description="Show logs of a project"
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def run(cls):
|
||||
def run(self):
|
||||
config = LoadedConfig.get()
|
||||
print(config)
|
||||
|
|
Loading…
Reference in a new issue