#!/usr/bin/python3 import subprocess from getpass import getpass from sys import argv def run(command, **kwargs): return subprocess.run(command, shell=True, **kwargs) def cap_live_lines(command, **kwargs): lines = [] with subprocess.Popen( command, shell=True, stdout=subprocess.PIPE, text=True, **kwargs ) as proc: for line in proc.stdout: print(line, end="") lines.append(line.strip()) return lines def press_to_exit(): getpass("\n<<-<>===EXIT===<>->>") def update_rpm_ostree(): lines = cap_live_lines("rpm-ostree upgrade") if "no upgrade" not in lines[-1].lower(): press_to_exit() def update_flatpak(): lines = cap_live_lines("flatpak update -y") done_updates = "nothing to do" not in lines[-1].lower() run("flatpak remove --delete-data --unused") if done_updates: press_to_exit() def update_cargo(): lines = cap_live_lines("cargo install-update -a") if "no packages need updating" not in lines[-2].lower(): press_to_exit() def main(input): if input == "rpm-ostree": update_rpm_ostree() elif input == "flatpak": update_flatpak() elif input == "cargo": update_cargo() else: print(f"Input {input} not valid!") if __name__ == "__main__": main(argv[1])