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
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
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
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
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
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
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
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)
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)