Loading pkgs/applications/editors/jetbrains/updater/jetbrains_nix_updater/fetcher.py +14 −4 Original line number Diff line number Diff line import sys import dataclasses from urllib import request from urllib.error import HTTPError Loading Loading @@ -43,13 +45,17 @@ class VersionFetcher: self, ide: Ide, ignore_no_url_error=False ) -> VersionInfo | None: if ide.update_info is None: print(f"[!] no update info for {ide.name} in `updateInfo.json` - skipping!") print( f"[!] no update info for {ide.name} in `updateInfo.json` - skipping!", file=sys.stderr, ) return None channel_name = ide.update_info["channel"] channel = self.channels.get(channel_name) if channel is None: print( f"[!] failed to find IDE channel {channel_name} - skipping! check {ide.name}'s `channel`!" f"[!] failed to find IDE channel {channel_name} - skipping! check {ide.name}'s `channel`!", file=sys.stderr, ) return None try: Loading @@ -73,7 +79,8 @@ class VersionFetcher: ) if not download_url and not ignore_no_url_error: print( f"[!] no valid URL found for '{ide.name}' for '{system}'! make sure `updater/updateInfo.json` contains an entry and is correct." f"[!] no valid URL found for '{ide.name}' for '{system}'! make sure `updater/updateInfo.json` contains an entry and is correct.", file=sys.stderr, ) download_urls[system] = None else: Loading @@ -84,7 +91,10 @@ class VersionFetcher: urls=download_urls, ) except Exception as e: print(f"[!] exception while trying to fetch version: {e} - skipping!") print( f"[!] exception while trying to fetch version: {e} - skipping!", file=sys.stderr, ) return None @classmethod Loading pkgs/applications/editors/jetbrains/updater/jetbrains_nix_updater/update_bin.py +6 −2 Original line number Diff line number Diff line import sys from jetbrains_nix_updater.config import UpdaterConfig from jetbrains_nix_updater.fetcher import VersionInfo from jetbrains_nix_updater.ides import Ide from jetbrains_nix_updater.util import replace_blocks, convert_hash_to_sri def run_bin_update(ide: Ide, info: VersionInfo, config: UpdaterConfig): def run_bin_update(ide: Ide, info: VersionInfo, config: UpdaterConfig) -> bool: urls_nix = "" for system, url in info.urls.items(): urls_nix += f""" Loading Loading @@ -33,5 +35,7 @@ def run_bin_update(ide: Ide, info: VersionInfo, config: UpdaterConfig): ), ], ) return True except Exception as e: print(f"[!] Writing update info to file failed: {e}") print(f"[!] Writing update info to file failed: {e}", file=sys.stderr) return False pkgs/applications/editors/jetbrains/updater/jetbrains_nix_updater/update_src.py +21 −5 Original line number Diff line number Diff line import sys import json import re from pathlib import Path from xmltodict import parse from subprocess import CalledProcessError from jetbrains_nix_updater.config import UpdaterConfig from jetbrains_nix_updater.fetcher import VersionInfo Loading Loading @@ -149,10 +152,22 @@ def maven_out_path(jb_root: Path, name: str) -> Path: return jb_root / "source" / f"{name}_maven_artefacts.json" def run_src_update(ide: Ide, info: VersionInfo, config: UpdaterConfig): def run_src_update(ide: Ide, info: VersionInfo, config: UpdaterConfig) -> bool: variant = ide.name.removesuffix("-oss") intellij_hash, intellij_outpath = prefetch_intellij_community(variant, info.version) try: intellij_hash, intellij_outpath = prefetch_intellij_community( variant, info.version ) android_hash = prefetch_android(variant, info.version) except CalledProcessError: print( f"[!] Unable to fetch sources for version {info.version}. " f"This probably means, that JetBrains has not published a source release yet for this version. " f"Check: https://github.com/JetBrains/intellij-community/releases and https://github.com/JetBrains/android/tags", file=sys.stderr, ) print(f"[!] Skipping update of {ide.name}.", file=sys.stderr) return False jps_hash = generate_jps_hash(config, intellij_outpath) restarter_hash = generate_restarter_hash(config, intellij_outpath) repositories = jar_repositories(intellij_outpath) Loading Loading @@ -192,8 +207,8 @@ def run_src_update(ide: Ide, info: VersionInfo, config: UpdaterConfig): ], ) except Exception as e: print(f"[!] Writing update info to file failed: {e}") return print(f"[!] Writing update info to file failed: {e}", file=sys.stderr) return False if not config.no_maven_deps: print("[*] Collecting maven hashes") Loading @@ -201,3 +216,4 @@ def run_src_update(ide: Ide, info: VersionInfo, config: UpdaterConfig): with open(maven_out_path(config.jetbrains_root, variant), "w") as f: json.dump(maven_hashes, f, indent=4) f.write("\n") return True pkgs/applications/editors/jetbrains/updater/main.py +11 −5 Original line number Diff line number Diff line #!/usr/bin/env nix-shell #!nix-shell -i python3 -p python3 python3.pkgs.packaging python3.pkgs.xmltodict python3.pkgs.requests nurl import sys import argparse import json Loading Loading @@ -54,12 +56,13 @@ def main(): ) print(f"[.] found IDEs to update: {', '.join(ide.name for ide in ides_to_run_for)}") success = True for ide in ides_to_run_for: if ide.is_source and config.no_src: print(f"[!] skipping {ide.name}, due to --no-src") print(f"[!] skipping {ide.name}, due to --no-src", file=sys.stderr) continue if not ide.is_source and config.no_bin: print(f"[!] skipping {ide.name}, due to --no-bin") print(f"[!] skipping {ide.name}, due to --no-bin", file=sys.stderr) continue print(f"[@] updating IDE {ide.name}") Loading @@ -67,15 +70,18 @@ def main(): info = version_fetcher.latest_version_info( ide, ignore_no_url_error=ide.is_source ) if info is not None: if info is None: success = False else: if config.old_version == info.version: print("[o] Version is the same, no update required") return if ide.is_source: run_src_update(ide, info, config) success &= run_src_update(ide, info, config) else: run_bin_update(ide, info, config) success &= run_bin_update(ide, info, config) exit(0 if success else 1) if __name__ == "__main__": Loading Loading
pkgs/applications/editors/jetbrains/updater/jetbrains_nix_updater/fetcher.py +14 −4 Original line number Diff line number Diff line import sys import dataclasses from urllib import request from urllib.error import HTTPError Loading Loading @@ -43,13 +45,17 @@ class VersionFetcher: self, ide: Ide, ignore_no_url_error=False ) -> VersionInfo | None: if ide.update_info is None: print(f"[!] no update info for {ide.name} in `updateInfo.json` - skipping!") print( f"[!] no update info for {ide.name} in `updateInfo.json` - skipping!", file=sys.stderr, ) return None channel_name = ide.update_info["channel"] channel = self.channels.get(channel_name) if channel is None: print( f"[!] failed to find IDE channel {channel_name} - skipping! check {ide.name}'s `channel`!" f"[!] failed to find IDE channel {channel_name} - skipping! check {ide.name}'s `channel`!", file=sys.stderr, ) return None try: Loading @@ -73,7 +79,8 @@ class VersionFetcher: ) if not download_url and not ignore_no_url_error: print( f"[!] no valid URL found for '{ide.name}' for '{system}'! make sure `updater/updateInfo.json` contains an entry and is correct." f"[!] no valid URL found for '{ide.name}' for '{system}'! make sure `updater/updateInfo.json` contains an entry and is correct.", file=sys.stderr, ) download_urls[system] = None else: Loading @@ -84,7 +91,10 @@ class VersionFetcher: urls=download_urls, ) except Exception as e: print(f"[!] exception while trying to fetch version: {e} - skipping!") print( f"[!] exception while trying to fetch version: {e} - skipping!", file=sys.stderr, ) return None @classmethod Loading
pkgs/applications/editors/jetbrains/updater/jetbrains_nix_updater/update_bin.py +6 −2 Original line number Diff line number Diff line import sys from jetbrains_nix_updater.config import UpdaterConfig from jetbrains_nix_updater.fetcher import VersionInfo from jetbrains_nix_updater.ides import Ide from jetbrains_nix_updater.util import replace_blocks, convert_hash_to_sri def run_bin_update(ide: Ide, info: VersionInfo, config: UpdaterConfig): def run_bin_update(ide: Ide, info: VersionInfo, config: UpdaterConfig) -> bool: urls_nix = "" for system, url in info.urls.items(): urls_nix += f""" Loading Loading @@ -33,5 +35,7 @@ def run_bin_update(ide: Ide, info: VersionInfo, config: UpdaterConfig): ), ], ) return True except Exception as e: print(f"[!] Writing update info to file failed: {e}") print(f"[!] Writing update info to file failed: {e}", file=sys.stderr) return False
pkgs/applications/editors/jetbrains/updater/jetbrains_nix_updater/update_src.py +21 −5 Original line number Diff line number Diff line import sys import json import re from pathlib import Path from xmltodict import parse from subprocess import CalledProcessError from jetbrains_nix_updater.config import UpdaterConfig from jetbrains_nix_updater.fetcher import VersionInfo Loading Loading @@ -149,10 +152,22 @@ def maven_out_path(jb_root: Path, name: str) -> Path: return jb_root / "source" / f"{name}_maven_artefacts.json" def run_src_update(ide: Ide, info: VersionInfo, config: UpdaterConfig): def run_src_update(ide: Ide, info: VersionInfo, config: UpdaterConfig) -> bool: variant = ide.name.removesuffix("-oss") intellij_hash, intellij_outpath = prefetch_intellij_community(variant, info.version) try: intellij_hash, intellij_outpath = prefetch_intellij_community( variant, info.version ) android_hash = prefetch_android(variant, info.version) except CalledProcessError: print( f"[!] Unable to fetch sources for version {info.version}. " f"This probably means, that JetBrains has not published a source release yet for this version. " f"Check: https://github.com/JetBrains/intellij-community/releases and https://github.com/JetBrains/android/tags", file=sys.stderr, ) print(f"[!] Skipping update of {ide.name}.", file=sys.stderr) return False jps_hash = generate_jps_hash(config, intellij_outpath) restarter_hash = generate_restarter_hash(config, intellij_outpath) repositories = jar_repositories(intellij_outpath) Loading Loading @@ -192,8 +207,8 @@ def run_src_update(ide: Ide, info: VersionInfo, config: UpdaterConfig): ], ) except Exception as e: print(f"[!] Writing update info to file failed: {e}") return print(f"[!] Writing update info to file failed: {e}", file=sys.stderr) return False if not config.no_maven_deps: print("[*] Collecting maven hashes") Loading @@ -201,3 +216,4 @@ def run_src_update(ide: Ide, info: VersionInfo, config: UpdaterConfig): with open(maven_out_path(config.jetbrains_root, variant), "w") as f: json.dump(maven_hashes, f, indent=4) f.write("\n") return True
pkgs/applications/editors/jetbrains/updater/main.py +11 −5 Original line number Diff line number Diff line #!/usr/bin/env nix-shell #!nix-shell -i python3 -p python3 python3.pkgs.packaging python3.pkgs.xmltodict python3.pkgs.requests nurl import sys import argparse import json Loading Loading @@ -54,12 +56,13 @@ def main(): ) print(f"[.] found IDEs to update: {', '.join(ide.name for ide in ides_to_run_for)}") success = True for ide in ides_to_run_for: if ide.is_source and config.no_src: print(f"[!] skipping {ide.name}, due to --no-src") print(f"[!] skipping {ide.name}, due to --no-src", file=sys.stderr) continue if not ide.is_source and config.no_bin: print(f"[!] skipping {ide.name}, due to --no-bin") print(f"[!] skipping {ide.name}, due to --no-bin", file=sys.stderr) continue print(f"[@] updating IDE {ide.name}") Loading @@ -67,15 +70,18 @@ def main(): info = version_fetcher.latest_version_info( ide, ignore_no_url_error=ide.is_source ) if info is not None: if info is None: success = False else: if config.old_version == info.version: print("[o] Version is the same, no update required") return if ide.is_source: run_src_update(ide, info, config) success &= run_src_update(ide, info, config) else: run_bin_update(ide, info, config) success &= run_bin_update(ide, info, config) exit(0 if success else 1) if __name__ == "__main__": Loading