diff options
| author | KunoiSayami <[email protected]> | 2022-12-12 21:49:24 +0800 |
|---|---|---|
| committer | KunoiSayami <[email protected]> | 2022-12-12 21:49:24 +0800 |
| commit | 4823b6bb729952158224ec426fcd01f5eaf4ba8b (patch) | |
| tree | 1c4fdb65f5e93caf71ebcda9c5b4a5da3ca25157 /utils | |
| parent | c12ec0c83a58c0327d5d7ddb298d89ae0fc91792 (diff) | |
feat: Add diff function in pkgman
Signed-off-by: KunoiSayami <[email protected]>
Diffstat (limited to 'utils')
| -rwxr-xr-x | utils/pkgman.py | 25 |
1 files changed, 22 insertions, 3 deletions
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_)) - |
