1
0
Fork 0
mirror of https://github.com/yavook/kiwi-scp.git synced 2024-11-22 21:03:00 +00:00
kiwi-scp/src/kiwi/subcommands/init.py

79 lines
2.3 KiB
Python
Raw Normal View History

2020-08-06 12:34:25 +00:00
import logging
import os
from ..core import KIWI_CONF_NAME, Parser
2020-08-10 09:24:39 +00:00
from ..config import DefaultConfig, LoadedConfig
2020-08-06 12:34:25 +00:00
from ._utils import SubCommand
2020-08-06 12:34:25 +00:00
def user_input(config, key, prompt):
# prompt user as per argument
2020-08-10 09:24:39 +00:00
result = input("{} [{}] ".format(prompt, config[key])).strip()
2020-08-06 12:34:25 +00:00
# store result if present
if result:
config[key] = result
def find_exe(program_name):
for path in os.environ["PATH"].split(os.pathsep):
exe_file = os.path.join(path, program_name)
if os.path.isfile(exe_file) and os.access(exe_file, os.X_OK):
return exe_file
return None
def user_input_exe(config, program_name):
exe_file = find_exe(program_name)
key = 'executables:' + program_name
if exe_file is not None:
config[key] = exe_file
else:
user_input(config, key, "Enter path to '{}' executable".format(program_name))
2020-08-06 12:34:25 +00:00
class InitCommand(SubCommand):
2020-08-10 09:24:39 +00:00
command = 'init'
2020-08-06 12:34:25 +00:00
@classmethod
def setup(cls):
2020-08-10 09:24:39 +00:00
parser = Parser.get_subparsers().add_parser(
cls.command,
description="Create a new kiwi-config instance"
)
parser.add_argument(
'-f', '--force',
action='store_true',
help="Use default values even if {} is present".format(KIWI_CONF_NAME)
)
2020-08-06 12:34:25 +00:00
@classmethod
def run(cls):
2020-08-10 09:24:39 +00:00
logging.info("Initializing kiwi-config instance in '%s'", os.getcwd())
2020-08-06 12:34:25 +00:00
2020-08-10 09:24:39 +00:00
if Parser.get_args().force and os.path.isfile(KIWI_CONF_NAME):
2020-08-06 12:34:25 +00:00
logging.warning("Overwriting existing '%s'!", KIWI_CONF_NAME)
2020-08-10 09:24:39 +00:00
config = DefaultConfig.get()
else:
config = LoadedConfig.get()
2020-08-06 12:34:25 +00:00
2020-08-10 09:24:39 +00:00
user_input(config, 'version', "Enter kiwi-config version for this instance")
2020-08-06 12:34:25 +00:00
2020-08-10 09:24:39 +00:00
user_input(config, 'runtime:storage', "Enter local directory for service data")
2020-08-06 12:34:25 +00:00
user_input(config, 'markers:project', "Enter marker string for project directories")
user_input(config, 'markers:down', "Enter marker string for disabled projects")
user_input(config, 'network:name', "Enter name for local docker network")
user_input(config, 'network:cidr', "Enter CIDR block for local docker network")
user_input_exe(config, 'docker')
user_input_exe(config, 'docker-compose')
user_input_exe(config, 'sudo')
2020-08-06 12:34:25 +00:00
config.save()