Beispiel #1
0
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")
Beispiel #2
0
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:
Beispiel #3
0
def test_parse_package_info():
    info_str = repr(packaging.get_initial_package_info("pkgname"))
    assert packaging.parse_package_info(info_str)["name"] == "pkgname"
Beispiel #4
0
def test_parse_package_info_pre_160():
    assert packaging.parse_package_info(repr(
        {"name": "aaa"}))["version.usable_until"] is None