diff --git a/.scripts/fetch_installed_packages.py b/.scripts/fetch_installed_packages.py index d7a9e7d..22eef4c 100644 --- a/.scripts/fetch_installed_packages.py +++ b/.scripts/fetch_installed_packages.py @@ -31,10 +31,26 @@ def rpm_ostree_packages(output_dir): removals = booted_deployment["requested-base-removals"] additions = booted_deployment["requested-packages"] - file = output_dir / "rpm-ostree.json" + file = output_dir / "rpm-ostree.sh" with file.open("w") as f: - dict = {"Removed": removals, "Added": additions} - json.dump(dict, f, indent=4) + f.write("rpm-ostree override remove") + for removal in removals: + f.write(" " + removal) + + f.write("\nrpm-ostree install") + for addition in additions: + f.write(" " + addition) + + +def flatpak_packages(output_dir): + out = cap_run("flatpak list --app --columns=application") + apps = out.split() + + file = output_dir / "flatpak.sh" + with file.open("w") as f: + f.write("flatpak install") + for app in apps: + f.write(" " + app) def cargo_packages(output_dir): @@ -43,21 +59,26 @@ def cargo_packages(output_dir): pattern = r"(.+) .+:.*" crates = re.findall(pattern, out) - file = output_dir / "cargo.txt" + file = output_dir / "cargo.sh" with file.open("w") as f: + f.write("cargo install") for crate in crates: - f.write(crate + "\n") + f.write(" " + crate) def npm_packages(output_dir): out = cap_run("npm list --json --location=global") json_out = json.loads(out) deps = json_out["dependencies"].keys() + deps = [dep for dep in deps if dep != "npm"] - file = output_dir / "npm.txt" + file = output_dir / "npm.sh" with file.open("w") as f: + f.write("npm config set prefix '~/.npm-global'\n") + f.write("npm install --location=global npm\n") + f.write("~/.npm-global/bin/npm install --location=global") for dep in deps: - f.write(dep + "\n") + f.write(" " + dep) def pipx_packages(output_dir): @@ -67,16 +88,26 @@ def pipx_packages(output_dir): venvs = json_out["venvs"] packages = [] - injections = [] + injections = {} for ind, venv_key in enumerate(venvs.keys()): metadata = venvs[venv_key]["metadata"] - packages.append(metadata["main_package"]["package_or_url"]) - injections.append(list(metadata["injected_packages"].keys())) + package = metadata["main_package"]["package_or_url"] + packages.append(package) - file = output_dir / "pipx.json" + package_injections = metadata["injected_packages"].keys() + if len(package_injections) > 0: + injections[package] = package_injections + + file = output_dir / "pipx.sh" with file.open("w") as f: - dict = {p: i for p, i in zip(packages, injections)} - json.dump(dict, f, indent=4) + for package in packages: + f.write(f"pipx install {package}\n") + + f.write("\n") + + for package in injections.keys(): + for injection in injections[package]: + f.write(f"pipx inject {package} {injection}\n") def main(): @@ -85,9 +116,7 @@ def main(): rpm_ostree_packages(output_dir) - run( - f"flatpak list --app --columns=name,application,origin > {output_dir}/flatpak.csv" - ) + flatpak_packages(output_dir) pipx_packages(output_dir)