From 4823b6bb729952158224ec426fcd01f5eaf4ba8b Mon Sep 17 00:00:00 2001 From: KunoiSayami Date: Mon, 12 Dec 2022 21:49:24 +0800 Subject: feat: Add diff function in pkgman Signed-off-by: KunoiSayami --- utils/pkgman.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'utils/pkgman.py') diff --git a/utils/pkgman.py b/utils/pkgman.py index b59ad73..0e7388f 100755 --- a/utils/pkgman.py +++ b/utils/pkgman.py @@ -14,15 +14,31 @@ async def fetch_and_get(_remote_addr: str): raise NotImplementedError("TODO!") +async def show_diff(database: str, path: str) -> None: + pkg_dir = pathlib.Path(os.getcwd()).joinpath(path).resolve() + database_result = pkgbuild.fetch_database(database) + pending = [] + for package in await pkgbuild.fetch_packages_from_directory(pkg_dir): + if (package := package.result()).name in database_result: + if database_result[package.name] < package.version: + pending.append(package) + else: + pending.append(package) + for package in pending: + print(package.name, package.version) + + async def main(args: argparse.Namespace): if args.sub == "show": print(pkgbuild.fetch_database(args.database)) elif args.sub == "show_local": pkg_dir = pathlib.Path(os.getcwd()).joinpath(args.path).resolve() - for packages in await pkgbuild.fetch_packages_from_directory(pkg_dir): - print(packages.result()) + for package in await pkgbuild.fetch_packages_from_directory(pkg_dir): + print(package.result()) elif args.sub == "show_internet": await fetch_and_get(args.database) + elif args.sub == 'diff': + await show_diff(args.database, args.path) if __name__ == '__main__': @@ -37,6 +53,9 @@ if __name__ == '__main__': decmp_online_parser = sub.add_parser("show_internet", description="Show remote databases") decmp_online_parser.add_argument("database") + show_diff_parser = sub.add_parser("diff") + show_diff_parser.add_argument("database") + show_diff_parser.add_argument("path") + args_ = parser.parse_args() asyncio.run(main(args_)) - -- cgit v1.3.1