From 25ab47af769dc1a1649dbc786e2772d4f624895a Mon Sep 17 00:00:00 2001 From: Jose Enriquez Date: Thu, 26 Sep 2024 17:27:53 -0400 Subject: [PATCH] Add support for synchronous and asynchronous package caching modes - Introduced `--pkg-cache-mode` argument to specify caching mode (`sync` or `async`). - Updated `add_variant` function to handle the new caching modes. --- src/rez/cli/pkg-cache.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/rez/cli/pkg-cache.py b/src/rez/cli/pkg-cache.py index 367b7a0af..b91e83f09 100644 --- a/src/rez/cli/pkg-cache.py +++ b/src/rez/cli/pkg-cache.py @@ -41,6 +41,14 @@ def setup_parser(parser, completions=False): group.add_argument( "--daemon", action="store_true", help=SUPPRESS ) + parser.add_argument( + "--pkg-cache-mode", + choices=["sync", "async"], + default=None, + help="If provided, override the rezconfig's package_cache_async key. " + "If 'sync', the process will block until packages are cached. " + "If 'async', the process will not block while packages are cached." + ) parser.add_argument( "-c", "--columns", nargs='+', choices=column_choices, default=["status", "package", "variant_uri", "cache_path"], @@ -70,7 +78,15 @@ def add_variant(pkgcache, uri, opts): print("No such variant: %s" % uri, file=sys.stderr) sys.exit(1) - destpath, status = pkgcache.add_variant(variant, force=opts.force) + if opts.pkg_cache_mode is not None: + cache_mode = True if opts.pkg_cache_mode == "sync" else False + destpath, status = pkgcache.add_variant( + variant, force=opts.force, + wait_for_copying=cache_mode + ) + # If no mode is specified, use the default behavior. + else: + destpath, status = pkgcache.add_variant(variant, force=opts.force) if status == PackageCache.VARIANT_FOUND: print_info("Already exists: %s", destpath)