vscode-extension-update-script: improve (#397581)

This commit is contained in:
Pol Dellaiera
2025-04-26 19:38:55 +00:00
committed by GitHub
11 changed files with 37 additions and 54 deletions
@@ -3,7 +3,7 @@
lib,
vscode-utils,
ruff,
vscode-extensions-update-script,
vscode-extension-update-script,
}:
vscode-utils.buildVscodeMarketplaceExtension {
@@ -45,7 +45,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
ln -sf ${lib.getExe ruff} "$out/$installPrefix/bundled/libs/bin/ruff"
'';
passthru.updateScript = vscode-extensions-update-script { extraArgs = [ "--platforms" ]; };
passthru.updateScript = vscode-extension-update-script { };
meta = {
license = lib.licenses.mit;
@@ -3,7 +3,7 @@
vscode-utils,
writeShellScript,
nix-update,
vscode-extensions-update,
vscode-extension-update,
}:
with vscode-utils;
@@ -24,7 +24,7 @@ let
};
passthru.updateScript = lib.optionalAttrs (language == "fr") (
writeShellScript "vscode-language-packs-update-script" ''
${lib.getExe vscode-extensions-update} vscode-extensions.ms-ceintl.vscode-language-pack-fr --override-filename "pkgs/applications/editors/vscode/extensions/language-packs.nix"
${lib.getExe vscode-extension-update} vscode-extensions.ms-ceintl.vscode-language-pack-fr --override-filename "pkgs/applications/editors/vscode/extensions/language-packs.nix"
for lang in cs de es it ja ko pl pt-br qps-ploc ru tr zh-hans zh-hant; do
${lib.getExe nix-update} --version "skip" "vscode-extensions.ms-ceintl.vscode-language-pack-$lang" --override-filename "pkgs/applications/editors/vscode/extensions/language-packs.nix"
done
@@ -8,7 +8,7 @@
# Defaults to `false` as we expect it to be project specific most of the time.
pythonUseFixed ? false,
# For updateScript
vscode-extensions-update-script,
vscode-extension-update-script,
}:
vscode-utils.buildVscodeMarketplaceExtension rec {
@@ -45,7 +45,7 @@ vscode-utils.buildVscodeMarketplaceExtension rec {
--replace-fail "\"default\":\"python\"" "\"default\":\"${python3.interpreter}\""
'';
passthru.updateScript = vscode-extensions-update-script { };
passthru.updateScript = vscode-extension-update-script { };
meta = {
description = "Visual Studio Code extension with rich support for the Python language";
@@ -1,7 +1,7 @@
{
lib,
vscode-utils,
vscode-extensions-update-script,
vscode-extension-update-script,
}:
vscode-utils.buildVscodeMarketplaceExtension {
@@ -12,7 +12,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
hash = "sha256-ezmBS84RonkqlguLcgGZa4663GpY6yReKKb+r6YzQms=";
};
passthru.updateScript = vscode-extensions-update-script { };
passthru.updateScript = vscode-extension-update-script { };
meta = {
description = "AI-powered autonomous coding agent that lives in your editor";
@@ -2,7 +2,7 @@
stdenvNoCC,
lib,
vscode-utils,
vscode-extensions-update-script,
vscode-extension-update-script,
}:
vscode-utils.buildVscodeMarketplaceExtension {
@@ -35,7 +35,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
// sources.${stdenvNoCC.hostPlatform.system}
or (throw "Unsupported system ${stdenvNoCC.hostPlatform.system}");
passthru.updateScript = vscode-extensions-update-script { extraArgs = [ "--platforms" ]; };
passthru.updateScript = vscode-extension-update-script { };
meta = {
description = "Jujutsu version control integration, for simpler Git workflow";
@@ -0,0 +1,5 @@
{
writeScriptBin,
}:
writeScriptBin "vscode-extension-update" (builtins.readFile ./vscode_extension_update.py)
@@ -1,6 +1,6 @@
{
lib,
vscode-extensions-update,
vscode-extension-update,
}:
{
@@ -8,6 +8,6 @@
extraArgs ? [ ],
}:
[ "${lib.getExe vscode-extensions-update}" ]
[ "${lib.getExe vscode-extension-update}" ]
++ lib.optionals (attrPath != null) [ attrPath ]
++ extraArgs
@@ -1,5 +1,5 @@
#! /usr/bin/env nix-shell
#! nix-shell -i python3 -p nix python3 python3Packages.loguru nix-search-tv vscode-extensions-update gitMinimal
#! nix-shell -i python3 -p nix python3 python3Packages.loguru nix-search-tv vscode-extension-update gitMinimal
import argparse
import subprocess
@@ -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])
@@ -92,12 +82,7 @@ class VSCodeExtensionBatchUpdater:
try:
if self._has_update_script(extension):
return
update_command = ["vscode-extensions-update", extension, "--commit"]
if self._has_platform_source(extension):
if self.platforms:
update_command.append("--platforms")
else:
return
update_command = ["vscode-extension-update", extension, "--commit"]
filename = self._get_extension_filename(extension)
if filename:
update_command.extend(["--override-filename", filename])
@@ -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:
@@ -1,5 +0,0 @@
{
writeScriptBin,
}:
writeScriptBin "vscode-extensions-update" (builtins.readFile ./vscode_extensions_update.py)
+2 -2
View File
@@ -16412,8 +16412,8 @@ with pkgs;
vscode-extensions = recurseIntoAttrs (callPackage ../applications/editors/vscode/extensions { });
vscode-extensions-update-script =
callPackage ../by-name/vs/vscode-extensions-update/vscode-extensions-update-script.nix
vscode-extension-update-script =
callPackage ../by-name/vs/vscode-extension-update/vscode-extension-update-script.nix
{ };
vscode-js-debug = callPackage ../by-name/vs/vscode-js-debug/package.nix {