vscode-extension-update-script: improve (#397581)
This commit is contained in:
@@ -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)
|
||||
+2
-2
@@ -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
|
||||
+3
-18
@@ -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])
|
||||
+15
-17
@@ -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)
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user