From 6ef835f39dcfee301a0d6a3bdc3d8300cd5728b4 Mon Sep 17 00:00:00 2001 From: emaryn Date: Thu, 10 Apr 2025 12:29:21 +0800 Subject: [PATCH] vscode-extension-update-script: improve --- .../extensions/charliermarsh.ruff/default.nix | 2 +- .../extensions/visualjj.visualjj/default.nix | 2 +- .../vscode_extension_batch_update.py | 17 +--------- .../vscode_extension_update.py | 32 +++++++++---------- 4 files changed, 18 insertions(+), 35 deletions(-) diff --git a/pkgs/applications/editors/vscode/extensions/charliermarsh.ruff/default.nix b/pkgs/applications/editors/vscode/extensions/charliermarsh.ruff/default.nix index 6de5a22caf04..c92f38180f5f 100644 --- a/pkgs/applications/editors/vscode/extensions/charliermarsh.ruff/default.nix +++ b/pkgs/applications/editors/vscode/extensions/charliermarsh.ruff/default.nix @@ -45,7 +45,7 @@ vscode-utils.buildVscodeMarketplaceExtension { ln -sf ${lib.getExe ruff} "$out/$installPrefix/bundled/libs/bin/ruff" ''; - passthru.updateScript = vscode-extension-update-script { extraArgs = [ "--platforms" ]; }; + passthru.updateScript = vscode-extension-update-script { }; meta = { license = lib.licenses.mit; diff --git a/pkgs/applications/editors/vscode/extensions/visualjj.visualjj/default.nix b/pkgs/applications/editors/vscode/extensions/visualjj.visualjj/default.nix index 6508522d930e..a66e90adf7dd 100644 --- a/pkgs/applications/editors/vscode/extensions/visualjj.visualjj/default.nix +++ b/pkgs/applications/editors/vscode/extensions/visualjj.visualjj/default.nix @@ -35,7 +35,7 @@ vscode-utils.buildVscodeMarketplaceExtension { // sources.${stdenvNoCC.hostPlatform.system} or (throw "Unsupported system ${stdenvNoCC.hostPlatform.system}"); - passthru.updateScript = vscode-extension-update-script { extraArgs = [ "--platforms" ]; }; + passthru.updateScript = vscode-extension-update-script { }; meta = { description = "Jujutsu version control integration, for simpler Git workflow"; diff --git a/pkgs/by-name/vs/vscode-extension-update/vscode_extension_batch_update.py b/pkgs/by-name/vs/vscode-extension-update/vscode_extension_batch_update.py index 069a468c4f82..7d85cde5a9c2 100755 --- a/pkgs/by-name/vs/vscode-extension-update/vscode_extension_batch_update.py +++ b/pkgs/by-name/vs/vscode-extension-update/vscode_extension_batch_update.py @@ -21,6 +21,7 @@ class VSCodeExtensionBatchUpdater: "vscode-extensions.ms-ceintl.vscode-language-pack-it", "vscode-extensions.ms-ceintl.vscode-language-pack-ja", "vscode-extensions.ms-ceintl.vscode-language-pack-ko", + "vscode-extensions.ms-ceintl.vscode-language-pack-pl", "vscode-extensions.ms-ceintl.vscode-language-pack-pt-br", "vscode-extensions.ms-ceintl.vscode-language-pack-qps-ploc", "vscode-extensions.ms-ceintl.vscode-language-pack-ru", @@ -39,13 +40,6 @@ class VSCodeExtensionBatchUpdater: self.parser = argparse.ArgumentParser( description="Batch update VSCode extensions" ) - # By default, update command skips extensions with updateScript or need '--platforms' - self.parser.add_argument( - "--platforms", - action="store_true", - help="add '--platforms' to update command from some extensions", - ) - self.platforms = self.parser.parse_args().platforms def execute_command( self, command, env: dict[str, str] = None, shell: bool = False @@ -75,10 +69,6 @@ class VSCodeExtensionBatchUpdater: except subprocess.CalledProcessError: return False - def _has_platform_source(self, extension: str) -> bool: - source_url = self._get_nix_attribute(f"{extension}.src.url") - return "targetPlatform=" in source_url - def _get_nix_attribute(self, attribute: str) -> str: return self.execute_command(["nix", "eval", "--raw", "-f", ".", attribute]) @@ -93,11 +83,6 @@ class VSCodeExtensionBatchUpdater: if self._has_update_script(extension): return update_command = ["vscode-extension-update", extension, "--commit"] - if self._has_platform_source(extension): - if self.platforms: - update_command.append("--platforms") - else: - return filename = self._get_extension_filename(extension) if filename: update_command.extend(["--override-filename", filename]) diff --git a/pkgs/by-name/vs/vscode-extension-update/vscode_extension_update.py b/pkgs/by-name/vs/vscode-extension-update/vscode_extension_update.py index a8d8cbf17e2c..979e44a3bcee 100755 --- a/pkgs/by-name/vs/vscode-extension-update/vscode_extension_update.py +++ b/pkgs/by-name/vs/vscode-extension-update/vscode_extension_update.py @@ -34,11 +34,6 @@ class VSCodeExtensionUpdater: action="store_true", help="allow check pre-release versions", ) - self.parser.add_argument( - "--platforms", - action="store_true", - help="set system according to meta.platforms for nix-update", - ) self.parser.add_argument( "--commit", action="store_true", help="commit the updated package" ) @@ -58,18 +53,16 @@ class VSCodeExtensionUpdater: f"{self.extension_publisher}.{self.extension_name}" ) self.nix_system = self.get_nix_system() - self.nix_systems = self._get_nix_vscode_extension_platforms() or [ + nix_vscode_extension_platforms = self._get_nix_vscode_extension_platforms() + if not nix_vscode_extension_platforms and self._has_platform_source(): + logger.error("Error: not found meta.platforms.") + sys.exit(1) + self.nix_vscode_extension_platforms = nix_vscode_extension_platforms or [ self.nix_system ] - if not self.args.platforms: - self.nix_systems = ( - [self.nix_system] - if self.nix_system in self.nix_systems - else self.nix_systems[:1] - ) - if self.nix_system in self.nix_systems: - self.nix_systems.remove(self.nix_system) - self.nix_systems.insert(0, self.nix_system) + if self.nix_system in self.nix_vscode_extension_platforms: + self.nix_vscode_extension_platforms.remove(self.nix_system) + self.nix_vscode_extension_platforms.insert(0, self.nix_system) self.supported_nix_systems = self.get_supported_nix_systems() logger.info(f"VSCode version: {self.target_vscode_version}") logger.info(f"Extension Marketplace ID: {self.extension_marketplace_id}") @@ -118,6 +111,10 @@ class VSCodeExtensionUpdater: extra_platforms = value.strip("[]").replace('"', "").split() return ([system] if system is not None else []) + extra_platforms + def _has_platform_source(self) -> bool: + source_url = self._get_nix_attribute(f"{self.attribute_path}.src.url") + return "targetPlatform=" in source_url + def _get_nix_vscode_extension_src_hash(self, system: str) -> str: url = self.execute_command( [ @@ -411,7 +408,8 @@ class VSCodeExtensionUpdater: f"Total versions found for {self.extension_marketplace_id}: {len(available_versions)}" ) self.new_version = self.find_compatible_extension_version( - available_versions, self.get_target_platform(self.nix_systems[0]) + available_versions, + self.get_target_platform(self.nix_vscode_extension_platforms[0]), ) try: self.execute_command( @@ -420,7 +418,7 @@ class VSCodeExtensionUpdater: except subprocess.CalledProcessError: logger.info("Already up to date or new version is older!") sys.exit(0) - for i, system in enumerate(self.nix_systems): + for i, system in enumerate(self.nix_vscode_extension_platforms): version = self.new_version if i == 0 else "skip" self.run_nix_update(version, system) if self.commit: