def show_package(name, show_info=False): # type: (PackageName, bool) -> None try: if name.endswith(_pac_ext): tar = tarfile.open(name, "r:gz") info = tar.extractfile("info") if info is None: raise PackageException("Failed to extract \"info\"") package = parse_package_info(info.read()) else: this_package = read_package_info(name) if not this_package: raise PackageException("No such package %s." % name) package = this_package if show_info: sys.stdout.write("Package file: %s%s\n" % (package_dir(), name)) except PackageException: raise except Exception as e: raise PackageException("Cannot open package %s: %s" % (name, e)) if show_info: sys.stdout.write("Name: %s\n" % package["name"]) sys.stdout.write("Version: %s\n" % package["version"]) sys.stdout.write("Packaged on Checkmk Version: %s\n" % package["version.packaged"]) sys.stdout.write("Required Checkmk Version: %s\n" % package["version.min_required"]) valid_until_text = package[ "version.usable_until"] or "No version limitation" sys.stdout.write("Valid until Checkmk version: %s\n" % valid_until_text) sys.stdout.write("Title: %s\n" % package["title"]) sys.stdout.write("Author: %s\n" % package["author"]) sys.stdout.write("Download-URL: %s\n" % package["download_url"]) sys.stdout.write("Files: %s\n" % \ " ".join([ "%s(%d)" % (part, len(fs)) for part, fs in package["files"].items() ])) sys.stdout.write("Description:\n %s\n" % package["description"]) else: if logger.isEnabledFor(VERBOSE): sys.stdout.write("Files in package %s:\n" % name) for part in get_package_parts(): files = package["files"].get(part.ident, []) if len(files) > 0: sys.stdout.write(" %s%s%s:\n" % (tty.bold, part.title, tty.normal)) for f in files: sys.stdout.write(" %s\n" % f) else: for part in get_package_parts(): for fn in package["files"].get(part.ident, []): sys.stdout.write(part.path + "/" + fn + "\n")
def show_package(name: PackageName, show_info: bool = False) -> None: try: if name.endswith(PACKAGE_EXTENSION): with tarfile.open(name, "r:gz") as tar: info = tar.extractfile("info") if info is None: raise PackageException('Failed to extract "info"') package = parse_package_info(info.read().decode()) else: this_package = read_package_info(name) if not this_package: raise PackageException("No such package %s." % name) package = this_package if show_info: sys.stdout.write("Package file: %s\n" % (package_dir() / name)) except PackageException: raise except Exception as e: raise PackageException("Cannot open package %s: %s" % (name, e)) if show_info: sys.stdout.write("Name: %s\n" % package["name"]) sys.stdout.write("Version: %s\n" % package["version"]) sys.stdout.write("Packaged on Checkmk Version: %s\n" % package["version.packaged"]) sys.stdout.write("Required Checkmk Version: %s\n" % package["version.min_required"]) valid_until_text = package[ "version.usable_until"] or "No version limitation" sys.stdout.write("Valid until Checkmk version: %s\n" % valid_until_text) sys.stdout.write("Title: %s\n" % package["title"]) sys.stdout.write("Author: %s\n" % package["author"]) sys.stdout.write("Download-URL: %s\n" % package["download_url"]) files = " ".join([ "%s(%d)" % (part, len(fs)) for part, fs in package["files"].items() ]) sys.stdout.write("Files: %s\n" % files) sys.stdout.write("Description:\n %s\n" % package["description"]) else: if logger.isEnabledFor(VERBOSE): sys.stdout.write("Files in package %s:\n" % name) for part in get_package_parts(): if part_files := package["files"].get(part.ident, []): sys.stdout.write(" %s%s%s:\n" % (tty.bold, part.title, tty.normal)) for f in part_files: sys.stdout.write(" %s\n" % f) else:
def test_parse_package_info(): info_str = repr(packaging.get_initial_package_info("pkgname")) assert packaging.parse_package_info(info_str)["name"] == "pkgname"
def test_parse_package_info_pre_160(): assert packaging.parse_package_info(repr( {"name": "aaa"}))["version.usable_until"] is None