mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-02-22 13:15:44 -05:00
Make main.py the main entrypoint again and call docker wrapper enforcement from cli() callback
Signed-off-by: InsanePrawn <insane.prawny@gmail.com>
This commit is contained in:
parent
b87fdf722b
commit
d52a615774
3 changed files with 45 additions and 21 deletions
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck disable=SC2068
|
# shellcheck disable=SC2068
|
||||||
python3 "$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")/wrapper.py" $@
|
python3 "$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")/main.py" $@
|
||||||
|
|
11
main.py
11
main.py
|
@ -9,19 +9,25 @@ from telnet import cmd_telnet
|
||||||
from logger import setup_logging, verbose_option
|
from logger import setup_logging, verbose_option
|
||||||
import click
|
import click
|
||||||
from config import config, config_option
|
from config import config, config_option
|
||||||
|
from wrapper import enforce_wrap, nowrapper_option
|
||||||
|
|
||||||
|
|
||||||
@click.group()
|
@click.group()
|
||||||
@verbose_option
|
@verbose_option
|
||||||
@config_option
|
@config_option
|
||||||
def cli(verbose: bool = False, config_file: str = None):
|
@nowrapper_option
|
||||||
|
def cli(verbose: bool = False, config_file: str = None, no_wrapper: bool = False):
|
||||||
setup_logging(verbose)
|
setup_logging(verbose)
|
||||||
config.runtime['verbose'] = verbose
|
config.runtime['verbose'] = verbose
|
||||||
config.try_load_file(config_file)
|
config.try_load_file(config_file)
|
||||||
|
# TODO: move this only to CMDs where it's needed
|
||||||
|
enforce_wrap(no_wrapper=no_wrapper)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
return cli(prog_name='kupferbootstrap')
|
return cli(prog_name='kupferbootstrap')
|
||||||
|
|
||||||
|
|
||||||
cli.add_command(cmd_cache)
|
cli.add_command(cmd_cache)
|
||||||
cli.add_command(cmd_packages)
|
cli.add_command(cmd_packages)
|
||||||
cli.add_command(cmd_image)
|
cli.add_command(cmd_image)
|
||||||
|
@ -30,3 +36,6 @@ cli.add_command(cmd_flash)
|
||||||
cli.add_command(cmd_ssh)
|
cli.add_command(cmd_ssh)
|
||||||
cli.add_command(cmd_forwarding)
|
cli.add_command(cmd_forwarding)
|
||||||
cli.add_command(cmd_telnet)
|
cli.add_command(cmd_telnet)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
|
|
53
wrapper.py
53
wrapper.py
|
@ -4,28 +4,28 @@ import subprocess
|
||||||
import sys
|
import sys
|
||||||
import appdirs
|
import appdirs
|
||||||
import uuid
|
import uuid
|
||||||
|
import click
|
||||||
|
import logging
|
||||||
|
from config import config
|
||||||
|
|
||||||
if os.getenv('KUPFERBOOTSTRAP_DOCKER') == '1':
|
|
||||||
from main import main
|
def wrap_docker():
|
||||||
main()
|
|
||||||
else:
|
|
||||||
script_path = os.path.dirname(os.path.abspath(__file__))
|
script_path = os.path.dirname(os.path.abspath(__file__))
|
||||||
with open(os.path.join(script_path, 'version.txt')) as version_file:
|
with open(os.path.join(script_path, 'version.txt')) as version_file:
|
||||||
version = version_file.read().replace('\n', '')
|
version = version_file.read().replace('\n', '')
|
||||||
tag = f'registry.gitlab.com/kupfer/kupferbootstrap:{version}'
|
tag = f'registry.gitlab.com/kupfer/kupferbootstrap:{version}'
|
||||||
if version == 'dev':
|
if version == 'dev':
|
||||||
result = subprocess.run(
|
logging.info(f'Building docker image "{tag}"')
|
||||||
[
|
cmd = [
|
||||||
'docker',
|
'docker',
|
||||||
'build',
|
'build',
|
||||||
'.',
|
'.',
|
||||||
'-t',
|
'-t',
|
||||||
tag,
|
tag,
|
||||||
],
|
] + (['-q'] if not config.runtime['verbose'] else [])
|
||||||
cwd=script_path,
|
result = subprocess.run(cmd, cwd=script_path, capture_output=True)
|
||||||
)
|
|
||||||
if result.returncode != 0:
|
if result.returncode != 0:
|
||||||
print(f'Failed to build kupferbootstrap docker image')
|
logging.fatal('Failed to build docker image:\n' + result.stderr.decode())
|
||||||
exit(1)
|
exit(1)
|
||||||
else:
|
else:
|
||||||
# Check if the image for the version already exists
|
# Check if the image for the version already exists
|
||||||
|
@ -39,7 +39,7 @@ else:
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
)
|
)
|
||||||
if result.stdout == b'':
|
if result.stdout == b'':
|
||||||
print(f'Pulling kupferbootstrap docker image version \'{version}\'')
|
logging.info(f'Pulling kupferbootstrap docker image version \'{version}\'')
|
||||||
subprocess.run([
|
subprocess.run([
|
||||||
'docker',
|
'docker',
|
||||||
'pull',
|
'pull',
|
||||||
|
@ -66,8 +66,7 @@ else:
|
||||||
'-v',
|
'-v',
|
||||||
f'{os.getenv("KUPFERBOOTSTRAP_PREBUILTS")}:/prebuilts:z',
|
f'{os.getenv("KUPFERBOOTSTRAP_PREBUILTS")}:/prebuilts:z',
|
||||||
]
|
]
|
||||||
|
cmd = [
|
||||||
result = subprocess.run([
|
|
||||||
'docker',
|
'docker',
|
||||||
'run',
|
'run',
|
||||||
'--name',
|
'--name',
|
||||||
|
@ -88,6 +87,22 @@ else:
|
||||||
'-v',
|
'-v',
|
||||||
'/dev:/dev',
|
'/dev:/dev',
|
||||||
#'-v', '/mnt/kupfer:/mnt/kupfer:z',
|
#'-v', '/mnt/kupfer:/mnt/kupfer:z',
|
||||||
] + [tag, 'kupferbootstrap'] + sys.argv[1:])
|
] + [tag, 'kupferbootstrap'] + sys.argv[1:]
|
||||||
|
logging.debug('Wrapping in docker:' + repr(cmd))
|
||||||
|
result = subprocess.run(cmd)
|
||||||
|
|
||||||
exit(result.returncode)
|
exit(result.returncode)
|
||||||
|
|
||||||
|
|
||||||
|
def enforce_wrap(no_wrapper=False):
|
||||||
|
if os.getenv('KUPFERBOOTSTRAP_DOCKER') != '1' and not no_wrapper:
|
||||||
|
wrap_docker()
|
||||||
|
|
||||||
|
|
||||||
|
nowrapper_option = click.option(
|
||||||
|
'--no-wrapper',
|
||||||
|
'no_wrapper',
|
||||||
|
is_flag=True,
|
||||||
|
default=False,
|
||||||
|
help='Disable the docker wrapper. Defaults to autodetection.',
|
||||||
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue