diff --git a/src/rez/cli/pkg-cache.py b/src/rez/cli/pkg-cache.py index 367b7a0af..c35f27ecc 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"], @@ -59,6 +67,7 @@ def setup_parser(parser, completions=False): def add_variant(pkgcache, uri, opts): + from rez.config import config from rez.packages import get_variant_from_uri from rez.utils.logging_ import print_info, print_warning from rez.package_cache import PackageCache @@ -70,7 +79,17 @@ 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 == "async": + sync = False + elif opts.pkg_cache_mode == "sync": + sync = True + else: + sync = not config.package_cache_async + + destpath, status = pkgcache.add_variant( + variant, force=opts.force, + wait_for_copying=sync + ) if status == PackageCache.VARIANT_FOUND: print_info("Already exists: %s", destpath)