Loading pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/default.nix +39 −22 Original line number Diff line number Diff line Loading @@ -10,30 +10,33 @@ libxml2, }: let inherit (stdenv.hostPlatform) system; inherit (vscode-utils) buildVscodeMarketplaceExtension; lockfile = lib.importJSON ./lockfile.json; extInfo = (arch: { inherit arch; inherit (lockfile.${arch}) hash binaries; }) ( extInfo = ( { x86_64-linux = "linux-x64"; aarch64-linux = "linux-arm64"; x86_64-darwin = "darwin-x64"; aarch64-darwin = "darwin-arm64"; x86_64-linux = { arch = "linux-x64"; hash = "sha256-5B2LAV5azD1mGDFWnxIOYjyyJMXxqxyL5qP0zs6jWgs="; }; aarch64-linux = { arch = "linux-arm64"; hash = "sha256-6tmHa8XbuNLheUzY8pr6oEJlkUJpeCeT3O7xfo2Iqls="; }; x86_64-darwin = { arch = "darwin-x64"; hash = "sha256-KRJ148+N3Hzht1GgnO0s5Mv27q+onPyZlY9myXw3zjg="; }; aarch64-darwin = { arch = "darwin-arm64"; hash = "sha256-vmtE6oeLs1B9s69yaOHASdFKznV1p3v+SsJUAJrwUrU="; }; } .${system} or (throw "Unsupported system: ${system}") .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}") ); in buildVscodeMarketplaceExtension { vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = { name = "csdevkit"; publisher = "ms-dotnettools"; inherit (lockfile) version; version = "1.18.23"; inherit (extInfo) hash arch; }; sourceRoot = "extension"; # This has more than one folder. Loading @@ -56,9 +59,23 @@ buildVscodeMarketplaceExtension { substituteInPlace dist/extension.js \ --replace-fail 'e.extensionPath,"cache"' 'require("os").tmpdir(),"'"$ext_unique_id"'"' \ --replace-fail 't.setExecuteBit=async function(e){if("win32"!==process.platform){const t=o.join(e[a.SERVICEHUB_CONTROLLER_COMPONENT_NAME],"Microsoft.ServiceHub.Controller"),r=o.join(e[a.SERVICEHUB_HOST_COMPONENT_NAME],(0,a.getServiceHubHostEntrypointName)()),n=[(0,a.getServerPath)(e),t,r,(0,c.getReliabilityMonitorPath)(e)];await Promise.all(n.map((e=>(0,i.chmod)(e,"0755"))))}}' 't.setExecuteBit=async function(e){}' --replace-fail 't.setExecuteBit=async function(e){if("win32"!==process.platform){const t=i.join(e[a.SERVICEHUB_CONTROLLER_COMPONENT_NAME],"Microsoft.VisualStudio.Code.ServiceController"),r=i.join(e[a.SERVICEHUB_HOST_COMPONENT_NAME],(0,a.getServiceHubHostEntrypointName)()),n=[(0,a.getServerPath)(e),t,r,(0,c.getReliabilityMonitorPath)(e)];await Promise.all(n.map((e=>(0,o.chmod)(e,"0755"))))}}' 't.setExecuteBit=async function(e){}' ''; preFixup = '' ( shopt -s globstar shopt -s dotglob for file in "$out"/**/*; do if [[ ! -f "$file" || "$file" == *.so || "$file" == *.dylib ]] || (! isELF "$file" && ! isMachO "$file"); then continue fi chmod +x ${lib.escapeShellArgs extInfo.binaries} echo Making "$file" executable... chmod +x "$file" done ) ''; passthru.updateScript = ./update.sh; Loading pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/lockfile.jsondeleted 100644 → 0 +0 −39 Original line number Diff line number Diff line { "version": "1.16.6", "linux-x64": { "hash": "sha256-/ONaevRlpGc4xaYr9vV8maZUP3HbjmgUk/AbXAJM4tg=", "binaries": [ "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/servicehub-controller-net60.linux-x64/Microsoft.ServiceHub.Controller", "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/visualstudio-code-servicehost.linux-x64/Microsoft.VisualStudio.Code.ServiceHost", "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/visualstudio-reliability-monitor.linux-x64/Microsoft.VisualStudio.Reliability.Monitor", "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/visualstudio-server.linux-x64/Microsoft.VisualStudio.Code.Server" ] }, "linux-arm64": { "hash": "sha256-yhzozbnTsAddbx0Hior/DnN+vjRFWtIW8Z4zu1xfrhY=", "binaries": [ "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/servicehub-controller-net60.linux-arm64/Microsoft.ServiceHub.Controller", "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/visualstudio-code-servicehost.linux-arm64/Microsoft.VisualStudio.Code.ServiceHost", "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/visualstudio-reliability-monitor.linux-arm64/Microsoft.VisualStudio.Reliability.Monitor", "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/visualstudio-server.linux-arm64/Microsoft.VisualStudio.Code.Server" ] }, "darwin-x64": { "hash": "sha256-PZwhzd9yVAJiVz5g7ogICUIgwJvS2MyGQMZbNN+7QRM=", "binaries": [ "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/servicehub-controller-net60.darwin-x64/Microsoft.ServiceHub.Controller", "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/visualstudio-code-servicehost.darwin-x64/Microsoft.VisualStudio.Code.ServiceHost", "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/visualstudio-reliability-monitor.darwin-x64/Microsoft.VisualStudio.Reliability.Monitor", "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/visualstudio-server.darwin-x64/Microsoft.VisualStudio.Code.Server" ] }, "darwin-arm64": { "hash": "sha256-iR0jJnkcA12+CJUI0ECrRSR2+j2emtfmLt2Uz4ke7YY=", "binaries": [ "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/servicehub-controller-net60.darwin-arm64/Microsoft.ServiceHub.Controller", "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/visualstudio-code-servicehost.darwin-arm64/Microsoft.VisualStudio.Code.ServiceHost", "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/visualstudio-reliability-monitor.darwin-arm64/Microsoft.VisualStudio.Reliability.Monitor", "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/visualstudio-server.darwin-arm64/Microsoft.VisualStudio.Code.Server" ] } } pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/update.sh +10 −121 Original line number Diff line number Diff line #!/usr/bin/env nix-shell #!nix-shell -I nixpkgs=./. -i bash -p curl coreutils jq nix unzip #!nix-shell -I nixpkgs=./. -i bash -p curl jq nix common-updater-scripts # shellcheck shell=bash set -euo pipefail shopt -s globstar export LC_ALL=C PUBLISHER=ms-dotnettools EXTENSION=csdevkit LOCKFILE=pkgs/applications/editors/vscode/extensions/$PUBLISHER.$EXTENSION/lockfile.json response=$(curl -s 'https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery' \ -H 'accept: application/json;api-version=3.0-preview.1' \ Loading @@ -23,58 +21,12 @@ latest_version=$(jq --raw-output ' | map(select(.properties | map(select(.key == "Microsoft.VisualStudio.Code.PreRelease")) | .[0].value != "true")) | .[0].version' <<<"$response") current_version=$(jq '.version' --raw-output <"$LOCKFILE") if [[ "$latest_version" == "$current_version" ]]; then echo "Package is up to date." >&2 exit 1 fi # Return success if the specified file is an ELF object. isELF() { local fn="$1" local fd local magic exec {fd}<"$fn" read -r -n 4 -u "$fd" magic exec {fd}<&- if [ "$magic" = $'\177ELF' ]; then return 0; else return 1; fi } # Return success if the specified file is a Mach-O object. isMachO() { local fn="$1" local fd local magic exec {fd}<"$fn" read -r -n 4 -u "$fd" magic exec {fd}<&- # nix uses 'declare -F' in get-env.sh to retrieve the loaded functions. # If we use the $'string' syntax instead of 'echo -ne' then 'declare' will print the raw characters and break nix. # See https://github.com/NixOS/nixpkgs/pull/138334 and https://github.com/NixOS/nix/issues/5262. # https://opensource.apple.com/source/lldb/lldb-310.2.36/examples/python/mach_o.py.auto.html if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then # MH_MAGIC_64 || MH_CIGAM_64 return 0 elif [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then # MH_MAGIC || MH_CIGAM return 0 elif [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then # FAT_MAGIC || FAT_CIGAM return 0 else return 1 fi } getDownloadUrl() { nix-instantiate \ --eval \ --strict \ --json \ pkgs/applications/editors/vscode/extensions/mktplcExtRefToFetchArgs.nix \ 'pkgs/applications/editors/vscode/extensions/mktplcExtRefToFetchArgs.nix' \ --attr url \ --argstr publisher $PUBLISHER \ --argstr name $EXTENSION \ Loading @@ -82,76 +34,13 @@ getDownloadUrl() { --argstr arch "$1" | jq . --raw-output } TEMP=$(mktemp --directory --tmpdir) OUTPUT="$TEMP/lockfile.json" trap 'rm -r "$TEMP"' EXIT HASH= BINARIES=() fetchMarketplace() { arch="$1" echo " Downloading VSIX..." if ! curl -sLo "$TEMP/$arch".zip "$(getDownloadUrl "$arch")"; then echo " Failed to download extension for arch $arch" >&2 exit 1 fi HASH=$(nix hash file --type sha256 --sri "$TEMP/$arch".zip) BINARIES=() echo " Extracting VSIX..." mkdir "$TEMP/$arch" if ! unzip "$TEMP/$arch".zip -d "$TEMP/$arch" >/dev/null; then echo " Failed to unzip extension for arch $arch" >&2 file "$TEMP/$arch".zip >&2 exit 1 fi echo " Listing binaries..." for file in "$TEMP/$arch"/**/*; do if [[ ! -f "$file" || "$file" == *.so || "$file" == *.dylib ]] || (! isELF "$file" && ! isMachO "$file"); then continue fi echo " FOUND: ${file#"$TEMP/$arch/extension/"}" BINARIES+=("${file#"$TEMP/$arch/extension/"}") done rm -r "${TEMP:?}/$arch" update_hash() { local hash hash=$(nix hash convert --hash-algo sha256 "$(nix-prefetch-url --type sha256 "$(getDownloadUrl "$2")")") update-source-version vscode-extensions.$PUBLISHER.$EXTENSION "$latest_version" "$hash" --system="$1" --ignore-same-version } cat >"$OUTPUT" <<EOF { "version": "$latest_version", EOF firstArch=true for arch in linux-x64 linux-arm64 darwin-x64 darwin-arm64; do if [ "$firstArch" = false ]; then echo -e ',' >>"$OUTPUT" fi firstArch=false echo "Getting data for $arch..." fetchMarketplace "$arch" cat >>"$OUTPUT" <<EOF "$arch": { "hash": "$HASH", "binaries": [ EOF firstBin=true for binary in "${BINARIES[@]}"; do if [ "$firstBin" = false ]; then echo -e ',' >>"$OUTPUT" fi firstBin=false echo -n " \"$binary\"" >>"$OUTPUT" done echo -ne '\n ]\n }' >>"$OUTPUT" done echo -e '\n}' >>"$OUTPUT" mv "$OUTPUT" "$LOCKFILE" update_hash x86_64-linux linux-x64 update_hash aarch64-linux linux-arm64 update_hash x86_64-darwin darwin-x64 update_hash aarch64-darwin darwin-arm64 Loading
pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/default.nix +39 −22 Original line number Diff line number Diff line Loading @@ -10,30 +10,33 @@ libxml2, }: let inherit (stdenv.hostPlatform) system; inherit (vscode-utils) buildVscodeMarketplaceExtension; lockfile = lib.importJSON ./lockfile.json; extInfo = (arch: { inherit arch; inherit (lockfile.${arch}) hash binaries; }) ( extInfo = ( { x86_64-linux = "linux-x64"; aarch64-linux = "linux-arm64"; x86_64-darwin = "darwin-x64"; aarch64-darwin = "darwin-arm64"; x86_64-linux = { arch = "linux-x64"; hash = "sha256-5B2LAV5azD1mGDFWnxIOYjyyJMXxqxyL5qP0zs6jWgs="; }; aarch64-linux = { arch = "linux-arm64"; hash = "sha256-6tmHa8XbuNLheUzY8pr6oEJlkUJpeCeT3O7xfo2Iqls="; }; x86_64-darwin = { arch = "darwin-x64"; hash = "sha256-KRJ148+N3Hzht1GgnO0s5Mv27q+onPyZlY9myXw3zjg="; }; aarch64-darwin = { arch = "darwin-arm64"; hash = "sha256-vmtE6oeLs1B9s69yaOHASdFKznV1p3v+SsJUAJrwUrU="; }; } .${system} or (throw "Unsupported system: ${system}") .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}") ); in buildVscodeMarketplaceExtension { vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = { name = "csdevkit"; publisher = "ms-dotnettools"; inherit (lockfile) version; version = "1.18.23"; inherit (extInfo) hash arch; }; sourceRoot = "extension"; # This has more than one folder. Loading @@ -56,9 +59,23 @@ buildVscodeMarketplaceExtension { substituteInPlace dist/extension.js \ --replace-fail 'e.extensionPath,"cache"' 'require("os").tmpdir(),"'"$ext_unique_id"'"' \ --replace-fail 't.setExecuteBit=async function(e){if("win32"!==process.platform){const t=o.join(e[a.SERVICEHUB_CONTROLLER_COMPONENT_NAME],"Microsoft.ServiceHub.Controller"),r=o.join(e[a.SERVICEHUB_HOST_COMPONENT_NAME],(0,a.getServiceHubHostEntrypointName)()),n=[(0,a.getServerPath)(e),t,r,(0,c.getReliabilityMonitorPath)(e)];await Promise.all(n.map((e=>(0,i.chmod)(e,"0755"))))}}' 't.setExecuteBit=async function(e){}' --replace-fail 't.setExecuteBit=async function(e){if("win32"!==process.platform){const t=i.join(e[a.SERVICEHUB_CONTROLLER_COMPONENT_NAME],"Microsoft.VisualStudio.Code.ServiceController"),r=i.join(e[a.SERVICEHUB_HOST_COMPONENT_NAME],(0,a.getServiceHubHostEntrypointName)()),n=[(0,a.getServerPath)(e),t,r,(0,c.getReliabilityMonitorPath)(e)];await Promise.all(n.map((e=>(0,o.chmod)(e,"0755"))))}}' 't.setExecuteBit=async function(e){}' ''; preFixup = '' ( shopt -s globstar shopt -s dotglob for file in "$out"/**/*; do if [[ ! -f "$file" || "$file" == *.so || "$file" == *.dylib ]] || (! isELF "$file" && ! isMachO "$file"); then continue fi chmod +x ${lib.escapeShellArgs extInfo.binaries} echo Making "$file" executable... chmod +x "$file" done ) ''; passthru.updateScript = ./update.sh; Loading
pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/lockfile.jsondeleted 100644 → 0 +0 −39 Original line number Diff line number Diff line { "version": "1.16.6", "linux-x64": { "hash": "sha256-/ONaevRlpGc4xaYr9vV8maZUP3HbjmgUk/AbXAJM4tg=", "binaries": [ "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/servicehub-controller-net60.linux-x64/Microsoft.ServiceHub.Controller", "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/visualstudio-code-servicehost.linux-x64/Microsoft.VisualStudio.Code.ServiceHost", "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/visualstudio-reliability-monitor.linux-x64/Microsoft.VisualStudio.Reliability.Monitor", "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/visualstudio-server.linux-x64/Microsoft.VisualStudio.Code.Server" ] }, "linux-arm64": { "hash": "sha256-yhzozbnTsAddbx0Hior/DnN+vjRFWtIW8Z4zu1xfrhY=", "binaries": [ "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/servicehub-controller-net60.linux-arm64/Microsoft.ServiceHub.Controller", "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/visualstudio-code-servicehost.linux-arm64/Microsoft.VisualStudio.Code.ServiceHost", "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/visualstudio-reliability-monitor.linux-arm64/Microsoft.VisualStudio.Reliability.Monitor", "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/visualstudio-server.linux-arm64/Microsoft.VisualStudio.Code.Server" ] }, "darwin-x64": { "hash": "sha256-PZwhzd9yVAJiVz5g7ogICUIgwJvS2MyGQMZbNN+7QRM=", "binaries": [ "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/servicehub-controller-net60.darwin-x64/Microsoft.ServiceHub.Controller", "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/visualstudio-code-servicehost.darwin-x64/Microsoft.VisualStudio.Code.ServiceHost", "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/visualstudio-reliability-monitor.darwin-x64/Microsoft.VisualStudio.Reliability.Monitor", "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/visualstudio-server.darwin-x64/Microsoft.VisualStudio.Code.Server" ] }, "darwin-arm64": { "hash": "sha256-iR0jJnkcA12+CJUI0ECrRSR2+j2emtfmLt2Uz4ke7YY=", "binaries": [ "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/servicehub-controller-net60.darwin-arm64/Microsoft.ServiceHub.Controller", "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/visualstudio-code-servicehost.darwin-arm64/Microsoft.VisualStudio.Code.ServiceHost", "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/visualstudio-reliability-monitor.darwin-arm64/Microsoft.VisualStudio.Reliability.Monitor", "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/visualstudio-server.darwin-arm64/Microsoft.VisualStudio.Code.Server" ] } }
pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/update.sh +10 −121 Original line number Diff line number Diff line #!/usr/bin/env nix-shell #!nix-shell -I nixpkgs=./. -i bash -p curl coreutils jq nix unzip #!nix-shell -I nixpkgs=./. -i bash -p curl jq nix common-updater-scripts # shellcheck shell=bash set -euo pipefail shopt -s globstar export LC_ALL=C PUBLISHER=ms-dotnettools EXTENSION=csdevkit LOCKFILE=pkgs/applications/editors/vscode/extensions/$PUBLISHER.$EXTENSION/lockfile.json response=$(curl -s 'https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery' \ -H 'accept: application/json;api-version=3.0-preview.1' \ Loading @@ -23,58 +21,12 @@ latest_version=$(jq --raw-output ' | map(select(.properties | map(select(.key == "Microsoft.VisualStudio.Code.PreRelease")) | .[0].value != "true")) | .[0].version' <<<"$response") current_version=$(jq '.version' --raw-output <"$LOCKFILE") if [[ "$latest_version" == "$current_version" ]]; then echo "Package is up to date." >&2 exit 1 fi # Return success if the specified file is an ELF object. isELF() { local fn="$1" local fd local magic exec {fd}<"$fn" read -r -n 4 -u "$fd" magic exec {fd}<&- if [ "$magic" = $'\177ELF' ]; then return 0; else return 1; fi } # Return success if the specified file is a Mach-O object. isMachO() { local fn="$1" local fd local magic exec {fd}<"$fn" read -r -n 4 -u "$fd" magic exec {fd}<&- # nix uses 'declare -F' in get-env.sh to retrieve the loaded functions. # If we use the $'string' syntax instead of 'echo -ne' then 'declare' will print the raw characters and break nix. # See https://github.com/NixOS/nixpkgs/pull/138334 and https://github.com/NixOS/nix/issues/5262. # https://opensource.apple.com/source/lldb/lldb-310.2.36/examples/python/mach_o.py.auto.html if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then # MH_MAGIC_64 || MH_CIGAM_64 return 0 elif [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then # MH_MAGIC || MH_CIGAM return 0 elif [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then # FAT_MAGIC || FAT_CIGAM return 0 else return 1 fi } getDownloadUrl() { nix-instantiate \ --eval \ --strict \ --json \ pkgs/applications/editors/vscode/extensions/mktplcExtRefToFetchArgs.nix \ 'pkgs/applications/editors/vscode/extensions/mktplcExtRefToFetchArgs.nix' \ --attr url \ --argstr publisher $PUBLISHER \ --argstr name $EXTENSION \ Loading @@ -82,76 +34,13 @@ getDownloadUrl() { --argstr arch "$1" | jq . --raw-output } TEMP=$(mktemp --directory --tmpdir) OUTPUT="$TEMP/lockfile.json" trap 'rm -r "$TEMP"' EXIT HASH= BINARIES=() fetchMarketplace() { arch="$1" echo " Downloading VSIX..." if ! curl -sLo "$TEMP/$arch".zip "$(getDownloadUrl "$arch")"; then echo " Failed to download extension for arch $arch" >&2 exit 1 fi HASH=$(nix hash file --type sha256 --sri "$TEMP/$arch".zip) BINARIES=() echo " Extracting VSIX..." mkdir "$TEMP/$arch" if ! unzip "$TEMP/$arch".zip -d "$TEMP/$arch" >/dev/null; then echo " Failed to unzip extension for arch $arch" >&2 file "$TEMP/$arch".zip >&2 exit 1 fi echo " Listing binaries..." for file in "$TEMP/$arch"/**/*; do if [[ ! -f "$file" || "$file" == *.so || "$file" == *.dylib ]] || (! isELF "$file" && ! isMachO "$file"); then continue fi echo " FOUND: ${file#"$TEMP/$arch/extension/"}" BINARIES+=("${file#"$TEMP/$arch/extension/"}") done rm -r "${TEMP:?}/$arch" update_hash() { local hash hash=$(nix hash convert --hash-algo sha256 "$(nix-prefetch-url --type sha256 "$(getDownloadUrl "$2")")") update-source-version vscode-extensions.$PUBLISHER.$EXTENSION "$latest_version" "$hash" --system="$1" --ignore-same-version } cat >"$OUTPUT" <<EOF { "version": "$latest_version", EOF firstArch=true for arch in linux-x64 linux-arm64 darwin-x64 darwin-arm64; do if [ "$firstArch" = false ]; then echo -e ',' >>"$OUTPUT" fi firstArch=false echo "Getting data for $arch..." fetchMarketplace "$arch" cat >>"$OUTPUT" <<EOF "$arch": { "hash": "$HASH", "binaries": [ EOF firstBin=true for binary in "${BINARIES[@]}"; do if [ "$firstBin" = false ]; then echo -e ',' >>"$OUTPUT" fi firstBin=false echo -n " \"$binary\"" >>"$OUTPUT" done echo -ne '\n ]\n }' >>"$OUTPUT" done echo -e '\n}' >>"$OUTPUT" mv "$OUTPUT" "$LOCKFILE" update_hash x86_64-linux linux-x64 update_hash aarch64-linux linux-arm64 update_hash x86_64-darwin darwin-x64 update_hash aarch64-darwin darwin-arm64