Compare commits
11 commits
6bee27bb0d
...
eacb3aa470
Author | SHA1 | Date | |
---|---|---|---|
|
eacb3aa470 | ||
|
09f3120048 | ||
|
a6ec69a1f6 | ||
|
4569521785 | ||
|
77e9293295 | ||
|
3eaf53104a | ||
|
3d888de5e1 | ||
|
5800446122 | ||
|
321f9d9399 | ||
|
463cdf64fc | ||
|
4dc80a30d7 |
2 changed files with 26 additions and 30 deletions
37
blend
37
blend
|
@ -19,7 +19,6 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import glob
|
|
||||||
import time
|
import time
|
||||||
import shutil
|
import shutil
|
||||||
import socket
|
import socket
|
||||||
|
@ -103,7 +102,7 @@ def get_distro():
|
||||||
return distro_map[args.distro]
|
return distro_map[args.distro]
|
||||||
except:
|
except:
|
||||||
error(f"{args.distro} isn't supported by blend.")
|
error(f"{args.distro} isn't supported by blend.")
|
||||||
exit()
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
def list_containers():
|
def list_containers():
|
||||||
|
@ -129,7 +128,7 @@ def check_container(name):
|
||||||
|
|
||||||
|
|
||||||
def check_container_status(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}}\"")
|
return host_get_output("podman inspect --type container " + name + " --format \"{{.State.Status}}\"")
|
||||||
else:
|
else:
|
||||||
return host_get_output(f"sudo -u {os.environ.get('SUDO_USER')} podman inspect --type container " + name + " --format \"{{.State.Status}}\"")
|
return host_get_output(f"sudo -u {os.environ.get('SUDO_USER')} podman inspect --type container " + name + " --format \"{{.State.Status}}\"")
|
||||||
|
@ -137,7 +136,7 @@ def check_container_status(name):
|
||||||
|
|
||||||
def core_start_container(name, new_container=False):
|
def core_start_container(name, new_container=False):
|
||||||
sudo = []
|
sudo = []
|
||||||
if os.environ.get('SUDO_USER') != None:
|
if os.environ.get('SUDO_USER'):
|
||||||
sudo = ['sudo', '-u', os.environ.get('SUDO_USER')]
|
sudo = ['sudo', '-u', os.environ.get('SUDO_USER')]
|
||||||
subprocess.call([*sudo, 'podman', 'start', name],
|
subprocess.call([*sudo, 'podman', 'start', name],
|
||||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||||
|
@ -150,7 +149,7 @@ def core_start_container(name, new_container=False):
|
||||||
subprocess.call(['podman', 'logs', '--since', str(start_time), name])
|
subprocess.call(['podman', 'logs', '--since', str(start_time), name])
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
if os.environ.get('SUDO_USER') == None:
|
if not os.environ.get('SUDO_USER'):
|
||||||
logproc = pexpect.spawn(
|
logproc = pexpect.spawn(
|
||||||
'podman', args=['logs', '-f', '--since', str(start_time), name], timeout=3600)
|
'podman', args=['logs', '-f', '--since', str(start_time), name], timeout=3600)
|
||||||
else:
|
else:
|
||||||
|
@ -248,12 +247,12 @@ def core_run_container(cmd):
|
||||||
|
|
||||||
|
|
||||||
def core_install_pkg(pkg):
|
def core_install_pkg(pkg):
|
||||||
if args.distro == 'fedora-rawhide':
|
if args.distro.startswith('fedora-'):
|
||||||
if args.noconfirm == True:
|
if args.noconfirm == True:
|
||||||
core_run_container(f'sudo dnf -y install {pkg}')
|
core_run_container(f'sudo dnf -y install {pkg}')
|
||||||
else:
|
else:
|
||||||
core_run_container(f'sudo dnf install {pkg}')
|
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:
|
if core_get_retcode('[ -f /usr/bin/yay ]') != 0:
|
||||||
core_run_container('sudo pacman -Sy')
|
core_run_container('sudo pacman -Sy')
|
||||||
core_run_container(
|
core_run_container(
|
||||||
|
@ -274,12 +273,12 @@ def core_install_pkg(pkg):
|
||||||
|
|
||||||
|
|
||||||
def core_remove_pkg(pkg):
|
def core_remove_pkg(pkg):
|
||||||
if args.distro == 'fedora-rawhide':
|
if args.distro.startswith('fedora-'):
|
||||||
if args.noconfirm == True:
|
if args.noconfirm == True:
|
||||||
core_run_container(f'sudo dnf -y remove {pkg}')
|
core_run_container(f'sudo dnf -y remove {pkg}')
|
||||||
else:
|
else:
|
||||||
core_run_container(f'sudo dnf remove {pkg}')
|
core_run_container(f'sudo dnf remove {pkg}')
|
||||||
elif args.distro == 'arch':
|
elif args.distro == 'arch-linux':
|
||||||
if args.noconfirm == True:
|
if args.noconfirm == True:
|
||||||
core_run_container(f'sudo pacman --noconfirm -Rcns {pkg}')
|
core_run_container(f'sudo pacman --noconfirm -Rcns {pkg}')
|
||||||
else:
|
else:
|
||||||
|
@ -293,9 +292,9 @@ def core_remove_pkg(pkg):
|
||||||
|
|
||||||
|
|
||||||
def core_search_pkg(pkg):
|
def core_search_pkg(pkg):
|
||||||
if args.distro == 'fedora-rawhide':
|
if args.distro.startswith('fedora-'):
|
||||||
core_run_container(f'dnf search {pkg}')
|
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 -Sy')
|
||||||
core_run_container(f'yay {pkg}')
|
core_run_container(f'yay {pkg}')
|
||||||
elif args.distro.startswith('ubuntu-'):
|
elif args.distro.startswith('ubuntu-'):
|
||||||
|
@ -304,9 +303,9 @@ def core_search_pkg(pkg):
|
||||||
|
|
||||||
|
|
||||||
def core_show_pkg(pkg):
|
def core_show_pkg(pkg):
|
||||||
if args.distro == 'fedora-rawhide':
|
if args.distro.startswith('fedora-'):
|
||||||
core_run_container(f'dnf info {pkg}')
|
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 -Sy')
|
||||||
core_run_container(f'yay -Si {pkg}')
|
core_run_container(f'yay -Si {pkg}')
|
||||||
elif args.distro.startswith('ubuntu-'):
|
elif args.distro.startswith('ubuntu-'):
|
||||||
|
@ -358,21 +357,21 @@ def show_blend():
|
||||||
|
|
||||||
|
|
||||||
def sync_blends():
|
def sync_blends():
|
||||||
if args.distro == 'fedora-rawhide':
|
if args.distro.startswith('fedora-'):
|
||||||
core_run_container(f'dnf makecache')
|
core_run_container(f'dnf makecache')
|
||||||
elif args.distro == 'arch':
|
elif args.distro == 'arch-linux':
|
||||||
core_run_container(f'yay -Syy')
|
core_run_container(f'yay -Syy')
|
||||||
elif args.distro.startswith('ubuntu-'):
|
elif args.distro.startswith('ubuntu-'):
|
||||||
core_run_container(f'sudo apt-get update')
|
core_run_container(f'sudo apt-get update')
|
||||||
|
|
||||||
|
|
||||||
def update_blends():
|
def update_blends():
|
||||||
if args.distro == 'fedora-rawhide':
|
if args.distro.startswith('fedora-'):
|
||||||
if args.noconfirm == True:
|
if args.noconfirm == True:
|
||||||
core_run_container(f'sudo dnf -y upgrade')
|
core_run_container(f'sudo dnf -y upgrade')
|
||||||
else:
|
else:
|
||||||
core_run_container(f'sudo dnf upgrade')
|
core_run_container(f'sudo dnf upgrade')
|
||||||
elif args.distro == 'arch':
|
elif args.distro == 'arch-linux':
|
||||||
if args.noconfirm == True:
|
if args.noconfirm == True:
|
||||||
core_run_container(f'yay --noconfirm')
|
core_run_container(f'yay --noconfirm')
|
||||||
else:
|
else:
|
||||||
|
@ -393,7 +392,7 @@ def enter_container():
|
||||||
|
|
||||||
podman_args = ['--env', 'LC_ALL=C.UTF-8']
|
podman_args = ['--env', 'LC_ALL=C.UTF-8']
|
||||||
sudo = []
|
sudo = []
|
||||||
if os.environ.get('SUDO_USER') == None:
|
if not os.environ.get('SUDO_USER'):
|
||||||
podman_args = ['--user', getpass.getuser()]
|
podman_args = ['--user', getpass.getuser()]
|
||||||
else:
|
else:
|
||||||
sudo = ['sudo', '-u', os.environ.get(
|
sudo = ['sudo', '-u', os.environ.get(
|
||||||
|
@ -402,7 +401,7 @@ def enter_container():
|
||||||
if name not in ['LANG', 'LC_CTYPE', 'LC_ALL', 'PATH', 'HOST', 'HOSTNAME', 'SHELL'] and not name.startswith('_'):
|
if name not in ['LANG', 'LC_CTYPE', 'LC_ALL', 'PATH', 'HOST', 'HOSTNAME', 'SHELL'] and not name.startswith('_'):
|
||||||
podman_args.append('--env')
|
podman_args.append('--env')
|
||||||
podman_args.append(name + '=' + val)
|
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 args.pkg == []:
|
||||||
if os.getcwd() == os.path.expanduser('~') or os.getcwd().startswith(os.path.expanduser('~') + '/'):
|
if os.getcwd() == os.path.expanduser('~') or os.getcwd().startswith(os.path.expanduser('~') + '/'):
|
||||||
exit(subprocess.call([*sudo, 'podman', 'exec', *podman_args,
|
exit(subprocess.call([*sudo, 'podman', 'exec', *podman_args,
|
||||||
|
|
19
user
19
user
|
@ -1,13 +1,9 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import yaml
|
|
||||||
import click
|
import click
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from urllib.request import urlopen
|
|
||||||
|
|
||||||
|
|
||||||
class colors:
|
class colors:
|
||||||
reset = '\033[0m'
|
reset = '\033[0m'
|
||||||
bold = '\033[01m'
|
bold = '\033[01m'
|
||||||
|
@ -138,7 +134,7 @@ def associate_binary(association, container):
|
||||||
|
|
||||||
@cli.command("dissociate")
|
@cli.command("dissociate")
|
||||||
@click.argument('association')
|
@click.argument('association')
|
||||||
def associate_binary(association):
|
def dissociate_binary(association):
|
||||||
'''
|
'''
|
||||||
Remove an association
|
Remove an association
|
||||||
'''
|
'''
|
||||||
|
@ -156,19 +152,19 @@ def associate_binary(association):
|
||||||
|
|
||||||
@cli.command("create-container")
|
@cli.command("create-container")
|
||||||
@click.argument('container_name')
|
@click.argument('container_name')
|
||||||
@click.argument('distro', default='arch')
|
@click.argument('distro', required=False)
|
||||||
def create_container(container_name, distro):
|
def create_container(container_name, distro):
|
||||||
'''
|
'''
|
||||||
Create a container
|
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:
|
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')
|
error(f'container {colors.bold}{container_name}{colors.reset} already exists')
|
||||||
exit(1)
|
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")
|
@cli.command("delete-container")
|
||||||
@click.argument('container')
|
@click.argument('container')
|
||||||
|
@ -208,6 +204,7 @@ def exec_c(container, cmds):
|
||||||
exit(1)
|
exit(1)
|
||||||
creation_env = os.environ.copy()
|
creation_env = os.environ.copy()
|
||||||
creation_env['BLEND_NO_CHECK'] = 'true'
|
creation_env['BLEND_NO_CHECK'] = 'true'
|
||||||
|
cmds = [ cmd.replace('\\-', '-') for cmd in cmds]
|
||||||
subprocess.run(['blend', 'enter', '-cn', container, '--', *cmds], env=creation_env)
|
subprocess.run(['blend', 'enter', '-cn', container, '--', *cmds], env=creation_env)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue