Source code for rez.cli.view

# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the Rez Project


"""
View the contents of a package.
"""
from __future__ import print_function


[docs]def setup_parser(parser, completions=False): formats = ("py", "yaml") parser.add_argument( "-f", "--format", default="yaml", choices=formats, help="format to print the package in") parser.add_argument( "-a", "--all", action="store_true", help="show all package data, including release-related fields") parser.add_argument( "-b", "--brief", action="store_true", help="do not print extraneous info, such as package uri") parser.add_argument( "-c", "--current", action="store_true", help="show the package in the current context, if any") PKG_action = parser.add_argument( "PKG", type=str, help="the package to view") if completions: from rez.cli._complete_util import PackageCompleter PKG_action.completer = PackageCompleter
[docs]def command(opts, parser, extra_arg_groups=None): from rez.utils.formatting import PackageRequest from rez.serialise import FileFormat from rez.packages import iter_packages from rez.status import status import sys req = PackageRequest(opts.PKG) if opts.current: context = status.context if context is None: print("not in a resolved environment context.", file=sys.stderr) sys.exit(1) variant = context.get_resolved_package(req.name) if variant is None: print("Package %r is not in the current context" % req.name, file=sys.stderr) sys.exit(1) package = variant.parent else: it = iter_packages(req.name, req.range) packages = sorted(it, key=lambda x: x.version) if not packages: print("no matches found") sys.exit(1) package = packages[-1] if not opts.brief: print("URI:") print(package.uri) print() print("CONTENTS:") if opts.format == "py": format_ = FileFormat.py else: format_ = FileFormat.yaml package.print_info(format_=format_, include_release=opts.all)