Ejemplo n.º 1
0
def get_intellij_idea_version_tarball() -> Optional[VersionInfo]:
    try:
        idea_bin_path = run_command(["sh", "-c",
                                     "which idea.sh"]).stdout.rstrip("\n")
    except CommandErrorException:
        logging.debug("Could not locate idea.sh", exc_info=True)
        return None

    product_info_path = os.path.join(os.path.dirname(idea_bin_path), "..",
                                     "product-info.json")
    try:
        with open(product_info_path, "rb") as product_info_file:
            product_info = json.load(product_info_file)
    except IOError:
        logging.debug("Failed to read IntelliJ IDEA product-info.json",
                      exc_info=True)
        return None
    except JSONDecodeError:
        logging.debug("Failed to parse IntelliJ IDEA product-info.json",
                      exc_info=True)
        return None

    version_str = product_info.get("version", None)
    version = try_parse_semver(version_str)
    logging.debug(f"IntelliJ IDEA version (via product-info.json): {version}")
    return version
Ejemplo n.º 2
0
def parse_flutter_version_output(version_output: Optional[str]) -> Optional[VersionInfo]:
    if version_output:
        match = flutter_version_pattern.search(version_output)
        if match:
            version_string = match.group(1)
            logging.debug(f"Flutter version string: {version_string}")
            return try_parse_semver(version_string)
    return None
Ejemplo n.º 3
0
def get_helm_version() -> Optional[VersionInfo]:
    raw_version = get_stdout("helm version --short")
    if raw_version:
        match = helm_version_pattern.search(raw_version)
        if match:
            version = try_parse_semver(match.group(1))
            logging.debug(f"Helm Version: {version}")
            return version
    return None
Ejemplo n.º 4
0
def get_kubectl_version() -> Optional[VersionInfo]:
    raw_version = get_stdout("kubectl version --client=true --short")
    if raw_version:
        match = version_pattern.search(raw_version)
        if match:
            version = try_parse_semver(match.group(1))
            logging.debug(f"Kubectl version: {version}")
            return version
    return None
Ejemplo n.º 5
0
def get_terraform_version() -> Optional[VersionInfo]:
    raw_version = get_stdout("terraform version")
    if raw_version:
        match = version_pattern.search(raw_version)
        if match:
            version = try_parse_semver(match.group(1))
            logging.debug(f"Terraform version: {version}")
            return version
    return None
Ejemplo n.º 6
0
def get_intellij_idea_version_mac() -> Optional[VersionInfo]:
    intellij_url = locate_intellij_idea_mac()
    if intellij_url is None:
        return None
    else:
        from Foundation import NSBundle

        version_str = NSBundle.bundleWithURL_(
            intellij_url).objectForInfoDictionaryKey_(
                "CFBundleShortVersionString")
        version = try_parse_semver(version_str)
        logging.debug(f"IntelliJ IDEA version (via NSBundle): {version}")
        return version
Ejemplo n.º 7
0
def get_intellij_idea_version_snap() -> Optional[VersionInfo]:
    if not Path("/run/snapd.socket").is_socket():
        logging.debug("/run/snapd.socket does not exist, not querying snapd")
        return None

    from requests_unixsocket import Session

    session = Session()
    snaps_req = session.get(
        f"http+unix://%2Frun%2Fsnapd.socket/v2/snaps?snaps={SNAP_NAME_INTELLIJ_IDEA},{SNAP_NAME_INTELLIJ_IDEA_CE}"
    )
    snaps_info = snaps_req.json()
    version_str = dpath.util.get(snaps_info, "/result/0/version", default=None)
    version = try_parse_semver(version_str)
    logging.debug(f"IntelliJ IDEA version (via snapd): {version}")
    return version
Ejemplo n.º 8
0
def nvm_resolve_version(version: str) -> Optional[VersionInfo]:
    resolved_version = get_nvm_stdout(["version", version])
    resolved_version = None if resolved_version is None else resolved_version.lstrip(
        "v")
    return try_parse_semver(resolved_version)
Ejemplo n.º 9
0
def get_nodejs_version() -> Optional[VersionInfo]:
    version_output = get_stdout("node --version")
    version_output = None if version_output is None else version_output.lstrip(
        "v")
    return try_parse_semver(version_output)