]>
code.delx.au - monosys/blob - bin/pacorphan
8 PACORPHAN_PATH
= os
.path
.expanduser("~/.pacorphan")
11 unneeded_pkg_list
= []
12 explicit_pkg_list
= []
14 def strip_comment(line
):
20 for dirpath
, dirnames
, filenames
in os
.walk(PACORPHAN_PATH
):
21 for filename
in filenames
:
22 if filename
.startswith("."):
24 filename
= os
.path
.join(dirpath
, filename
)
25 for pkg
in codecs
.open(filename
, "r", "utf-8"):
26 pkg
= strip_comment(pkg
)
27 if pkg
in keep_pkg_list
:
28 print("# Duplicate entry: " + pkg
)
30 keep_pkg_list
.append(pkg
.strip())
32 for pkg
in subprocess
.check_output(["pacman", "-Qtq"]).decode("utf-8").split():
33 unneeded_pkg_list
.append(pkg
.strip())
35 for pkg
in subprocess
.check_output(["pacman", "-Qeq"]).decode("utf-8").split():
36 explicit_pkg_list
.append(pkg
.strip())
39 for pkg
in keep_pkg_list
:
40 if pkg
in unneeded_pkg_list
:
41 unneeded_pkg_list
.remove(pkg
)
43 if pkg
in explicit_pkg_list
:
44 explicit_pkg_list
.remove(pkg
)
46 print("# Not explicitly installed: " + pkg
)
50 print("# Found packages to remove")
51 print("sudo pacman -R " + " ".join(unneeded_pkg_list
))
55 print("# Found explicitly installed packages to keep")
56 print("echo " + " ".join(explicit_pkg_list
) + " | tr ' ' '\\n' >> ~/.pacorphan/keep")