aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorKunoiSayami <[email protected]>2022-12-12 21:49:24 +0800
committerKunoiSayami <[email protected]>2022-12-12 21:49:24 +0800
commit4823b6bb729952158224ec426fcd01f5eaf4ba8b (patch)
tree1c4fdb65f5e93caf71ebcda9c5b4a5da3ca25157 /utils
parentc12ec0c83a58c0327d5d7ddb298d89ae0fc91792 (diff)
feat: Add diff function in pkgman
Signed-off-by: KunoiSayami <[email protected]>
Diffstat (limited to 'utils')
-rwxr-xr-xutils/pkgman.py25
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_))
-