diff --git a/bin/get_package_changes b/bin/get_package_changes new file mode 100755 index 0000000..1ec3ac5 --- /dev/null +++ b/bin/get_package_changes @@ -0,0 +1,48 @@ +#!/usr/bin/python2 +import sys + +from entropy.server.interfaces import Server +from entropy.const import etpUi +etpUi['quiet'] = True +import entropy.dep +import portage + +def print_help(): + sys.stderr.write("get_package_changes \n") + +if __name__ == "__main__": + + args = sys.argv[1:] + if not args: + print_help() + raise SystemExit(1) + + cmd = args.pop(0) + if cmd not in ("added", "removed"): + print_help() + raise SystemExit(1) + + srv = Server() + repositories = srv.repositories() + pkg_keys = set() + + for repository_id in repositories: + repo = srv.open_repository(repository_id) + for atom, package_id, branch in repo.listAllPackages(): + pkg_keys.add(entropy.dep.dep_getkey(atom)) + + portdb = portage.db["/"]['porttree'] + portage_pkg_keys = set(portdb.getallnodes()) + + if cmd == "added": + added = sorted(portage_pkg_keys - pkg_keys) + for pkg_key in added: + sys.stdout.write(pkg_key + "\n") + sys.stdout.flush() + elif cmd == "removed": + removed = sorted(pkg_keys - portage_pkg_keys) + for pkg_key in removed: + sys.stdout.write(pkg_key + "\n") + sys.stdout.flush() + srv.shutdown() + raise SystemExit(0)