diff --git a/blend b/blend index bc50db5..570a068 100755 --- a/blend +++ b/blend @@ -19,6 +19,7 @@ import os import sys +import glob import time import shutil import socket @@ -91,7 +92,6 @@ distro_map = { 'fedora-39': 'registry.fedoraproject.org/fedora-toolbox:39', 'centos': 'quay.io/toolbx-images/centos-toolbox:latest', 'ubuntu-22.04': 'quay.io/toolbx/ubuntu-toolbox:22.04', - 'ubuntu-24.04-lts': 'quay.io/toolbx/ubuntu-toolbox:24.04', } default_distro = 'arch-linux' @@ -102,7 +102,7 @@ def get_distro(): return distro_map[args.distro] except: error(f"{args.distro} isn't supported by blend.") - exit(1) + exit() def list_containers(): @@ -128,7 +128,7 @@ def check_container(name): def check_container_status(name): - if os.environ.get('SUDO_USER'): + if os.environ.get('SUDO_USER') == None: return host_get_output("podman inspect --type container " + name + " --format \"{{.State.Status}}\"") else: return host_get_output(f"sudo -u {os.environ.get('SUDO_USER')} podman inspect --type container " + name + " --format \"{{.State.Status}}\"") @@ -136,7 +136,7 @@ def check_container_status(name): def core_start_container(name, new_container=False): sudo = [] - if os.environ.get('SUDO_USER'): + if os.environ.get('SUDO_USER') != None: sudo = ['sudo', '-u', os.environ.get('SUDO_USER')] subprocess.call([*sudo, 'podman', 'start', name], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) @@ -149,7 +149,7 @@ def core_start_container(name, new_container=False): subprocess.call(['podman', 'logs', '--since', str(start_time), name]) exit(1) - if not os.environ.get('SUDO_USER'): + if os.environ.get('SUDO_USER') == None: logproc = pexpect.spawn( 'podman', args=['logs', '-f', '--since', str(start_time), name], timeout=3600) else: @@ -247,12 +247,12 @@ def core_run_container(cmd): def core_install_pkg(pkg): - if args.distro.startswith('fedora-'): + if args.distro == 'fedora-rawhide': if args.noconfirm == True: core_run_container(f'sudo dnf -y install {pkg}') else: core_run_container(f'sudo dnf install {pkg}') - elif args.distro == 'arch-linux': + elif args.distro == 'arch': if core_get_retcode('[ -f /usr/bin/yay ]') != 0: core_run_container('sudo pacman -Sy') core_run_container( @@ -273,12 +273,12 @@ def core_install_pkg(pkg): def core_remove_pkg(pkg): - if args.distro.startswith('fedora-'): + if args.distro == 'fedora-rawhide': if args.noconfirm == True: core_run_container(f'sudo dnf -y remove {pkg}') else: core_run_container(f'sudo dnf remove {pkg}') - elif args.distro == 'arch-linux': + elif args.distro == 'arch': if args.noconfirm == True: core_run_container(f'sudo pacman --noconfirm -Rcns {pkg}') else: @@ -292,9 +292,9 @@ def core_remove_pkg(pkg): def core_search_pkg(pkg): - if args.distro.startswith('fedora-'): + if args.distro == 'fedora-rawhide': core_run_container(f'dnf search {pkg}') - elif args.distro == 'arch-linux': + elif args.distro == 'arch': core_run_container(f'yay -Sy') core_run_container(f'yay {pkg}') elif args.distro.startswith('ubuntu-'): @@ -303,9 +303,9 @@ def core_search_pkg(pkg): def core_show_pkg(pkg): - if args.distro.startswith('fedora-'): + if args.distro == 'fedora-rawhide': core_run_container(f'dnf info {pkg}') - elif args.distro == 'arch-linux': + elif args.distro == 'arch': core_run_container(f'yay -Sy') core_run_container(f'yay -Si {pkg}') elif args.distro.startswith('ubuntu-'): @@ -357,21 +357,21 @@ def show_blend(): def sync_blends(): - if args.distro.startswith('fedora-'): + if args.distro == 'fedora-rawhide': core_run_container(f'dnf makecache') - elif args.distro == 'arch-linux': + elif args.distro == 'arch': core_run_container(f'yay -Syy') elif args.distro.startswith('ubuntu-'): core_run_container(f'sudo apt-get update') def update_blends(): - if args.distro.startswith('fedora-'): + if args.distro == 'fedora-rawhide': if args.noconfirm == True: core_run_container(f'sudo dnf -y upgrade') else: core_run_container(f'sudo dnf upgrade') - elif args.distro == 'arch-linux': + elif args.distro == 'arch': if args.noconfirm == True: core_run_container(f'yay --noconfirm') else: @@ -392,7 +392,7 @@ def enter_container(): podman_args = ['--env', 'LC_ALL=C.UTF-8'] sudo = [] - if not os.environ.get('SUDO_USER'): + if os.environ.get('SUDO_USER') == None: podman_args = ['--user', getpass.getuser()] else: sudo = ['sudo', '-u', os.environ.get( @@ -401,7 +401,7 @@ def enter_container(): if name not in ['LANG', 'LC_CTYPE', 'LC_ALL', 'PATH', 'HOST', 'HOSTNAME', 'SHELL'] and not name.startswith('_'): podman_args.append('--env') podman_args.append(name + '=' + val) - if not os.environ.get('BLEND_COMMAND'): + if os.environ.get('BLEND_COMMAND') == None or os.environ.get('BLEND_COMMAND') == '': if args.pkg == []: if os.getcwd() == os.path.expanduser('~') or os.getcwd().startswith(os.path.expanduser('~') + '/'): exit(subprocess.call([*sudo, 'podman', 'exec', *podman_args, diff --git a/blend-settings/src/pages/containers.html b/blend-settings/src/pages/containers.html index 935a85a..54806c2 100644 --- a/blend-settings/src/pages/containers.html +++ b/blend-settings/src/pages/containers.html @@ -15,7 +15,6 @@ -
@@ -67,4 +66,4 @@ - + \ No newline at end of file diff --git a/user b/user index 1f78050..ed8d6a4 100755 --- a/user +++ b/user @@ -1,9 +1,13 @@ #!/usr/bin/python3 import os +import yaml import click import subprocess +from urllib.request import urlopen + + class colors: reset = '\033[0m' bold = '\033[01m' @@ -134,7 +138,7 @@ def associate_binary(association, container): @cli.command("dissociate") @click.argument('association') -def dissociate_binary(association): +def associate_binary(association): ''' Remove an association ''' @@ -152,19 +156,19 @@ def dissociate_binary(association): @cli.command("create-container") @click.argument('container_name') -@click.argument('distro', required=False) +@click.argument('distro', default='arch') def create_container(container_name, distro): ''' Create a container ''' + if distro not in ('arch', 'almalinux-9', 'crystal-linux', 'debian', 'fedora-38', 'kali-linux', 'neurodebian-bookworm', 'rocky-linux', 'ubuntu-22.04', 'ubuntu-23.04'): + error( + f'distro {colors.bold}{distro}{colors.reset} not supported') if subprocess.run(['podman', 'container', 'exists', container_name], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL).returncode == 0: error(f'container {colors.bold}{container_name}{colors.reset} already exists') exit(1) - args = ['blend', 'create-container', '-cn', container_name] - # blend handles no distro being specified already - if distro: - args.extend(['-d', distro]) - exit(subprocess.run(args).returncode) + subprocess.run(['blend', 'create-container', '-cn', container_name, '-d', distro]) + @cli.command("delete-container") @click.argument('container')