mirror of
https://codeberg.org/Mo8it/dotfiles.git
synced 2024-10-17 20:52:40 +00:00
67 lines
1.8 KiB
Text
67 lines
1.8 KiB
Text
#!/usr/bin/env xonsh
|
|
|
|
import os
|
|
import json
|
|
from pathlib import Path
|
|
|
|
def rpm_ostree_packages(output_dir):
|
|
out = $(rpm-ostree status --json)
|
|
json_out = json.loads(out)
|
|
|
|
deployments = json_out["deployments"]
|
|
booted_deployment = deployments[0]
|
|
|
|
if not booted_deployment["booted"]:
|
|
for depl in deployments:
|
|
if depl["booted"]:
|
|
booted_deployment = depl
|
|
break
|
|
|
|
removals = booted_deployment["requested-base-removals"]
|
|
additions = booted_deployment["requested-packages"]
|
|
|
|
file = output_dir / "rpm-ostree.json"
|
|
with file.open("w") as f:
|
|
dict = {"Removed": removals, "Added": additions}
|
|
json.dump(dict, f, indent=4)
|
|
|
|
def npm_packages(output_dir):
|
|
out = $(npm list --json -g)
|
|
json_out = json.loads(out)
|
|
deps = json_out["dependencies"].keys()
|
|
|
|
file = output_dir / "npm.txt"
|
|
with file.open("w") as f:
|
|
for dep in deps:
|
|
f.write(dep + "\n")
|
|
|
|
def pipx_packages(output_dir):
|
|
out = $(pipx list --json)
|
|
json_out = json.loads(out)
|
|
|
|
venvs = json_out["venvs"]
|
|
|
|
packages = []
|
|
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()))
|
|
|
|
file = output_dir / "pipx.json"
|
|
with file.open("w") as f:
|
|
dict = {p: i for p, i in zip(packages, injections)}
|
|
json.dump(dict, f, indent = 4)
|
|
|
|
output_dir = Path(f"{$HOME}/bk/installed_packages_info")
|
|
output_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
rpm_ostree_packages(output_dir)
|
|
|
|
flatpak list --app --columns=name,application,origin >@(output_dir)/flatpak.csv
|
|
|
|
cargo install --list | rg '(.+) .+:.*' -r '$1' >@(output_dir)/cargo.txt
|
|
|
|
pipx_packages(output_dir)
|
|
|
|
npm_packages(output_dir)
|