- das-shell 0.1.0: the Das two-line bash prompt by default (replaces the PS1 of Void's skel .bashrc once), dprompt (Textual prompt builder with presets and live preview) and dbanner (SSH login banner editor: canvas tools, fields with values, widgets, das-banner service for cached ones, Das OS logo and tryzub pictures). Python tests in make test. - das-server 0.3.0 depends on das-shell; the server installer mentions dprompt and dbanner; the desktop image includes it. - run-qemu.sh forwards the guest's SSH to localhost:2222. - Hardware fixes: Ventoy menu icon, boot menu titles "Das OS <version>". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
"""Shared bits of the dprompt and dbanner command lines."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
from .i18n import t
|
||||
|
||||
|
||||
def die(prog, uk, en, code=1):
|
||||
print(f"{prog}: {t(uk, en)}", file=sys.stderr)
|
||||
sys.exit(code)
|
||||
|
||||
|
||||
def need_root(argv):
|
||||
"""Runs the command again through sudo with the same arguments."""
|
||||
if os.geteuid() == 0:
|
||||
return
|
||||
script = os.path.abspath(sys.argv[0])
|
||||
try:
|
||||
os.execvp("sudo", ["sudo", sys.executable, script] + argv)
|
||||
except OSError as e:
|
||||
print(f"sudo: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def resolve(spec):
|
||||
"""A file argument as an absolute path (sudo starts elsewhere); names stay names."""
|
||||
if os.sep in spec or spec.endswith(".json"):
|
||||
return os.path.abspath(spec)
|
||||
return spec
|
||||
|
||||
|
||||
def run_tui(prog, loader):
|
||||
try:
|
||||
app = loader()
|
||||
except ImportError as e:
|
||||
die(prog, f"немає бібліотеки Textual ({e}); встановіть python3-textual",
|
||||
f"the Textual library is missing ({e}); install python3-textual")
|
||||
app.run()
|
||||
return 0
|
||||
|
||||
|
||||
def write_file(path, text, mode=0o644):
|
||||
os.makedirs(os.path.dirname(path), exist_ok=True)
|
||||
tmp = path + ".tmp"
|
||||
with open(tmp, "w", encoding="utf-8") as f:
|
||||
f.write(text)
|
||||
os.chmod(tmp, mode)
|
||||
os.replace(tmp, path)
|
||||
Reference in New Issue
Block a user