diff --git a/blend b/blend index 570a068..bc50db5 100755 --- a/blend +++ b/blend @@ -19,7 +19,6 @@ import os import sys -import glob import time import shutil import socket @@ -92,6 +91,7 @@ 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() + exit(1) def list_containers(): @@ -128,7 +128,7 @@ def check_container(name): def check_container_status(name): - if os.environ.get('SUDO_USER') == None: + if os.environ.get('SUDO_USER'): 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') != None: + if os.environ.get('SUDO_USER'): 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 os.environ.get('SUDO_USER') == None: + if not os.environ.get('SUDO_USER'): 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 == 'fedora-rawhide': + if args.distro.startswith('fedora-'): 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': + elif args.distro == 'arch-linux': 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 == 'fedora-rawhide': + if args.distro.startswith('fedora-'): 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': + elif args.distro == 'arch-linux': 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 == 'fedora-rawhide': + if args.distro.startswith('fedora-'): core_run_container(f'dnf search {pkg}') - elif args.distro == 'arch': + elif args.distro == 'arch-linux': 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 == 'fedora-rawhide': + if args.distro.startswith('fedora-'): core_run_container(f'dnf info {pkg}') - elif args.distro == 'arch': + elif args.distro == 'arch-linux': 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 == 'fedora-rawhide': + if args.distro.startswith('fedora-'): core_run_container(f'dnf makecache') - elif args.distro == 'arch': + elif args.distro == 'arch-linux': 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 == 'fedora-rawhide': + if args.distro.startswith('fedora-'): if args.noconfirm == True: core_run_container(f'sudo dnf -y upgrade') else: core_run_container(f'sudo dnf upgrade') - elif args.distro == 'arch': + elif args.distro == 'arch-linux': 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 os.environ.get('SUDO_USER') == None: + if not os.environ.get('SUDO_USER'): 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 os.environ.get('BLEND_COMMAND') == None or os.environ.get('BLEND_COMMAND') == '': + if not 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 54806c2..935a85a 100644 --- a/blend-settings/src/pages/containers.html +++ b/blend-settings/src/pages/containers.html @@ -15,6 +15,7 @@ +
@@ -66,4 +67,4 @@ - \ No newline at end of file + diff --git a/user b/user index ed8d6a4..1f78050 100755 --- a/user +++ b/user @@ -1,13 +1,9 @@ #!/usr/bin/python3 import os -import yaml import click import subprocess -from urllib.request import urlopen - - class colors: reset = '\033[0m' bold = '\033[01m' @@ -138,7 +134,7 @@ def associate_binary(association, container): @cli.command("dissociate") @click.argument('association') -def associate_binary(association): +def dissociate_binary(association): ''' Remove an association ''' @@ -156,19 +152,19 @@ def associate_binary(association): @cli.command("create-container") @click.argument('container_name') -@click.argument('distro', default='arch') +@click.argument('distro', required=False) 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) - subprocess.run(['blend', 'create-container', '-cn', container_name, '-d', distro]) - + 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) @cli.command("delete-container") @click.argument('container')