-#!/usr/bin/python
+#!/usr/bin/python3
import codecs
import subprocess
PACORPHAN_PATH = os.path.expanduser("~/.pacorphan")
-keep_pkg_list = []
-mark_explicit_list = []
-need_install_list = []
-unneeded_pkg_list = []
-installed_pkg_list = []
-explicit_pkg_list = []
+def run(cmd):
+ for line in subprocess.check_output(cmd).decode("utf-8").split("\n"):
+ line = line.strip()
+ if line:
+ yield line
def strip_comment(line):
pos = line.find("#")
line = line[:pos]
return line.strip()
-for dirpath, dirnames, filenames in os.walk(PACORPHAN_PATH):
- for filename in filenames:
- if filename.startswith("."):
- continue
- filename = os.path.join(dirpath, filename)
- for pkg in codecs.open(filename, "r", "utf-8"):
- pkg = strip_comment(pkg)
- if pkg in keep_pkg_list:
- print("# Duplicate entry: " + pkg)
- if pkg:
- keep_pkg_list.append(pkg.strip())
-
-for pkg in subprocess.check_output(["pacman", "-Qq"]).decode("utf-8").split():
- installed_pkg_list.append(pkg.strip())
-
-for pkg in subprocess.check_output(["pacman", "-Qtq"]).decode("utf-8").split():
- unneeded_pkg_list.append(pkg.strip())
-
-for pkg in subprocess.check_output(["pacman", "-Qeq"]).decode("utf-8").split():
- explicit_pkg_list.append(pkg.strip())
+
+keep_pkg_list = []
+mark_explicit_list = []
+need_install_list = []
+unneeded_pkg_list = []
+installed_pkg_list = []
+explicit_pkg_list = []
+
+for filename in os.listdir(PACORPHAN_PATH):
+ if filename.startswith("."):
+ continue
+ filename = os.path.join(PACORPHAN_PATH, filename)
+ for pkg in codecs.open(filename, "r", "utf-8"):
+ pkg = strip_comment(pkg)
+ if pkg in keep_pkg_list:
+ print("# Duplicate entry: " + pkg)
+ if pkg:
+ keep_pkg_list.append(pkg.strip())
+
+for pkg in run(["pacman", "-Qq"]):
+ installed_pkg_list.append(pkg)
+
+for pkg in run(["pacman", "-Qtq"]):
+ unneeded_pkg_list.append(pkg)
+
+for pkg in run(["pacman", "-Qeq"]):
+ explicit_pkg_list.append(pkg)
for pkg in keep_pkg_list: