From 8c76327d14416a121ae798ea329d4570a12159e1 Mon Sep 17 00:00:00 2001 From: bschnurr Date: Fri, 21 Nov 2025 10:47:32 -0800 Subject: [PATCH 1/3] convert to azure pipeline --- .npmrc | 4 + .vscodeignore | 3 +- build/azure-devdiv-pipeline.pre-release.yml | 126 +++++++++++++++++ build/azure-devdiv-pipeline.stable.yml | 111 +++++++++++++++ build/sign.proj | 59 ++++++++ build/templates/publish.yml | 118 ++++++++++++++++ build/templates/sign.yml | 141 ++++++++++++++++++++ l10n/bundle.l10n.cs.json | 1 + l10n/bundle.l10n.de.json | 1 + l10n/bundle.l10n.es.json | 1 + l10n/bundle.l10n.fr.json | 1 + l10n/bundle.l10n.it.json | 1 + l10n/bundle.l10n.ja.json | 1 + l10n/bundle.l10n.ko.json | 1 + l10n/bundle.l10n.pl.json | 1 + l10n/bundle.l10n.pt-br.json | 1 + l10n/bundle.l10n.qps-ploc.json | 1 + l10n/bundle.l10n.ru.json | 1 + l10n/bundle.l10n.tr.json | 1 + l10n/bundle.l10n.zh-cn.json | 1 + l10n/bundle.l10n.zh-tw.json | 1 + package.json | 1 + package.nls.cs.json | 1 + package.nls.de.json | 1 + package.nls.es.json | 1 + package.nls.fr.json | 1 + package.nls.it.json | 1 + package.nls.ja.json | 1 + package.nls.ko.json | 1 + package.nls.pl.json | 1 + package.nls.pt-br.json | 1 + package.nls.qps-ploc.json | 1 + package.nls.ru.json | 1 + package.nls.tr.json | 1 + package.nls.zh-cn.json | 1 + package.nls.zh-tw.json | 1 + packages.config | 4 + 37 files changed, 594 insertions(+), 1 deletion(-) create mode 100644 .npmrc create mode 100644 build/azure-devdiv-pipeline.pre-release.yml create mode 100644 build/azure-devdiv-pipeline.stable.yml create mode 100644 build/sign.proj create mode 100644 build/templates/publish.yml create mode 100644 build/templates/sign.yml create mode 100644 l10n/bundle.l10n.cs.json create mode 100644 l10n/bundle.l10n.de.json create mode 100644 l10n/bundle.l10n.es.json create mode 100644 l10n/bundle.l10n.fr.json create mode 100644 l10n/bundle.l10n.it.json create mode 100644 l10n/bundle.l10n.ja.json create mode 100644 l10n/bundle.l10n.ko.json create mode 100644 l10n/bundle.l10n.pl.json create mode 100644 l10n/bundle.l10n.pt-br.json create mode 100644 l10n/bundle.l10n.qps-ploc.json create mode 100644 l10n/bundle.l10n.ru.json create mode 100644 l10n/bundle.l10n.tr.json create mode 100644 l10n/bundle.l10n.zh-cn.json create mode 100644 l10n/bundle.l10n.zh-tw.json create mode 100644 package.nls.cs.json create mode 100644 package.nls.de.json create mode 100644 package.nls.es.json create mode 100644 package.nls.fr.json create mode 100644 package.nls.it.json create mode 100644 package.nls.ja.json create mode 100644 package.nls.ko.json create mode 100644 package.nls.pl.json create mode 100644 package.nls.pt-br.json create mode 100644 package.nls.qps-ploc.json create mode 100644 package.nls.ru.json create mode 100644 package.nls.tr.json create mode 100644 package.nls.zh-cn.json create mode 100644 package.nls.zh-tw.json create mode 100644 packages.config diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..6d6c8844 --- /dev/null +++ b/.npmrc @@ -0,0 +1,4 @@ +# Force public npm registry to avoid CI auth (E401) when no token is provided +registry=https://registry.npmjs.org/ +# Do not require auth for public installs +always-auth=false diff --git a/.vscodeignore b/.vscodeignore index ff11a420..3a50fac2 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -23,4 +23,5 @@ noxfile.py .flake8 **/requirements.txt **/requirements.in -**/tool/_debug_server.py \ No newline at end of file +**/tool/_debug_server.py +build/** \ No newline at end of file diff --git a/build/azure-devdiv-pipeline.pre-release.yml b/build/azure-devdiv-pipeline.pre-release.yml new file mode 100644 index 00000000..d37beec2 --- /dev/null +++ b/build/azure-devdiv-pipeline.pre-release.yml @@ -0,0 +1,126 @@ +# Run on a schedule +trigger: none +pr: none + +schedules: + - cron: '0 10 * * 1-5' # 10AM UTC (2AM PDT) MON-FRI (VS Code Pre-release builds at 9PM PDT) + displayName: Nightly Pre-Release Schedule + always: false # only run if there are source code changes + branches: + include: + - main + +resources: + repositories: + - repository: MicroBuildTemplate + type: git + name: 1ESPipelineTemplates/MicroBuildTemplate + ref: refs/tags/release +variables: + - name: TeamName + value: VSCode-black-formatter + - name: VsixName + value: black-formatter.vsix + - name: AZURE_ARTIFACTS_FEED + value: 'https://devdiv.pkgs.visualstudio.com/DevDiv/_packaging/Pylance_PublicPackages/npm/registry/' +parameters: + - name: publishExtension + displayName: 🚀 Publish Extension + type: boolean + default: false + +extends: + template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate + parameters: + sdl: + sourceAnalysisPool: VSEngSS-MicroBuild2022-1ES + codeSignValidation: + enabled: true + sbom: + enabled: false # Disable global SBOM generation; we'll enable selectively per artifact output + pool: + name: AzurePipelines-EO + os: windows + + customBuildTags: + - ES365AIMigrationTooling + stages: + - stage: Build + displayName: Build & Package Extension + jobs: + - job: Build + displayName: Build Job + pool: + name: VSEngSS-MicroBuild2022-1ES # use windows for codesigning to make things easier https://dev.azure.com/devdiv/DevDiv/_wiki/wikis/DevDiv.wiki/650/MicroBuild-Signing + os: windows + templateContext: + mb: + signing: + enabled: true + signType: real + signWithProd: true + outputs: + - output: pipelineArtifact + displayName: 'Publish Drop Artifact' + targetPath: '$(Build.StagingDirectory)\drop' + artifactName: drop + sbomEnabled: true + steps: + - task: npmAuthenticate@0 + inputs: + workingFile: .npmrc + + - script: npm config get registry + displayName: Verify NPM Registry + + - task: NodeTool@0 + inputs: + versionSpec: '22.x' + checkLatest: true + displayName: Select Node 22 LTS + + - task: UsePythonVersion@0 + inputs: + versionSpec: '3.9' # note Install Python dependencies step below relies on Python 3.9 + addToPath: true + architecture: 'x64' + displayName: Select Python version + + - script: npm ci + displayName: Install NPM dependencies + + - script: python -m pip install -U pip + displayName: Upgrade pip + + - script: python -m pip install wheel + displayName: Install wheel + + - script: python -m pip install nox + displayName: Install nox + + - script: python -m nox --session install_bundled_libs + displayName: Install Python dependencies + + - script: python ./build/update_ext_version.py --for-publishing + displayName: Update build number + + - script: npm run vsce-package-pre + displayName: Build VSIX + + - template: build/templates/sign.yml@self + parameters: + vsixName: $(VsixName) + workingDirectory: $(Build.StagingDirectory)\drop + signType: real + verifySignature: true + + - ${{ if eq(parameters.publishExtension, true) }}: + - template: build/templates/publish.yml@self + parameters: + azureSubscription: PylancePublishPipelineSecureConnectionWithManagedIdentity + vsixName: $(VsixName) + manifestName: extension.manifest + signatureName: extension.signature.p7s + publishFolder: drop + preRelease: true + diff --git a/build/azure-devdiv-pipeline.stable.yml b/build/azure-devdiv-pipeline.stable.yml new file mode 100644 index 00000000..36538208 --- /dev/null +++ b/build/azure-devdiv-pipeline.stable.yml @@ -0,0 +1,111 @@ +name: Publish Release +trigger: + branches: + include: + - refs/tags/* + +resources: + repositories: + - repository: MicroBuildTemplate + type: git + name: 1ESPipelineTemplates/MicroBuildTemplate + ref: refs/tags/release +variables: + - name: TeamName + value: VSCode-black-formatter + - name: VsixName + value: black-formatter.vsix + +parameters: + - name: publishExtension + displayName: 🚀 Publish Extension + type: boolean + default: false + +extends: + template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate + parameters: + sdl: + sourceAnalysisPool: VSEngSS-MicroBuild2022-1ES + codeSignValidation: + enabled: true + sbom: + enabled: false # Disable global SBOM generation; we'll enable selectively per artifact output + pool: + name: AzurePipelines-EO + os: windows + + customBuildTags: + - ES365AIMigrationTooling + stages: + - stage: Build + displayName: Build & Package Extension + jobs: + - job: Build + displayName: Build Job + pool: + name: VSEngSS-MicroBuild2022-1ES # use windows for codesigning to make things easier https://dev.azure.com/devdiv/DevDiv/_wiki/wikis/DevDiv.wiki/650/MicroBuild-Signing + os: windows + templateContext: + mb: + signing: + enabled: true + signType: real + signWithProd: true + outputs: + - output: pipelineArtifact + displayName: 'Publish Drop Artifact' + targetPath: '$(Build.StagingDirectory)\drop' + artifactName: drop + sbomEnabled: true + steps: + - task: NodeTool@0 + inputs: + versionSpec: '22.x' + checkLatest: true + displayName: Select Node 22 LTS + - task: UsePythonVersion@0 + inputs: + versionSpec: '3.9' # note Install Python dependencies step below relies on Python 3.9 + addToPath: true + architecture: 'x64' + displayName: Select Python version + + - script: npm ci + displayName: Install NPM dependencies + + - script: python -m pip install -U pip + displayName: Upgrade pip + + - script: python -m pip install wheel + displayName: Install wheel + + - script: python -m pip install nox + displayName: Install nox + + - script: python -m nox --session install_bundled_libs + displayName: Install Python dependencies + + - script: python ./build/update_ext_version.py --release --for-publishing + displayName: Update build number + + - script: npm run vsce-package + displayName: Build VSIX + + - template: build/templates/sign.yml@self + parameters: + vsixName: $(VsixName) + workingDirectory: $(Build.StagingDirectory)\drop + signType: real + verifySignature: true + + - ${{ if eq(parameters.publishExtension, true) }}: + - template: build/templates/publish.yml@self + parameters: + azureSubscription: PylancePublishPipelineSecureConnectionWithManagedIdentity + vsixName: $(VsixName) + manifestName: extension.manifest + signatureName: extension.signature.p7s + publishFolder: drop + preRelease: false + diff --git a/build/sign.proj b/build/sign.proj new file mode 100644 index 00000000..95ccd155 --- /dev/null +++ b/build/sign.proj @@ -0,0 +1,59 @@ + + + + + + + + + Debug + + .\ + + $(BaseOutputDirectory)/intermediate + $(BaseOutputDirectory) + + + + + + + + + + + + + + + + + + + + + + + + + + + VSCodePublisher + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + diff --git a/build/templates/publish.yml b/build/templates/publish.yml new file mode 100644 index 00000000..41672f3e --- /dev/null +++ b/build/templates/publish.yml @@ -0,0 +1,118 @@ +# Template (steps): PublishMarketplace for autopep8 extension +# Expects working directory already populated (or artifact previously downloaded) with: autopep8.vsix, extension.manifest, extension.signature.p7s +# Provides optional prerelease publishing via parameter. +# +# Usage (example inside a stage job): +# steps: +# - template: build/templates/publish.yml@self +# parameters: +# azureSubscription: Autopep8PublishServiceConnection +# artifactName: drop +# vsixName: autopep8.vsix +# manifestName: extension.manifest +# signatureName: extension.signature.p7s +# publishFolder: vscode-autopep8 +# preRelease: true +# noVerify: true +# +# Notes: +# - Azure DevOps Marketplace resource GUID (499b84ac-1321-427f-aa17-267ca6975798) is hardcoded in publish script. +# - This uses Managed Identity via AzureCLI@2 to acquire an AAD token and passes it as a PAT. +# - Requires extension artifacts already signed (signature file present). +# - Node & vsce expected to be prepared by parent pipeline; omit local installation here. + +parameters: + - name: azureSubscription + type: string + - name: vsixName + type: string + default: autopep8.vsix + - name: manifestName + type: string + default: extension.manifest + - name: signatureName + type: string + default: extension.signature.p7s + - name: publishFolder + type: string + default: vscode-autopep8 + - name: preRelease + type: boolean + default: false + - name: noVerify + type: boolean + default: true + +steps: + # Node & vsce expected to be prepared by parent pipeline; omit local installation. + + # Assumes files already present at $(Build.ArtifactStagingDirectory)/publishFolder + + # Step 1: Acquire token only (store secret variable MarketplaceAADToken) + - task: AzureCLI@2 + displayName: Acquire Marketplace AAD token + inputs: + azureSubscription: ${{ parameters.azureSubscription }} + scriptType: pscore + scriptLocation: inlineScript + inlineScript: | + $resource = "499b84ac-1321-427f-aa17-267ca6975798" + Write-Host "Acquiring AAD token for resource: $resource" + az rest -u https://app.vssps.visualstudio.com/_apis/profile/profiles/me --resource $resource | Out-Null + $aadToken = az account get-access-token --query accessToken --resource $resource -o tsv + if (-not $aadToken) { Write-Error 'Failed to acquire AAD token.'; exit 1 } + Write-Host "##vso[task.setvariable variable=MarketplaceAADToken;isSecret=true]$aadToken" + Write-Host "Token stored in secret variable MarketplaceAADToken" + + # Step 2: Validate artifacts & publish + - task: PowerShell@2 + displayName: Publish extension (vsce) + inputs: + targetType: inline + script: | + $aadToken = "$(MarketplaceAADToken)" + if (-not $aadToken) { Write-Error 'MarketplaceAADToken is empty (token acquisition failed).'; exit 1 } + + $root = "$(Build.ArtifactStagingDirectory)/${{ parameters.publishFolder }}" + $vsixPath = Join-Path $root "${{ parameters.vsixName }}" + $manifestPath = Join-Path $root "${{ parameters.manifestName }}" + $signaturePath = Join-Path $root "${{ parameters.signatureName }}" + + Write-Host "VSIX Path: $vsixPath" + Write-Host "Manifest Path: $manifestPath" + Write-Host "Signature Path: $signaturePath" + + if (-not (Test-Path $vsixPath)) { Write-Error "VSIX file not found: $vsixPath"; exit 1 } + if (-not (Test-Path $manifestPath)) { Write-Error "Manifest file not found: $manifestPath"; exit 1 } + if (-not (Test-Path $signaturePath)) { Write-Error "Signature file not found: $signaturePath"; exit 1 } + + Write-Host "Listing publish folder contents: $root" + Get-ChildItem -Recurse $root | Select-Object FullName,Length | Format-Table -AutoSize + + $extraFlags = '' + if ('${{ parameters.noVerify }}' -eq 'True') { $extraFlags = "$extraFlags --noVerify" } + + if ('${{ parameters.preRelease }}' -eq 'True') { + Write-Host 'Publishing as pre-release' + # disabled for now; uncomment when ready + npx vsce publish --pat $aadToken --packagePath $vsixPath --manifestPath $manifestPath --signaturePath $signaturePath $extraFlags --pre-release + } else { + Write-Host 'Publishing as stable release' + # disabled for now; uncomment when ready + npx vsce publish --pat $aadToken --packagePath $vsixPath --manifestPath $manifestPath --signaturePath $signaturePath $extraFlags + } + + if ($LASTEXITCODE -ne 0) { + Write-Error "vsce publish failed with exit code $LASTEXITCODE" + exit $LASTEXITCODE + } + Write-Host 'Publish step completed (publish command currently disabled).' + + - task: PowerShell@2 + displayName: Post-publish summary + inputs: + targetType: inline + script: | + Write-Host 'Published extension artifacts:' + Get-ChildItem "$(Build.ArtifactStagingDirectory)/${{ parameters.publishFolder }}" -File | Select-Object Name,Length | Format-Table -AutoSize + Write-Host "Pre-release parameter: ${{ parameters.preRelease }}" diff --git a/build/templates/sign.yml b/build/templates/sign.yml new file mode 100644 index 00000000..f3c7f83b --- /dev/null +++ b/build/templates/sign.yml @@ -0,0 +1,141 @@ +# Template: Sign and validate VS Code extension artifacts +# Usage Example: +# - template: build/templates/sign.yml@self +# parameters: +# vsixName: black-formatter.vsix +# workingDirectory: $(Build.SourcesDirectory) +# signType: real +# Note: vsce CLI is invoked via 'npx vsce' (devDependency), no global install required. + +parameters: + - name: vsixName + type: string + default: black-formatter.vsix + - name: manifestName + type: string + default: extension.manifest + - name: signatureName + type: string + default: extension.signature.p7s + - name: workingDirectory + type: string + default: '$(Build.SourcesDirectory)' + - name: signType + type: string + default: real + - name: verifySignature + type: boolean + default: true + - name: prepareRoot + type: boolean + default: true + # vsceVersion parameter removed; rely on pinned devDependency version via npx. + +steps: + # vsce CLI expected to be installed by parent pipeline; no local install here. + + - task: NuGetToolInstaller@1 + displayName: Install NuGet + + - task: NuGetCommand@2 + displayName: Restore signing packages + inputs: + command: restore + restoreSolution: '$(Build.SourcesDirectory)/packages.config' + restoreDirectory: '$(Build.SourcesDirectory)/packages' + + - powershell: | + New-Item -ItemType Directory -Path "$(Build.StagingDirectory)\drop" -Force | Out-Null; Copy-Item "$(Build.SourcesDirectory)\$(VsixName)" "$(Build.StagingDirectory)\drop\$(VsixName)" -Force; if (!(Test-Path "$(Build.StagingDirectory)\drop\$(VsixName)")) { Write-Error 'VSIX copy failed'; exit 1 }; Get-Item "$(Build.StagingDirectory)\drop\$(VsixName)" | Format-Table Name,Length,LastWriteTime -AutoSize + displayName: Copy VSIX into drop + + - script: npx vsce generate-manifest -i "$(Build.StagingDirectory)\drop\$(VsixName)" -o "$(Build.StagingDirectory)\drop\extension.manifest" + displayName: Generate extension manifest + + - task: PowerShell@2 + displayName: Pre-sign inspection + inputs: + targetType: inline + script: | + $wd = "${{ parameters.workingDirectory }}" + $vsixName = "${{ parameters.vsixName }}" + $manifestName = "${{ parameters.manifestName }}" + $signatureName = "${{ parameters.signatureName }}" + Write-Host "Pre-sign contents of working directory: $wd" + Get-ChildItem -Recurse $wd | Select-Object FullName,Length | Format-Table -AutoSize + $vsix = Join-Path $wd $vsixName + if (!(Test-Path $vsix)) { Write-Error "VSIX missing: $vsix"; exit 1 } + $manifest = Join-Path $wd $manifestName + if (!(Test-Path $manifest)) { Write-Error "Manifest missing: $manifest"; exit 1 } + $sig = Join-Path $wd $signatureName + if (!(Test-Path $sig)) { Write-Warning "Signature placeholder missing (will attempt signing anyway)." } + + # Deprecated prepareRoot step removed: we now sign directly in workingDirectory by overriding BaseOutputDirectory. + + - task: MSBuild@1 + displayName: Run signing (MSBuild) + inputs: + solution: '$(Build.SourcesDirectory)/build/sign.proj' + msbuildArguments: '/verbosity:detailed /bl:"${{ parameters.workingDirectory }}\\signing.binlog" /p:SignType=${{ parameters.signType }} /p:BaseOutputDirectory=${{ parameters.workingDirectory }} /p:OutDir=${{ parameters.workingDirectory }} /p:IntermediateOutputPath=${{ parameters.workingDirectory }}\\intermediate' + + # No copy-back needed; signing outputs now land directly in workingDirectory. + + - task: PowerShell@2 + displayName: Post-sign inspection + inputs: + targetType: inline + script: | + $wd = "${{ parameters.workingDirectory }}" + $signatureName = "${{ parameters.signatureName }}" + Write-Host "Post-sign file listing:" + Get-ChildItem $wd -File | Select-Object Name,Length | Format-Table -AutoSize + $sig = Join-Path $wd $signatureName + if (Test-Path $sig) { + Write-Host "Signature file present: $sig" + } else { + Write-Warning "Signature file NOT present after signing step."; exit 0 + } + + - task: PowerShell@2 + displayName: Validate signature differs from manifest (hash check) + inputs: + targetType: inline + script: | + $wd = "${{ parameters.workingDirectory }}" + $manifest = Join-Path $wd "${{ parameters.manifestName }}" + $signature = Join-Path $wd "${{ parameters.signatureName }}" + if (!(Test-Path $manifest)) { Write-Error "Manifest missing for hash comparison: $manifest"; exit 1 } + if (!(Test-Path $signature)) { Write-Error "Signature missing for hash comparison: $signature"; exit 1 } + $manifestHash = (Get-FileHash -Algorithm SHA256 $manifest).Hash + $signatureHash = (Get-FileHash -Algorithm SHA256 $signature).Hash + Write-Host "Manifest SHA256 : $manifestHash" + Write-Host "Signature SHA256: $signatureHash" + if ($manifestHash -eq $signatureHash) { + Write-Error "Signature file is identical to manifest (placeholder detected). Failing build."; exit 1 + } else { + Write-Host "Hashes differ ✅ (signature not a direct copy of manifest)" + } + + - ${{ if eq(parameters.verifySignature, true) }}: + - task: PowerShell@2 + displayName: Verify VSIX signature + inputs: + targetType: inline + script: | + $wd = "${{ parameters.workingDirectory }}" + $vsix = Join-Path $wd "${{ parameters.vsixName }}" + $manifest = Join-Path $wd "${{ parameters.manifestName }}" + $signature = Join-Path $wd "${{ parameters.signatureName }}" + Write-Host "Verifying signature:" + Write-Host " packagePath : $vsix" + Write-Host " manifestPath : $manifest" + Write-Host " signaturePath: $signature" + if (!(Test-Path $vsix)) { Write-Error "Missing VSIX: $vsix"; exit 1 } + if (!(Test-Path $manifest)) { Write-Error "Missing manifest: $manifest"; exit 1 } + if (!(Test-Path $signature)) { Write-Error "Missing signature file: $signature"; exit 1 } + npx vsce verify-signature --packagePath "$vsix" --manifestPath "$manifest" --signaturePath "$signature" + if ($LASTEXITCODE -ne 0) { + Write-Error "vsce verify-signature failed with exit code $LASTEXITCODE" + exit $LASTEXITCODE + } else { + Write-Host "vsce verify-signature succeeded ✅" + } diff --git a/l10n/bundle.l10n.cs.json b/l10n/bundle.l10n.cs.json new file mode 100644 index 00000000..d6ce7eaf --- /dev/null +++ b/l10n/bundle.l10n.cs.json @@ -0,0 +1 @@ +{"Open logs":"Otevřít protokoly","Please select a Python interpreter.":"Vyberte prosím interpret Python.","Server failed to start.":"Spuštění serveru se nezdařilo."} diff --git a/l10n/bundle.l10n.de.json b/l10n/bundle.l10n.de.json new file mode 100644 index 00000000..389ebd42 --- /dev/null +++ b/l10n/bundle.l10n.de.json @@ -0,0 +1 @@ +{"Open logs":"Protokolle öffnen","Please select a Python interpreter.":"Wählen Sie einen Python-Interpreter aus.","Server failed to start.":"Fehler beim Starten des Servers."} diff --git a/l10n/bundle.l10n.es.json b/l10n/bundle.l10n.es.json new file mode 100644 index 00000000..9d6a8de8 --- /dev/null +++ b/l10n/bundle.l10n.es.json @@ -0,0 +1 @@ +{"Open logs":"Abrir registros","Please select a Python interpreter.":"Seleccione un intérprete de Python.","Server failed to start.":"No se ha podido iniciar el servidor."} diff --git a/l10n/bundle.l10n.fr.json b/l10n/bundle.l10n.fr.json new file mode 100644 index 00000000..b760b5c2 --- /dev/null +++ b/l10n/bundle.l10n.fr.json @@ -0,0 +1 @@ +{"Open logs":"Journaux ouverts","Please select a Python interpreter.":"Veuillez sélectionner un interpréteur Python.","Server failed to start.":"Le serveur n'a pas pu démarrer."} diff --git a/l10n/bundle.l10n.it.json b/l10n/bundle.l10n.it.json new file mode 100644 index 00000000..0c96539d --- /dev/null +++ b/l10n/bundle.l10n.it.json @@ -0,0 +1 @@ +{"Open logs":"Apri i log","Please select a Python interpreter.":"Seleziona un interprete Python.","Server failed to start.":"Impossibile avviare il server."} diff --git a/l10n/bundle.l10n.ja.json b/l10n/bundle.l10n.ja.json new file mode 100644 index 00000000..781a5540 --- /dev/null +++ b/l10n/bundle.l10n.ja.json @@ -0,0 +1 @@ +{"Open logs":"ログを開く","Please select a Python interpreter.":"Python インタープリターを選択してください。","Server failed to start.":"サーバーを起動できませんでした。"} diff --git a/l10n/bundle.l10n.ko.json b/l10n/bundle.l10n.ko.json new file mode 100644 index 00000000..d1348185 --- /dev/null +++ b/l10n/bundle.l10n.ko.json @@ -0,0 +1 @@ +{"Open logs":"로그 열기","Please select a Python interpreter.":"Python 인터프리터를 선택하세요.","Server failed to start.":"서버를 시작하지 못했습니다."} diff --git a/l10n/bundle.l10n.pl.json b/l10n/bundle.l10n.pl.json new file mode 100644 index 00000000..e70f4388 --- /dev/null +++ b/l10n/bundle.l10n.pl.json @@ -0,0 +1 @@ +{"Open logs":"Otwórz dzienniki","Please select a Python interpreter.":"Wybierz interpreter języka Python.","Server failed to start.":"Nie można uruchomić serwera."} diff --git a/l10n/bundle.l10n.pt-br.json b/l10n/bundle.l10n.pt-br.json new file mode 100644 index 00000000..caf37f52 --- /dev/null +++ b/l10n/bundle.l10n.pt-br.json @@ -0,0 +1 @@ +{"Open logs":"Abrir logs","Please select a Python interpreter.":"Selecione um interpretador do Python.","Server failed to start.":"Falha ao iniciar o servidor."} diff --git a/l10n/bundle.l10n.qps-ploc.json b/l10n/bundle.l10n.qps-ploc.json new file mode 100644 index 00000000..1a07c231 --- /dev/null +++ b/l10n/bundle.l10n.qps-ploc.json @@ -0,0 +1 @@ +{"Open logs":"Øpëñ løgs","Please select a Python interpreter.":"Plëæsë sëlëçt æ Pÿthøñ ïñtërprëtër.","Server failed to start.":"§ërvër fæïlëð tø stært."} diff --git a/l10n/bundle.l10n.ru.json b/l10n/bundle.l10n.ru.json new file mode 100644 index 00000000..11c09679 --- /dev/null +++ b/l10n/bundle.l10n.ru.json @@ -0,0 +1 @@ +{"Open logs":"Открыть журналы","Please select a Python interpreter.":"Выберите интерпретатор Python.","Server failed to start.":"Не удалось запустить сервер."} diff --git a/l10n/bundle.l10n.tr.json b/l10n/bundle.l10n.tr.json new file mode 100644 index 00000000..ae14aa11 --- /dev/null +++ b/l10n/bundle.l10n.tr.json @@ -0,0 +1 @@ +{"Open logs":"Günlükleri aç","Please select a Python interpreter.":"Lütfen bir Python yorumlayıcısı seçin.","Server failed to start.":"Sunucu başlatılamadı."} diff --git a/l10n/bundle.l10n.zh-cn.json b/l10n/bundle.l10n.zh-cn.json new file mode 100644 index 00000000..b5358565 --- /dev/null +++ b/l10n/bundle.l10n.zh-cn.json @@ -0,0 +1 @@ +{"Open logs":"打开日志","Please select a Python interpreter.":"请选择 Python 解释器。","Server failed to start.":"服务器无法启动。"} diff --git a/l10n/bundle.l10n.zh-tw.json b/l10n/bundle.l10n.zh-tw.json new file mode 100644 index 00000000..91ae2f44 --- /dev/null +++ b/l10n/bundle.l10n.zh-tw.json @@ -0,0 +1 @@ +{"Open logs":"開啟記錄","Please select a Python interpreter.":"請選取 Python 解譯器。","Server failed to start.":"伺服器無法啟動。"} diff --git a/package.json b/package.json index b729e4e8..2c9eb056 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "tests": "node ./out/test/ts_tests/runTest.js", "smoke-tests": "node ./out/test/ts_tests/runSmokeTest.js", "vsce-package": "vsce package -o black-formatter.vsix", + "vsce-package-pre": "vsce package -o black-formatter.vsix --pre-release", "vscode:prepublish": "npm run package", "watch": "webpack --watch", "watch-tests": "tsc -p . -w --outDir out" diff --git a/package.nls.cs.json b/package.nls.cs.json new file mode 100644 index 00000000..4148e849 --- /dev/null +++ b/package.nls.cs.json @@ -0,0 +1 @@ +{"command.restartServer":"Restartovat server","extension.description":"Podpora formátování souborů Pythonu pomocí formátovacího modulu Black.","settings.args.description":"Argumenty předané formátovacímu modulu Black pro formátování souborů Pythonu Každý argument by měl být v poli zadán jako samostatný řetězec. \n Příklad: \n `\"black-formatter.args\" = [\"--config\", \"\"]`","settings.cwd.description":"Nastaví aktuální pracovní adresář, který se používá k formátování souborů Pythonu pomocí formátovacího modulu Black. Standardně používá kořenový adresář pracovního prostoru ${workspaceFolder}. Můžete ho nastavit na ${fileDirname}, aby se jako pracovní adresář pro Black použila nadřazená složka souboru, který se formátuje.","settings.importStrategy.description":"Definuje, který binární soubor formátovacího modulu Black se má použít k formátování souborů Pythonu. Pokud je nastaveno na useBundled, rozšíření použije binární soubor formátovacího modulu Black, který je dodáván s rozšířením. Při nastavení na fromEnvironment se rozšíření pokusí použít binární soubor formátovacího modulu Black a všechny závislosti, které jsou k dispozici v aktuálně vybraném prostředí. **Poznámka**: Pokud rozšíření nemůže ve vybraném prostředí platný binární soubor formátovacího modulu Black najít, použije místo toho binární soubor dodávaný s rozšířením. Poznámka: Nastavení black-formatter.path má přednost a přepíše chování black-formatter.importStrategy.","settings.importStrategy.fromEnvironment.description":"Použijte binární soubor Black z vybraného prostředí Pythonu. Pokud rozšíření nenajde platný binární soubor Black, použije místo toho zkompletovanou verzi Black dodávanou s rozšířením.","settings.importStrategy.useBundled.description":"K formátování souborů Pythonu vždy použije dodávanou verzi souboru Black.","settings.interpreter.description":"Cesta ke spustitelnému souboru Pythonu nebo k příkazu, který se použije ke spuštění serveru Black a jakéhokoli podprocesu. Přijímá pole jednoho nebo více řetězců. Když se nastaví na [], rozšíření použije cestu k vybranému interpretu Pythonu. Při předání příkazu by měl být každý argument zadán jako samostatný řetězec v poli.","settings.path.description":"Cesta nebo příkaz, které má rozšíření použít k formátování souborů Pythonu pomocí formátovacího modulu Black. Přijímá pole jednoho nebo více řetězců. Při předání příkazu by měl být každý argument zadán jako samostatný řetězec v poli. Pokud je nastaveno na [\"black\"], použije se verze Black dostupná v proměnné prostředí PATH. Poznámka: Použití této možnosti může zpomalit formátování. \n Příklady: \n - `[\"~/global_env/black\"]` \n - `[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]`","settings.serverTransport.description":"Vybere transportní protokol, který má server Black používat. Pokud je nastaveno na stdio, bude rozšíření ke komunikaci se serverem Black používat standardní vstupní/výstupní streamy. Pokud je nastaveno na pipe, bude rozšíření ke komunikaci se serverem Black používat pojmenovaný kanál (ve Windows) nebo Unix Domain Socket (v Linuxu / na Macu). Transportní protokol stdio je výchozí a doporučenou možností pro většinu uživatelů.","settings.serverTransport.pipe.description":"Ke komunikaci se serverem Black použijte pojmenovaný kanál (ve Windows) a Unix Domain Socket (v Linuxu / na Macu).","settings.serverTransport.stdio.description":"Ke komunikaci se serverem Black použijte standardní vstupní a výstupní streamy.","settings.showNotifications.always.description":"Oznámení se zobrazují pro všechno, co se server rozhodne zobrazit při formátování souborů Pythonu.","settings.showNotifications.description":"Určuje, kdy toto rozšíření zobrazuje oznámení.","settings.showNotifications.off.description":"Všechna oznámení jsou vypnuta, všechny chyby nebo upozornění při formátování souborů Pythonu jsou však dostupné v protokolech.","settings.showNotifications.onError.description":"Oznámení se zobrazují jenom v případě chyby při formátování souborů Pythonu.","settings.showNotifications.onWarning.description":"Při formátování souborů Pythonu se zobrazují oznámení o všech chybách a upozorněních."} diff --git a/package.nls.de.json b/package.nls.de.json new file mode 100644 index 00000000..9c9fd231 --- /dev/null +++ b/package.nls.de.json @@ -0,0 +1 @@ +{"command.restartServer":"Server neu starten","extension.description":"Formatierungsunterstützung für Python-Dateien über Black-Formatierer.","settings.args.description":"Argumente, die an Black übergeben werden, um Python-Dateien zu formatieren. Jedes Argument sollte als separate Zeichenfolge im Array bereitgestellt werden. \n Beispiel: \n \"\"black-formatter.args\" = [\"--config\", \"\"]\"","settings.cwd.description":"Legt das aktuelle Arbeitsverzeichnis fest, das zum Formatieren von Python-Dateien mit Schwarz verwendet wird. Standardmäßig wird das Stammverzeichnis des Arbeitsbereichs \"${workspaceFolder}\" verwendet. Sie können es auf \"${fileDirname}\" festlegen, um den übergeordneten Ordner der Datei zu verwenden, die als Arbeitsverzeichnis für Schwarz formatiert wird.","settings.importStrategy.description":"Definiert, welche Black-Formatierungsbinärdatei zum Formatieren von Python-Dateien verwendet werden soll. Bei Festlegung auf \"useBundled\" verwendet die Erweiterung die Black-Formatiererbinärdatei, die mit der Erweiterung ausgeliefert wird. Bei Festlegung auf \"fromEnvironment\" versucht die Erweiterung, die Black-Formatierungsprogrammbinärdatei und alle Abhängigkeiten zu verwenden, die in der aktuell ausgewählten Umgebung verfügbar sind. **Hinweis**: Wenn die Erweiterung in der ausgewählten Umgebung keine gültige BlackFormatter-Binärdatei finden kann, wird ein Fallback auf die Verwendung der Binärdatei ausgeführt, die mit der Erweiterung ausgeliefert wird. Die Einstellung \"black-formatter.path\" hat Vorrang und überschreibt das Verhalten von \"black-formatter.importStrategy\".","settings.importStrategy.fromEnvironment.description":"Verwenden Sie die Black-Binärdatei aus der ausgewählten Python-Umgebung. Wenn die Erweiterung keine gültige Black-Binärdatei findet, wird ein Fallback auf die Verwendung der gebündelten Version von Black ausgeführt.","settings.importStrategy.useBundled.description":"Verwenden Sie immer die gebündelte Version von Black, um Python-Dateien zu formatieren.","settings.interpreter.description":"Pfad zu einer ausführbaren Python-Datei oder zu einem Befehl, der zum Starten des Black-Servers und eines beliebigen Unterprozesses verwendet wird. Akzeptiert ein Array aus einer einzelnen oder mehreren Zeichenfolgen. Bei Festlegung auf \"[]\" verwendet die Erweiterung den Pfad zum ausgewählten Python-Interpreter. Wenn Sie einen Befehl übergeben, sollte jedes Argument als separate Zeichenfolge im Array bereitgestellt werden.","settings.path.description":"Pfad oder Befehl, der von der Erweiterung zum Formatieren von Python-Dateien mit Black verwendet werden soll. Akzeptiert ein Array aus einer einzelnen oder mehreren Zeichenfolgen. Wenn Sie einen Befehl übergeben, sollte jedes Argument als separate Zeichenfolge im Array bereitgestellt werden. Bei Festlegung auf \"[\"black\"]\" wird die Version von Black verwendet, die in der Umgebungsvariablen \"PATH\" verfügbar ist. Hinweis: Die Verwendung dieser Option kann das Formatieren verlangsamen. \n Beispiele: \n – \"[\"~/global_env/black\"]\" \n – \"[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]\"","settings.serverTransport.description":"Wählt das Transportprotokoll aus, das vom Black-Server verwendet werden soll. Bei Festlegung auf „stdio“ verwendet die Erweiterung die standardmäßigen Eingabe-/Ausgabestreams, um mit dem Black-Server zu kommunizieren. Bei Festlegung auf „pipe“ verwendet die Erweiterung eine Named Pipe (unter Windows) oder Unix Domain Socket (unter Linux/Mac), um mit dem Black-Server zu kommunizieren. Das Transportprotokoll „stdio“ ist die Standardoption und wird für die meisten Benutzer empfohlen.","settings.serverTransport.pipe.description":"Verwenden Sie eine Named Pipe (unter Windows) und Unix Domain Socket (unter Linux/mac), um mit dem Black-Server zu kommunizieren.","settings.serverTransport.stdio.description":"Verwenden Sie die standardmäßigen Eingabe-/Ausgabestreams, um mit dem Black-Server zu kommunizieren.","settings.showNotifications.always.description":"Benachrichtigungen werden für alles angezeigt, was der Server beim Formatieren von Python-Dateien anzeigen will.","settings.showNotifications.description":"Steuert, wann Benachrichtigungen von dieser Erweiterung angezeigt werden.","settings.showNotifications.off.description":"Alle Benachrichtigungen sind deaktiviert. Alle Fehler oder Warnungen beim Formatieren von Python-Dateien sind weiterhin in den Protokollen verfügbar.","settings.showNotifications.onError.description":"Benachrichtigungen werden nur im Falle eines Fehlers beim Formatieren von Python-Dateien angezeigt.","settings.showNotifications.onWarning.description":"Beim Formatieren von Python-Dateien werden Benachrichtigungen zu Fehlern und Warnungen angezeigt."} diff --git a/package.nls.es.json b/package.nls.es.json new file mode 100644 index 00000000..61cbd947 --- /dev/null +++ b/package.nls.es.json @@ -0,0 +1 @@ +{"command.restartServer":"Reiniciar servidor","extension.description":"Compatibilidad con formato para archivos de Python con formateador Black.","settings.args.description":"Argumentos pasados a Black para dar formato a los archivos de Python. Cada argumento debe proporcionarse como una cadena independiente en la matriz. \n Ejemplo: \n `\"black-formatter.args\" = [\"--config\", \"\"]`","settings.cwd.description":"Establezca el directorio de trabajo actual que se usa para dar formato a los archivos de Python con Black. De manera predeterminada, se utiliza el directorio raíz del área de trabajo \"${workspaceFolder}\". Puede establecerlo en \"${fileDirname}\" para usar la carpeta principal del archivo que se está formateando como directorio de trabajo para Black.","settings.importStrategy.description":"Define qué binario de formateador negro se usará para dar formato a los archivos de Python. Cuando se establece en \"useBundled\", la extensión usará el binario de formateador Black que se incluye con la extensión. Cuando se establece en \"fromEnvironment\", la extensión intentará usar el binario de formateador Black y todas las dependencias que están disponibles en el entorno seleccionado actualmente.**Nota**: Si la extensión no encuentra un binario de formateador Black válido en el entorno seleccionado, se revertirá al uso del binario que se incluye con la extensión. El valor \"black-formatter.path\" tiene prioridad e invalida el comportamiento de \"black-formatter.importStrategy\".","settings.importStrategy.fromEnvironment.description":"Use el binario de Black del entorno de Python seleccionado. Si la extensión no encuentra un binario de Black válido, volverá a usar la versión empaquetada de Black.","settings.importStrategy.useBundled.description":"Use siempre la versión empaquetada de Black para dar formato a los archivos de Python.","settings.interpreter.description":"Ruta de acceso a un ejecutable de Python o un comando que se usará para iniciar el servidor Black y cualquier subproceso. Acepta una matriz de una o varias cadenas. Cuando se establece en '[]', la extensión usará la ruta de acceso al intérprete de Python seleccionado. Si pasa un comando, cada argumento debe proporcionarse como una cadena independiente en la matriz.","settings.path.description":"Ruta de acceso o comando que usará la extensión para dar formato a los archivos de Python con Black. Acepta una matriz de una o varias cadenas. Si pasa un comando, cada argumento debe proporcionarse como una cadena independiente en la matriz. Si se establece en \"[\"black\"]\", usará la versión de Black disponible en la variable de entorno \"PATH\". Nota: El uso de esta opción puede ralentizar el formato. \n Ejemplos: \n - `[\"~/global_env/black\"]` \n - `[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]`","settings.serverTransport.description":"Selecciona el protocolo de transporte que usará el servidor Black. Cuando se establece en \"stdio\", la extensión usará las secuencias de entrada y salida estándar para comunicarse con el servidor Black. Cuando se establece en \"pipe\", la extensión usa una canalización con nombre (en Windows) o un socket de dominio Unix (en Linux/Mac) para comunicarse con el servidor Black. El protocolo de transporte 'stdio' es la opción predeterminada y recomendada para la mayoría de los usuarios.","settings.serverTransport.pipe.description":"Use una canalización con nombre (en Windows) y un socket de dominio Unix (en Linux/Mac) para comunicarse con el servidor Black.","settings.serverTransport.stdio.description":"Use las secuencias de entrada/salida estándares para comunicarse con el servidor Black.","settings.showNotifications.always.description":"Las notificaciones se muestran para cualquier cosa que el servidor elija mostrar al dar formato a los archivos de Python.","settings.showNotifications.description":"Controla cuándo se muestran las notificaciones mediante esta extensión.","settings.showNotifications.off.description":"Todas las notificaciones están desactivadas, los errores o las advertencias al formatear archivos de Python siguen estando disponibles en los registros.","settings.showNotifications.onError.description":"Las notificaciones solo se muestran en caso de error al dar formato a archivos de Python.","settings.showNotifications.onWarning.description":"Se muestran notificaciones de los errores y advertencias al dar formato a archivos de Python."} diff --git a/package.nls.fr.json b/package.nls.fr.json new file mode 100644 index 00000000..5abb9e2d --- /dev/null +++ b/package.nls.fr.json @@ -0,0 +1 @@ +{"command.restartServer":"Redémarrer le serveur","extension.description":"Prise en charge du formatage des fichiers Python à l’aide du formateur Black.","settings.args.description":"Arguments passés à Black pour la mise en forme des fichiers Python. Chaque argument doit être fourni en tant que chaîne distincte dans le tableau. \n Exemple : \n `\"black-formatter.args\" = [\"--config\", \"\"]`","settings.cwd.description":"Définit le répertoire de travail actuel utilisé pour formater les fichiers Python avec Black. Par défaut, il utilise le répertoire racine de l'espace de travail `${workspaceFolder}`. Vous pouvez le définir sur `${fileDirname}` pour utiliser le dossier parent du fichier en cours de formatage comme répertoire de travail pour Black.","settings.importStrategy.description":"Définit le binaire du formateur Black à utiliser pour mettre en forme des fichiers Python. Lorsque la valeur est « useBundled », l’extension utilise le binaire de formateur Black fourni avec l’extension. Lorsqu’elle est définie sur `fromEnvironment`, l’extension tente d’utiliser le binaire du formateur Black et toutes les dépendances disponibles dans l’environnement actuellement sélectionné. **Remarque** : si l’extension ne trouve pas de binaire de formateur Black valide dans l’environnement sélectionné, elle revient à l’utilisation du binaire fourni avec l’extension. Le paramètre « black-formatter.path » est prioritaire et remplace le comportement de « black-formatter.importStrategy ».","settings.importStrategy.fromEnvironment.description":"Utilisez le binaire Black de l’environnement Python sélectionné. Si l’extension ne parvient pas à trouver un binaire Black valide, elle utilise la version groupée de Black.","settings.importStrategy.useBundled.description":"Utilisez toujours la version groupée de Black pour mettre en forme des fichiers Python.","settings.interpreter.description":"Chemin d’un exécutable Python ou d’une commande qui sera utilisée pour lancer le serveur Black et tous les sous-processus. Accepte un tableau d’une ou plusieurs chaînes. Quand la valeur est '[]', l’extension utilise le chemin de l’interpréteur Python sélectionné. Si vous passez une commande, chaque argument doit être fourni sous la forme d’une chaîne distincte dans le tableau.","settings.path.description":"Chemin d’accès ou commande à utiliser par l’extension pour mettre en forme des fichiers Python avec Black. Accepte un tableau d’une ou plusieurs chaînes. Si vous passez une commande, chaque argument doit être fourni sous la forme d’une chaîne distincte dans le tableau. Si la valeur est `[\"black\"]`, elle utilise la version de Black disponible dans la variable d’environnement `PATH`. Remarque : l’utilisation de cette option peut ralentir la mise en forme. \n Exemples : \n - '[\"~/global_env/black\"]' \n - `[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]`","settings.serverTransport.description":"Permet de sélectionner le protocole de transport à utiliser par le serveur noir. Quand la valeur est définies sur `stdio`, l’extension utilise les flux d’entrée/sortie standard pour communiquer avec le serveur noir. Quand la valeur est définies sur `pipe`, l’extension utilise un canal nommé (sur Windows) ou un socket de domaine Unix (sur Linux/Mac) pour communiquer avec le serveur noir. Le protocole de transport `stdio` est l’option par défaut et celle recommandée pour la plupart des utilisateurs.","settings.serverTransport.pipe.description":"Utilisez un canal nommé (sur Windows) et un socket de domaine Unix (sur Linux/mac) pour communiquer avec le serveur noir.","settings.serverTransport.stdio.description":"Utilisez les flux d’entrée/sortie standard pour communiquer avec le serveur noir.","settings.showNotifications.always.description":"Les notifications s’affichent pour tout ce que le serveur choisit d’afficher lors de la mise en forme des fichiers Python.","settings.showNotifications.description":"Contrôle quand les notifications sont affichées par cette extension.","settings.showNotifications.off.description":"Toutes les notifications sont désactivées, les erreurs ou avertissements lors de la mise en forme des fichiers Python sont toujours disponibles dans les journaux.","settings.showNotifications.onError.description":"Les notifications s’affichent uniquement en cas d’erreur lors de la mise en forme des fichiers Python.","settings.showNotifications.onWarning.description":"Les notifications s’affichent pour les erreurs et avertissements lors de la mise en forme des fichiers Python."} diff --git a/package.nls.it.json b/package.nls.it.json new file mode 100644 index 00000000..0a890cab --- /dev/null +++ b/package.nls.it.json @@ -0,0 +1 @@ +{"command.restartServer":"Riavvia server","extension.description":"Supporto della formattazione per i file Python con il formattatore Black.","settings.args.description":"Argomenti passati a Black per formattare i file Python. Ogni argomento deve essere fornito come stringa separata nella matrice. \n Esempio: \n `\"black-formatter.args\" = [\"--config\", \"\"]`","settings.cwd.description":"Imposta la directory di lavoro corrente usata per formattare i file Python con Black. Per impostazione predefinita, usa la directory radice dell’area di lavoro `${workspaceFolder}`. È possibile impostare su `${fileDirname}` per usare la cartella padre del file per cui viene effettuata la formattazione come directory di lavoro perBlack.","settings.importStrategy.description":"Definisce il file binario del formattatore Black da usare per formattare i file Python. Quando impostata su `useBundled`, l'estensione userà il file binario del formattatore Black fornito con l'estensione. Se impostata su 'fromEnvironment', l'estensione tenterà di usare il file binario del formattatore Black e tutte le dipendenze disponibili nell'ambiente attualmente selezionato. **Nota**: se l'estensione non riesce a trovare un file binario formattatore Black valido nell'ambiente selezionato, verrà riportata all'uso del file binario fornito con l'estensione. L'impostazione 'black-formatter.path' ha la precedenza ed esegue l'override del comportamento di 'black-formatter.importStrategy'.","settings.importStrategy.fromEnvironment.description":"Usare il file binario nero dall'ambiente Python selezionato. Se l'estensione non riesce a trovare un file binario di Black valido, verrà eseguito il fallback all'uso della versione in bundle di Black.","settings.importStrategy.useBundled.description":"Usare sempre la versione in bundle di Black per formattare i file Python.","settings.interpreter.description":"Percorso di un eseguibile Python o di un comando che verrà usato per avviare il server Black e qualsiasi sottoprocesso. Accetta una matrice di una o più stringhe. Se impostata su '[]', l'estensione userà il percorso dell'interprete Python selezionato. Se si passa un comando, ogni argomento deve essere fornito come stringa separata nella matrice.","settings.path.description":"Percorso o comando che l'estensione deve usare per formattare i file Python con Black. Accetta una matrice di una o più stringhe. Se si passa un comando, ogni argomento deve essere fornito come stringa separata nella matrice. Se impostato su '[\"black\"]', userà la versione di Black disponibile nella variabile di ambiente 'PATH'. Nota: l'uso di questa opzione può rallentare la formattazione. \n Esempi: \n - `[\"~/global_env/black\"]` \n - `[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]`","settings.serverTransport.description":"Seleziona il protocollo di trasporto da utilizzare per il server Black. Se questa opzione è impostata su 'stdio', l'estensione userà i flussi di input/output standard per comunicare con il server Black. Se impostata su 'pipe', l'estensione userà un named pipe (in Windows) o un socket di dominio Unix (in Linux/Mac) per comunicare con il server Black. Il protocollo di trasporto 'stdio' è l'opzione predefinita e consigliata per la maggior parte degli utenti.","settings.serverTransport.pipe.description":"Usa un named pipe (in Windows) e un socket di dominio Unix (in Linux/mac) per comunicare con il server Black.","settings.serverTransport.stdio.description":"Usa i flussi di input/output standard per comunicare con il server Black.","settings.showNotifications.always.description":"Le notifiche vengono visualizzate per tutti gli elementi che il server sceglie di visualizzare durante la formattazione dei file Python.","settings.showNotifications.description":"Controlla quando mostrare le notifiche da questa estensione.","settings.showNotifications.off.description":"Tutte le notifiche sono disattivate, ma eventuali errori o avvisi durante la formattazione dei file Python sono ancora disponibili nei log.","settings.showNotifications.onError.description":"Le notifiche vengono visualizzate solo in caso di errore durante la formattazione dei file Python.","settings.showNotifications.onWarning.description":"Le notifiche vengono visualizzate per eventuali errori e avvisi durante la formattazione dei file Python."} diff --git a/package.nls.ja.json b/package.nls.ja.json new file mode 100644 index 00000000..adb9751e --- /dev/null +++ b/package.nls.ja.json @@ -0,0 +1 @@ +{"command.restartServer":"サーバーの再起動","extension.description":"Black フォーマッタを使用した Python ファイルの書式設定のサポート。","settings.args.description":"Python ファイルを書式設定するために Black に渡される引数。各引数は、配列内の個別の文字列として指定する必要があります。\n例:\n`\"black-formatter.args\" = [\"--config\", \"\"]`","settings.cwd.description":"Black で Python ファイルのフォーマットに使用する現在の作業ディレクトリを設定します。既定では、ワークスペース `${workspaceFolder}` のルート ディレクトリが使用されます。ファイルの親フォルダーを Black の作業ディレクトリとして使用するには、'${fileDirname}' に設定します。","settings.importStrategy.description":"Python ファイルの書式設定に使用する Black フォーマッタ バイナリを定義します。'useBundled' に設定すると、拡張機能に付属する Black フォーマッタ バイナリが使用されます。'fromEnvironment' に設定すると、拡張機能は Black フォーマッタ バイナリと、現在選択されている環境で使用可能なすべての依存関係の使用を試みます。**注**: 選択した環境で有効な Black フォーマッタ バイナリが見つからない場合、拡張機能に付属するバイナリを使用するようにフォールバックします。'black-formatter.path' 設定が優先され、'black-formatter.importStrategy' の動作がオーバーライドされます。","settings.importStrategy.fromEnvironment.description":"選択した Python 環境の Black バイナリを使用します。拡張機能で有効な Black バイナリが見つからない場合は、バンドルされたバージョンの Black を使用するようにフォールバックします。","settings.importStrategy.useBundled.description":"バンドルされたバージョンの Black を常に使用して、Python ファイルをフォーマットします。","settings.interpreter.description":"Python 実行可能ファイル、または Black サーバーと任意のサブプロセスの起動に使用されるコマンドへのパス。単一または複数の文字列の配列を受け入れます。`[]` に設定すると、拡張機能は選択した Python インタープリターへのパスを使用します。コマンドを渡す場合は、各引数を配列内の個別の文字列として指定する必要があります。","settings.path.description":"Python ファイルを Black でフォーマットするために拡張機能で使用されるパスまたはコマンド。単一または複数の文字列の配列を受け入れます。コマンドを渡す場合は、各引数を配列内の個別の文字列として指定する必要があります。'[\"black\"]' に設定すると、'PATH' 環境変数で使用可能な Black のバージョンが使用されます。注: このオプションを使用すると、書式設定が遅くなる可能性があります。\n 例:\n - `[\"~/global_env/black\"]`\n - `[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]`","settings.serverTransport.description":"Black サーバーで使用するトランスポート プロトコルを選択します。`stdio` に設定すると、拡張機能は標準の入出力ストリームを使用して Black サーバーと通信します。`pipe` に設定すると、拡張機能は名前付きパイプ (Windows 上) または Unix ドメイン ソケット (Linux/Mac) を使用して Black サーバーと通信します。`stdio` トランスポート プロトコルは、ほとんどのユーザーにとっておすすめのオプションです。","settings.serverTransport.pipe.description":"名前付きパイプ (Windows 上) と Unix ドメイン ソケット (Linux/Mac) を使用して、Black サーバーと通信します。","settings.serverTransport.stdio.description":"標準の入出力ストリームを使用して Black サーバーと通信します。","settings.showNotifications.always.description":"通知は、サーバーが Python ファイルの書式設定時に表示することを選択した場合に表示されます。","settings.showNotifications.description":"この拡張機能によって通知が表示されるタイミングを制御します。","settings.showNotifications.off.description":"すべての通知がオフになり、Python ファイルの書式設定時にエラーや警告はログで引き続き使用できます。","settings.showNotifications.onError.description":"通知は、Python ファイルの書式設定時にエラーが発生した場合にのみ表示されます。","settings.showNotifications.onWarning.description":"Python ファイルを書式設定するときに、エラーと警告の通知が表示されます。"} diff --git a/package.nls.ko.json b/package.nls.ko.json new file mode 100644 index 00000000..fd592697 --- /dev/null +++ b/package.nls.ko.json @@ -0,0 +1 @@ +{"command.restartServer":"서버 다시 시작","extension.description":"Black 포맷터를 사용하여 Python 파일에 대한 서식 지정 지원","settings.args.description":"Python 파일의 서식을 지정하기 위해 Black에 전달된 인수입니다. 각 인수는 배열에서 별도의 문자열로 제공되어야 합니다. \n 예: \n `\"black-formatter.args\" = [\"--config\", \"\"]`","settings.cwd.description":"Python 파일의 서식을 Black으로 지정하는 데 사용되는 현재 작업 디렉터리를 설정합니다. 기본적으로 '${workspaceFolder}' 작업 영역의 루트 디렉터리를 사용합니다. '${fileDirname}'(으)로 설정하여 Black의 작업 디렉터리로 서식이 지정되는 파일의 부모 폴더를 사용할 수 있습니다.","settings.importStrategy.description":"Python 파일의 서식을 지정하는 데 사용할 Black 포맷터 이진을 정의합니다. 'useBundled'로 설정하면 확장은 확장과 함께 제공되는 Black 포맷터 이진을 사용합니다. 'fromEnvironment'로 설정하면 확장에서 현재 선택한 환경에서 사용할 수 있는 모든 종속성과 Black 포맷터 이진을 사용하려고 합니다. **참고**: 확장이 선택한 환경에서 유효한 Black 포맷터 이진을 찾을 수 없는 경우 확장과 함께 제공되는 이진을 사용하는 것으로 대체됩니다. 'black-formatter.path' 설정이 우선적으로 적용되고 'black-formatter.importStrategy'의 동작을 재정의합니다.","settings.importStrategy.fromEnvironment.description":"선택한 Python 환경에서 Black 이진을 사용합니다. 확장이 유효한 Black 이진을 찾지 못하면 번들 버전의 Black을 사용하도록 대체됩니다.","settings.importStrategy.useBundled.description":"Python 파일의 서식을 지정하려면 항상 번들 버전의 Black을 사용하십시오.","settings.interpreter.description":"Black 서버 및 모든 하위 프로세스를 시작하는 데 사용할 Python 실행 파일 또는 명령의 경로입니다. 단일 또는 여러 문자열의 배열을 허용합니다. '[]'로 설정하면 확장에서 선택한 Python 인터프리터로의 경로를 사용합니다. 명령을 전달하는 경우 각 인수는 배열에서 별도의 문자열로 제공되어야 합니다.","settings.path.description":"확장에서 Python 파일의 서식을 Black으로 지정하는 데 사용할 경로 또는 명령입니다. 단일 또는 여러 문자열의 배열을 허용합니다. 명령을 전달하는 경우 각 인수는 배열에서 별도의 문자열로 제공되어야 합니다. '[\"black\"]'으로 설정하면 'PATH' 환경 변수에서 사용할 수 있는 Black 버전을 사용합니다. 참고: 이 옵션을 사용하면 서식 지정이 느려질 수 있습니다. \n 예: \n - `[\"~/global_env/black\"]` \n - `[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]`","settings.serverTransport.description":"Black 서버에서 사용할 전송 프로토콜을 선택합니다. 'stdio'로 설정하면 확장에서 표준 입출력 스트림을 사용하여 Black 서버와 통신합니다. 'pipe'로 설정하면 확장에서 명명된 파이프(Windows) 또는 Unix 도메인 소켓(Linux/Mac)을 사용하여 Black 서버와 통신합니다. 'stdio' 전송 프로토콜은 대부분의 사용자에게 기본 및 권장 옵션입니다.","settings.serverTransport.pipe.description":"명명된 파이프(Windows)와 Unix 도메인 소켓(Linux/Mac)을 사용하여 Black 서버와 통신합니다.","settings.serverTransport.stdio.description":"표준 입출력 스트림을 사용하여 Black 서버와 통신합니다.","settings.showNotifications.always.description":"Python 파일의 서식을 지정할 때 서버에서 표시하도록 선택한 모든 항목에 대한 알림이 표시됩니다.","settings.showNotifications.description":"이 확장에서 알림을 표시하는 시기를 제어합니다.","settings.showNotifications.off.description":"모든 알림이 꺼져 있으며 Python 파일 서식을 지정할 때 발생하는 오류 또는 경고는 로그에서 계속 사용할 수 있습니다.","settings.showNotifications.onError.description":"알림은 Python 파일의 서식을 지정할 때 오류가 발생한 경우에만 표시됩니다.","settings.showNotifications.onWarning.description":"Python 파일의 서식을 지정할 때 오류 및 경고에 대한 알림이 표시됩니다."} diff --git a/package.nls.pl.json b/package.nls.pl.json new file mode 100644 index 00000000..b82f6991 --- /dev/null +++ b/package.nls.pl.json @@ -0,0 +1 @@ +{"command.restartServer":"Ponowne uruchamianie serwera","extension.description":"Obsługa formatowania plików w języku Python przy użyciu narzędzia do formatowania Black.","settings.args.description":"Argumenty przekazane do narzędzia Black na potrzeby formatowania plików w języku Python. Każdy argument powinien być podany jako oddzielny ciąg w tablicy. \n Przykład: \n „\"black-formatter.args\" = [\"--config\", \"\"]”","settings.cwd.description":"Ustawia bieżący katalog roboczy używany do formatowania plików języka Python przy użyciu programu Black. Domyślnie używa katalogu głównego obszaru roboczego „${workspaceFolder}”. Możesz ustawić dla niego wartość „${fileDirname}”, aby użyć folderu nadrzędnego pliku sformatowanego jako katalog roboczy dla programu Black.","settings.importStrategy.description":"Definiuje, które dane binarne narzędzia do formatowania Black mają być używane do formatowania plików w języku Python. Po ustawieniu wartości na „useBundled” rozszerzenie będzie używać danych binarnych narzędzia Black dostarczonych z rozszerzeniem. Po ustawieniu wartości na „fromEnvironment” rozszerzenie podejmie próbę użycia danych binarnych narzędzia do formatowania Black i wszystkich zależności dostępnych w obecnie wybranym środowisku. **Uwaga**: Jeśli rozszerzenie nie może znaleźć prawidłowych danych binarnych narzędzia do formatowania Black w wybranym środowisku, nastąpi powrót do użycia danych binarnych dostarczonych z rozszerzeniem. Ustawienie „black-formatter.path” ma pierwszeństwo i przesłania zachowanie elementu „black-formatter.importStrategy”.","settings.importStrategy.fromEnvironment.description":"Użyj danych binarnych narzędzia Black z wybranego środowiska języka Python. Jeśli rozszerzenie nie może odnaleźć prawidłowych danych binarnych narzędzia Black, powróci do używania dołączonej do pakietu wersji narzędzia Black.","settings.importStrategy.useBundled.description":"Zawsze formatuj pliki w języku Python przy użyciu dołączonego do pakietu narzędzia Black.","settings.interpreter.description":"Ścieżka do pliku wykonywalnego w języku Python lub polecenia, które będzie używane do uruchamiania serwera narzędzia Black i dowolnego podprocesu. Akceptuje tablicę jednego lub wielu ciągów. Po ustawieniu wartości „[]” rozszerzenie użyje ścieżki do wybranego interpretera języka Python. W przypadku przekazywania polecenia każdy argument powinien być dostarczany jako oddzielny ciąg w tablicy.","settings.path.description":"Ścieżka lub polecenie, które ma być używane przez rozszerzenie do formatowania plików w języku Python za pomocą narzędzia Black. Akceptuje tablicę jednego lub wielu ciągów. W przypadku przekazywania polecenia każdy argument powinien być dostarczany jako oddzielny ciąg w tablicy. W przypadku ustawienia wartości „[\"black\"]” będzie używana wersja narzędzia Black dostępna w zmiennej środowiskowej „PATH”. Uwaga: użycie tej opcji może spowolnić formatowanie. \n Przykłady: \n — „[\"~/global_env/black\"]” \n — „[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]”","settings.serverTransport.description":"Wybiera protokół transportu, który ma być używany przez serwer Black. Po ustawieniu opcji „stdio” rozszerzenie będzie używać standardowych strumieni wejściowych/wyjściowych do komunikowania się z serwerem Black. Po ustawieniu opcji „pipe” rozszerzenie będzie używać nazwanego potoku (w systemie Windows) lub gniazda domeny Unix (w systemie Linux/Mac) do komunikowania się z serwerem Black. Protokół transportu „stdio” jest domyślną i rekomendowaną opcją dla większości użytkowników.","settings.serverTransport.pipe.description":"Użyj nazwanego potoku (w systemie Windows) i gniazda domeny Unix (w systemie Linux/Mac) do komunikacji z serwerem Black.","settings.serverTransport.stdio.description":"Użyj standardowych strumieni wejściowych/wyjściowych, aby komunikować się z serwerem Black.","settings.showNotifications.always.description":"Powiadomienia są wyświetlane dla wszystkiego, co serwer wybierze do wyświetlenia podczas formatowania plików w języku Python.","settings.showNotifications.description":"Określa, kiedy powiadomienia są wyświetlane przez to rozszerzenie.","settings.showNotifications.off.description":"Wszystkie powiadomienia są wyłączone, wszelkie błędy lub ostrzeżenia podczas formatowania plików w języku Python są nadal dostępne w dziennikach.","settings.showNotifications.onError.description":"Powiadomienia są wyświetlane tylko w przypadku błędu podczas formatowania plików w języku Python.","settings.showNotifications.onWarning.description":"Podczas formatowania plików w języku Python wyświetlane są powiadomienia o błędach i ostrzeżeniach."} diff --git a/package.nls.pt-br.json b/package.nls.pt-br.json new file mode 100644 index 00000000..2765a4a2 --- /dev/null +++ b/package.nls.pt-br.json @@ -0,0 +1 @@ +{"command.restartServer":"Reiniciar Servidor","extension.description":"Suporte à formatação dos arquivos Python usando o formatador Black.","settings.args.description":"Argumentos passados para Black para formatar arquivos Python. Cada argumento deverá ser fornecido como uma cadeia de caracteres separada na matriz. \n Exemplo: \n `\"black-formatter.args\" = [\"--config\", \"\"]`","settings.cwd.description":"Define o diretório de trabalho atual usado para formatar arquivos Python com Black. Por padrão, ele usa o diretório raiz do workspace “${workspaceFolder}”. Você pode configurá-lo para “${fileDirname}” para usar a pasta pai do arquivo que está sendo formatado como o diretório de trabalho para Black.","settings.importStrategy.description":"Define qual binário de formatador Black será usado para formatar arquivos Python. Quando definida como \"useBundled\", a extensão usará o binário de formatador Black que é enviado com ela. Quando definida como \"fromEnvironment\", a extensão tentará usar o binário de formatador Black e todas as dependências disponíveis no ambiente selecionado no momento. **Observação**: se a extensão não encontrar um binário de formatador Black válido no ambiente selecionado, fará fallback para usar o binário fornecido com ela. A configuração \"black-formattter.path\" tem precedência e substitui o comportamento de \"black-formattter.importStrategy\".","settings.importStrategy.fromEnvironment.description":"Use o binário Black do ambiente Python selecionado. Se a extensão não encontrar um binário Black válido, ela voltará a usar a versão agrupada do Black.","settings.importStrategy.useBundled.description":"Sempre use a versão agrupada do Black para formatar arquivos Python.","settings.interpreter.description":"Caminho para um executável do Python ou um comando que será usado para iniciar o servidor Black e qualquer subprocesso. Aceita uma matriz de uma ou várias cadeias de caracteres. Quando definida como \"[]\", a extensão usará o caminho para o interpretador do Python selecionado. Se passar um comando, cada argumento deverá ser fornecido como uma cadeia de caracteres separada na matriz.","settings.path.description":"O caminho ou o comando a ser usado pela extensão para formatar arquivos Python com Black. Aceita uma matriz de uma ou várias cadeias de caracteres. Se passar um comando, cada argumento deverá ser fornecido como uma cadeia de caracteres separada na matriz. Se definido como `[\"mypy\"]`, ele usará a versão do Black disponível na variável de ambiente \"PATH\". Observação: usar essa opção pode tornar a formatação lenta. \n Exemplos: \n - `[\"~/global_env/black\"]` \n - `[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]`","settings.serverTransport.description":"Seleciona o protocolo de transporte a ser usado pelo servidor Black. Quando definida como ''stdio'', a extensão usará os fluxos de entrada/saída padrão para se comunicar com o servidor Black. Quando definida como ''pipe'', a extensão usará um pipe nomeado (no Windows) ou um Soquete de Domínio Unix (em Linux/Mac) para se comunicar com o servidor Black. O protocolo de transporte ''stdio'' é a opção padrão e recomendada para a maioria dos usuários.","settings.serverTransport.pipe.description":"Use um pipe nomeado (no Windows) e um Soquete de Domínio Unix (no Linux/Mac) para se comunicar com o servidor Black.","settings.serverTransport.stdio.description":"Use os fluxos de entrada/saída padrão para se comunicar com o servidor Black.","settings.showNotifications.always.description":"As notificações são mostradas para qualquer coisa que o servidor opte por mostrar ao formatar arquivos Python.","settings.showNotifications.description":"Controla quando as notificações são mostradas por esta extensão.","settings.showNotifications.off.description":"Todas as notificações são desativadas e quaisquer erros ou avisos ao formatar arquivos Python ainda estão disponíveis nos logs.","settings.showNotifications.onError.description":"As notificações são mostradas somente no caso de um erro ao formatar arquivos Python.","settings.showNotifications.onWarning.description":"As notificações são mostradas para quaisquer erros e avisos ao formatar arquivos Python."} diff --git a/package.nls.qps-ploc.json b/package.nls.qps-ploc.json new file mode 100644 index 00000000..d1593df1 --- /dev/null +++ b/package.nls.qps-ploc.json @@ -0,0 +1 @@ +{"command.restartServer":"Rëstært §ërvër","extension.description":"Førmættïñg sµppørt før Pÿthøñ fïlës µsïñg thë ßlæçk førmættër.","settings.args.description":"Ærgµmëñts pæssëð tø ßlæçk tø førmæt Pÿthøñ fïlës. Ëæçh ærgµmëñt shøµlð þë prøvïðëð æs æ sëpærætë strïñg ïñ thë ærræÿ. \n Ëxæmplë: \n `\"þlæçk-førmættër.ærgs\" = [\"--çøñfïg\", \"\"]`","settings.cwd.description":"§ëts thë çµrrëñt wørkïñg ðïrëçtørÿ µsëð tø førmæt Pÿthøñ fïlës wïth ßlæçk. ßÿ ðëfæµlt, ït µsës thë røøt ðïrëçtørÿ øf thë wørkspæçë `${wørkspæçëFølðër}`. Ýøµ çæñ sët ït tø `${fïlëÐïrñæmë}` tø µsë thë pærëñt følðër øf thë fïlë þëïñg førmættëð æs thë wørkïñg ðïrëçtørÿ før ßlæçk.","settings.importStrategy.description":"Ðëfïñës whïçh ßlæçk førmættër þïñærÿ tø þë µsëð tø førmæt Pÿthøñ fïlës. Whëñ sët tø `µsëßµñðlëð`, thë ëxtëñsïøñ wïll µsë thë ßlæçk førmættër þïñærÿ thæt ïs shïppëð wïth thë ëxtëñsïøñ. Whëñ sët tø `frømËñvïrøñmëñt`, thë ëxtëñsïøñ wïll ættëmpt tø µsë thë ßlæçk førmættër þïñærÿ æñð æll ðëpëñðëñçïës thæt ærë ævæïlæþlë ïñ thë çµrrëñtlÿ sëlëçtëð ëñvïrøñmëñt. **Ñøtë**: Ïf thë ëxtëñsïøñ çæñ't fïñð æ vælïð ßlæçk førmættër þïñærÿ ïñ thë sëlëçtëð ëñvïrøñmëñt, ït wïll fællþæçk tø µsïñg thë þïñærÿ thæt ïs shïppëð wïth thë ëxtëñsïøñ. Thë `þlæçk-førmættër.pæth` sëttïñg tækës prëçëðëñçë æñð øvërrïðës thë þëhævïør øf `þlæçk-førmættër.ïmpørt§trætëgÿ`.","settings.importStrategy.fromEnvironment.description":"Üsë thë ßlæçk þïñærÿ frøm thë sëlëçtëð Pÿthøñ ëñvïrøñmëñt. Ïf thë ëxtëñsïøñ fæïls tø fïñð æ vælïð ßlæçk þïñærÿ, ït wïll fællþæçk tø µsïñg thë þµñðlëð vërsïøñ øf ßlæçk.","settings.importStrategy.useBundled.description":"Ælwæÿs µsë thë þµñðlëð vërsïøñ øf ßlæçk tø førmæt Pÿthøñ fïlës.","settings.interpreter.description":"Pæth tø æ Pÿthøñ ëxëçµtæþlë ør æ çømmæñð thæt wïll þë µsëð tø læµñçh thë ßlæçk sërvër æñð æñÿ sµþprøçëss. Æççëpts æñ ærræÿ øf æ sïñglë ør mµltïplë strïñgs. Whëñ sët tø `[]`, thë ëxtëñsïøñ wïll µsë thë pæth tø thë sëlëçtëð Pÿthøñ ïñtërprëtër. Ïf pæssïñg æ çømmæñð, ëæçh ærgµmëñt shøµlð þë prøvïðëð æs æ sëpærætë strïñg ïñ thë ærræÿ.","settings.path.description":"Pæth ør çømmæñð tø þë µsëð þÿ thë ëxtëñsïøñ tø førmæt Pÿthøñ fïlës wïth ßlæçk. Æççëpts æñ ærræÿ øf æ sïñglë ør mµltïplë strïñgs. Ïf pæssïñg æ çømmæñð, ëæçh ærgµmëñt shøµlð þë prøvïðëð æs æ sëpærætë strïñg ïñ thë ærræÿ. Ïf sët tø `[\"þlæçk\"]`, ït wïll µsë thë vërsïøñ øf ßlæçk ævæïlæþlë ïñ thë `PÆTH` ëñvïrøñmëñt værïæþlë. Ñøtë: Üsïñg thïs øptïøñ mæÿ sløwðøwñ førmættïñg. \n Ëxæmplës: \n - `[\"~/gløþæl_ëñv/þlæçk\"]` \n - `[\"çøñðæ\", \"rµñ\", \"-ñ\", \"lïñt_ëñv\", \"pÿthøñ\", \"-m\", \"þlæçk\"]`","settings.serverTransport.description":"§ëlëçts thë træñspørt prøtøçøl tø þë µsëð þÿ thë ßlæçk sërvër. Whëñ sët tø `stðïø`, thë ëxtëñsïøñ wïll µsë thë stæñðærð ïñpµt/øµtpµt strëæms tø çømmµñïçætë wïth thë ßlæçk sërvër. Whëñ sët tø `pïpë`, thë ëxtëñsïøñ wïll µsë æ ñæmëð pïpë (øñ Wïñðøws) ør Üñïx Ðømæïñ §øçkët (øñ £ïñµx/Mæç) tø çømmµñïçætë wïth thë ßlæçk sërvër. Thë `stðïø` træñspørt prøtøçøl ïs thë ðëfæµlt æñð rëçømmëñðëð øptïøñ før møst µsërs.","settings.serverTransport.pipe.description":"Üsë æ ñæmëð pïpë (øñ wïñðøws) æñð Üñïx Ðømæïñ §øçkët (øñ lïñµx/mæç) tø çømmµñïçætë wïth thë ßlæçk sërvër.","settings.serverTransport.stdio.description":"Üsë thë stæñðærð ïñpµt/øµtpµt strëæms tø çømmµñïçætë wïth thë ßlæçk sërvër.","settings.showNotifications.always.description":"Ñøtïfïçætïøñs ærë shøw før æñÿthïñg thæt thë sërvër çhøøsës tø shøw whëñ førmættïñg Pÿthøñ fïlës.","settings.showNotifications.description":"Çøñtrøls whëñ ñøtïfïçætïøñs ærë shøwñ þÿ thïs ëxtëñsïøñ.","settings.showNotifications.off.description":"Æll ñøtïfïçætïøñs ærë tµrñëð øff, æñÿ ërrørs ør wærñïñgs whëñ førmættïñg Pÿthøñ fïlës ærë stïll ævæïlæþlë ïñ thë løgs.","settings.showNotifications.onError.description":"Ñøtïfïçætïøñs ærë shøwñ øñlÿ ïñ thë çæsë øf æñ ërrør whëñ førmættïñg Pÿthøñ fïlës.","settings.showNotifications.onWarning.description":"Ñøtïfïçætïøñs ærë shøwñ før æñÿ ërrørs æñð wærñïñgs whëñ førmættïñg Pÿthøñ fïlës."} diff --git a/package.nls.ru.json b/package.nls.ru.json new file mode 100644 index 00000000..8d73b105 --- /dev/null +++ b/package.nls.ru.json @@ -0,0 +1 @@ +{"command.restartServer":"Перезапустить сервер","extension.description":"Поддержка форматирования файлов Python с использованием форматировщика Black.","settings.args.description":"Аргументы, передаваемые в Black для форматирования файлов Python. Каждый аргумент должен быть указан как отдельная строка в массиве. \n Пример: \n `\"black-formatter.args\" = [\"--config\", \"\"]`","settings.cwd.description":"Устанавливает текущий рабочий каталог, используемый для форматирования файлов Python с помощью Black. По умолчанию используется корневой каталог рабочей области \"${workspaceFolder}\". Вы можете установить для него значение \"${fileDirname}\", чтобы использовать родительскую папку форматируемого файла в качестве рабочего каталога для Black.","settings.importStrategy.description":"Определяет двоичный файл форматировщика Black, который будет использоваться для форматирования файлов Python. Если настроено значение \"useBundled\", расширение будет использовать двоичный файл форматировщика Black, поставляемый вместе с расширением. Если настроено значение \"fromEnvironment\", расширение попытается использовать двоичный файл форматировщика Black и все зависимости, доступные в выбранной среде. **Примечание**. Если расширение не может найти допустимый двоичный файл форматировщика Black в выбранной среде, оно откатится к использованию двоичного файла, который поставляется с расширением. Параметр \"black-formatter.path\" имеет приоритет и переопределяет поведение \"black-formatter.importStrategy\".","settings.importStrategy.fromEnvironment.description":"Используйте двоичный файл Black из выбранной среды Python. Если расширению не удается найти допустимый двоичный файл Black, оно будет использовать пакетную версию Black.","settings.importStrategy.useBundled.description":"Для форматирования файлов Python всегда используйте пакетную версию Black.","settings.interpreter.description":"Путь к исполняемому файлу Python или команде, которая будет использоваться для запуска сервера Black и всех подпроцессов. Принимает массив из одной или нескольких строк. Если задано значение \"[]\", расширение будет использовать путь к выбранному интерпретатору Python. При передаче команды каждый аргумент должен быть указан как отдельная строка в массиве.","settings.path.description":"Путь или команда, используемые расширением для форматирования файлов Python с помощью Black. Принимает массив из одной или нескольких строк. При передаче команды каждый аргумент должен быть указан как отдельная строка в массиве. Если задан параметр [\"black\"], будет использоваться версия Black, доступная в переменной среды PATH. Примечание. Использование этого параметра может привести к замедлению форматирования. \n Примеры: \n - `[\"~/global_env/black\"]` \n - `[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]`","settings.serverTransport.description":"Выбирает транспортный протокол, используемый сервером Black. Если настроено значение \"stdio\", расширение будет использовать стандартные потока ввода/вывода для связи с сервером Black. Если настроено значение \"pipe\", расширение будет использовать именованный канал (в Windows) или сокет домена Unix (на Linux/Mac) для связи с сервером Black. Транспортный протокол \"stdio\" используется по умолчанию и рекомендуется для большинства пользователей.","settings.serverTransport.pipe.description":"Используйте именованный канал (в Windows) и сокет домена Unix (на Linux/Mac) для связи с сервером Black.","settings.serverTransport.stdio.description":"Используйте стандартные потоки ввода/вывода для связи с сервером Black.","settings.showNotifications.always.description":"Уведомления демонстрируются для всех элементов, которые сервер выбирает для отображения при форматировании файлов Python.","settings.showNotifications.description":"Определяет, когда уведомления отображаются этим расширением.","settings.showNotifications.off.description":"Все уведомления отключены, все ошибки и предупреждения форматирования файлов Python по-прежнему доступны в журналах.","settings.showNotifications.onError.description":"Уведомления отображаются только в случае ошибки при форматировании файлов Python.","settings.showNotifications.onWarning.description":"Уведомления отображаются для любых ошибок и предупреждений при форматировании файлов Python."} diff --git a/package.nls.tr.json b/package.nls.tr.json new file mode 100644 index 00000000..c79bac5b --- /dev/null +++ b/package.nls.tr.json @@ -0,0 +1 @@ +{"command.restartServer":"Sunucuyu Yeniden Başlatın","extension.description":"Black biçimlendirici kullanan Python dosyaları için biçimlendirme desteği.","settings.args.description":"Python dosyalarını biçimlendirmek için Black'e geçirilen bağımsız değişkenler. Her bağımsız değişken dizide ayrı bir dize olarak sağlanmalıdır. \n Örnek: \n `\"black-formatter.args\" = [\"--config\", \"\"]`","settings.cwd.description":"Python dosyalarını Black ile biçimlendirmek için kullanılan geçerli çalışma dizinini ayarlar. Varsayılan olarak, '${workspaceFolder}' çalışma alanının kök dizinini kullanır. Black için çalışma dizini olarak biçimlendirilen dosyanın üst klasörünü kullanmak için `${fileDirname}` olarak ayarlayabilirsiniz.","settings.importStrategy.description":"Python dosyalarını biçimlendirmek için kullanılacak Siyah biçimlendirici ikili dosyasını tanımlar. `useBundled` olarak ayarlandığında uzantı, uzantıyla birlikte gönderilen Black biçimlendirici ikili dosyasını kullanır. 'fromEnvironment' olarak ayarlandığında uzantı, Black biçimlendirici ikili dosyasını ve şu anda seçili olan ortamda kullanılabilen tüm bağımlılıkları kullanmaya çalışılır. **Not**: Uzantı, seçili ortamda geçerli bir Black biçimlendirici ikili dosyası bulamazsa, uzantıyla birlikte gönderilen ikili dosyayı kullanmaya geri döner. `black-formatter.path` ayarı önceliklidir ve `black-formatter.importStrategy` davranışını geçersiz kılar.","settings.importStrategy.fromEnvironment.description":"Seçili Python ortamındaki Siyah ikili dosyayı kullanın. Uzantı geçerli bir Black ikili dosyası bulamazsa, Black'in paketlenmiş sürümünü kullanmaya geri döner.","settings.importStrategy.useBundled.description":"Python dosyalarını biçimlendirmek için her zaman Black'in paketlenmiş sürümünü kullanın.","settings.interpreter.description":"Black sunucusunu ve herhangi bir alt işlemi başlatmak için kullanılacak bir Python yürütülebilir dosyasının veya komutun yolu. Tek veya birden çok dizenin dizisini kabul eder. `[]` olarak ayarlandığında, uzantı seçili Python yorumlayıcısının yolunu kullanır. Komut geçiriliyorsa her bağımsız değişken dizide ayrı birer dize olarak sağlanmalıdır.","settings.path.description":"Python dosyalarını Black ile biçimlendirmek için uzantı tarafından kullanılacak yol veya komut. Tek veya birden çok dizenin dizisini kabul eder. Komut geçiriliyorsa her bağımsız değişken dizide ayrı birer dize olarak sağlanmalıdır. `[\"black\"]` olarak ayarlanırsa, `PATH` ortam değişkeninde bulunan Black sürümünü kullanır. Not: Bu seçeneğin kullanılması biçimlendirme işlemini yavaşlatabilir. \n Örnekler: \n - `[\"~/global_env/black\"]` \n - `[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]`","settings.serverTransport.description":"Black sunucusu tarafından kullanılacak aktarım protokolünü seçer. `stdio` olarak ayarlandığında uzantı, Black sunucusuyla iletişim kurmak için standart giriş/çıkış akışlarını kullanır. 'pipe' olarak ayarlandığında uzantı, Black sunucusuyla iletişim kurmak için bir adlandırılmış kanal (Windows üzerinde) veya Unix Etki Alanı Yuvası (Linux/Mac üzerinde) kullanır. 'stdio' aktarım protokolü, çoğu kullanıcı için varsayılan ve önerilen seçenektir.","settings.serverTransport.pipe.description":"Black sunucusuyla iletişim kurmak için adlandırılmış kanal (windows üzerinde) ve Unix Etki Alanı Yuvası (linux/mac üzerinde) kullanın.","settings.serverTransport.stdio.description":"Black sunucusuyla iletişim kurmak için standart giriş/çıkış akışlarını kullanın.","settings.showNotifications.always.description":"Bildirimler, Python dosyaları biçimlendirilirken, sunucunun göstermeyi seçtiği her şey için gösterilir.","settings.showNotifications.description":"Bildirimlerin bu uzantı tarafından ne zaman gösterileceğini kontrol eder.","settings.showNotifications.off.description":"Tüm bildirimler kapatıldı, Python dosyaları biçimlendirilirken tüm hatalar veya uyarılar hâlâ günlüklerde mevcuttur.","settings.showNotifications.onError.description":"Bildirimler, yalnızca Python dosyaları biçimlendirilirken bir hata oluşması durumunda gösterilir.","settings.showNotifications.onWarning.description":"Python dosyaları biçimlendirilirken hatalar ve uyarılar için bildirimler gösterilir."} diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json new file mode 100644 index 00000000..d49e3d0a --- /dev/null +++ b/package.nls.zh-cn.json @@ -0,0 +1 @@ +{"command.restartServer":"重启服务器","extension.description":"使用 Black 格式化程序对 Python 文件进行格式支持。","settings.args.description":"传递给 Black 以格式化 Python 文件的参数。应在数组中将每个参数作为单独的字符串提供。\n示例:\n`\"black-formatter.args\" = [\"--config\", \"\"]`","settings.cwd.description":"设置用于用 Black 格式化 Python 文件的当前工作目录。默认情况下,它使用工作区`${workspaceFolder}`的根目录。可以将其设置为`${fileDirname}`,以使用作为 Black 工作目录的 lint 分析文件的父文件夹。","settings.importStrategy.description":"定义要用于格式化 Python 文件的 Black 格式化程序二进制文件。当设置为`useBundled`时,扩展将使用随附于扩展的 Black 格式化程序二进制文件。设置为`fromEnvironment`时,扩展将尝试使用 Black 格式化程序二进制文件和当前所选环境中可用的所有依赖项。**注意**: 如果扩展在所选环境中找不到有效的 Black 格式化程序二进制文件,它将回退到使用随扩展附带的二进制文件。`black-formatter.path`设置优先,将替代`black-formatter.importStrategy`的行为。","settings.importStrategy.fromEnvironment.description":"使用所选 Python 环境中的 Black 二进制文件。如果扩展找不到有效的 Black 二进制文件,它将回退到使用捆绑版 Black。","settings.importStrategy.useBundled.description":"始终使用捆绑版本的 Black 来设置 Python 文件的格式。","settings.interpreter.description":"Python 可执行文件或将用于启动 Black 服务器和任何子进程的命令的路径。接受单个或多个字符串的数组。设置为`[]`时,扩展将使用所选 Python 解释器的路径。如果传递命令,则应在数组中将每个参数作为单独的字符串提供。","settings.path.description":"扩展使用 Black 对 Python 文件进行格式化时所使用的路径或命令。接受单个或多个字符串的数组。如果传递命令,则应在数组中将每个参数作为单独的字符串提供。如果设置为`[\"black\"]`,它将使用`PATH`环境变量中可用的 Black 版本。注意: 使用此选项可能会减慢格式化速度。\n 示例:\n - `[\"~/global_env/black\"]`\n - `[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]`","settings.serverTransport.description":"选择 Black 服务器要使用的传输协议。设置为“stdio”时,扩展将使用标准输入/输出流与 Black 服务器通信。设置为“pipe”时,扩展将使用命名管道(在 Windows 上)或 Unix 域套接字(在 Linux/Mac 上)与 Black 服务器通信。“stdio”传输协议是大多数用户的默认和推荐选项。","settings.serverTransport.pipe.description":"使用命名管道(在 Windows 上)和 Unix 域套接字(在 Linux/Mac 上)与 Black 服务器通信。","settings.serverTransport.stdio.description":"使用标准输入/输出流与 Black 服务器通信。","settings.showNotifications.always.description":"在格式化 Python 文件时,服务器选择显示的任何内容都会显示通知。","settings.showNotifications.description":"控制此扩展显示通知的时间。","settings.showNotifications.off.description":"所有通知均已关闭,但在格式化 Python 文件时出现的任何错误或警告仍可在日志中找到。","settings.showNotifications.onError.description":"仅当格式化 Python 文件时出现错误时,才会显示通知。","settings.showNotifications.onWarning.description":"对 Python 文件进行格式化时,会显示任何错误和警告的通知。"} diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json new file mode 100644 index 00000000..597f3654 --- /dev/null +++ b/package.nls.zh-tw.json @@ -0,0 +1 @@ +{"command.restartServer":"重新啟動伺服器","extension.description":"使用 Black 格式器對 Python 檔案進行格式化支援。","settings.args.description":"傳遞至 Black 以格式化 Python 檔案的引數。每個引數都應該在陣列中以個別字串形式提供。\n範例:\n`\"black-formatter.args\" = [\"--config\", \"\"]`","settings.cwd.description":"設定用來格式化具有 Black 的 Python 檔案的目前工作目錄。根據預設,它會使用工作區 '${workspaceFolder}' 的根目錄。您可以將它設定為 '${fileDirname}' 以使用要格式化為 Black 工作目錄之檔案的父資料夾。","settings.importStrategy.description":"定義要用來格式化 Python 檔案的 Black 格式器二進位。當設為 'useBundled' 時,延伸模組會使用延伸模組隨附的 Black 格式器二進位。當設為 'fromEnvironment' 時,延伸模組會嘗試使用目前選取環境中可用的 Black 格式器二進位與所有相依性。**注意**: 如果延伸模組在選取的環境中找不到有效的 Black 格式器二進位,則會使用延伸模組隨附的二進位遞補。'lack-formatter.path' 設定的優先順序較高,並且會覆寫 'black-formatter.importStrategy' 的行為。","settings.importStrategy.fromEnvironment.description":"使用選取之 Python 環境的 Black 二進位。如果延伸模組找不到有效的 Black 二進位,則會使用 Black 的套件組合版本遞補。","settings.importStrategy.useBundled.description":"一律使用 Black 的套件組合版本來格式化 Python 檔案。","settings.interpreter.description":"用來啟動 Black 伺服器及任何子流程的 Python 可執行檔或命令的路徑。接受單一或多個字串的陣列。當設為 '[]' 時,延伸模組會使用選取 Python 解譯器的路徑。如果傳遞命令,每個引數都應該在陣列中以個別字串形式提供。","settings.path.description":"延伸模組會使用以透過 Black 來格式化 Python 檔案的路徑或命令。接受單一或多個字串的陣列。如果傳遞命令,每個引數都應該在陣列中以個別字串形式提供。如果設為 `[\"black\"]`,它會使用 'PATH' 環境變數中可用的 Black 版本。注意: 使用此選項可能會使格式化變慢。\n 範例:\n - `[\"~/global_env/black\"]`\n - `[\"conda\", \"run\", \"-n\", \"lint_env\", \"python\", \"-m\", \"black\"]`","settings.serverTransport.description":"選取 Black 伺服器要使用的傳輸通訊協定。設定為 `stdio` 時,延伸模組會使用標準輸入/輸出資料流與 Black 伺服器通訊。當設定為 `pipe` 時,延伸模組將使用具名管道 (在 Windows 上) 或 Unix 網域通訊端 (在 Linux/Mac 上) 來與 Black 伺服器通訊。`stdio` 傳輸通訊協定是大多數用戶的預設和建議選項。","settings.serverTransport.pipe.description":"使用具名管道 (在 Windows 上) 和 Unix 網域通訊端 (在 linux/mac 上) 與 Black 伺服器通訊。","settings.serverTransport.stdio.description":"使用標準輸入/輸出資料流與 Black 伺服器通訊。","settings.showNotifications.always.description":"格式化 Python 檔案時,會為伺服器選擇要顯示的的任何內容顯示通知。","settings.showNotifications.description":"控制此擴充功能何時顯示通知。","settings.showNotifications.off.description":"已關閉所有通知,記錄中仍可使用任何格式化 Python 檔案時的錯誤或警告。","settings.showNotifications.onError.description":"只有在格式化 Python 檔案而發生錯誤時才會顯示通知。","settings.showNotifications.onWarning.description":"格式化 Python 檔案時,會顯示任何錯誤和警告的通知。"} diff --git a/packages.config b/packages.config new file mode 100644 index 00000000..6055d985 --- /dev/null +++ b/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 6fb7a2620cf76278ce9431991414ba3ea3e16ac0 Mon Sep 17 00:00:00 2001 From: bschnurr Date: Wed, 26 Nov 2025 18:14:57 -0800 Subject: [PATCH 2/3] update signing --- build/azure-devdiv-pipeline.pre-release.yml | 6 ++-- build/azure-devdiv-pipeline.stable.yml | 22 ++++++------ build/templates/sign.yml | 37 ++++++++++++++------- 3 files changed, 39 insertions(+), 26 deletions(-) diff --git a/build/azure-devdiv-pipeline.pre-release.yml b/build/azure-devdiv-pipeline.pre-release.yml index d37beec2..a03b7acf 100644 --- a/build/azure-devdiv-pipeline.pre-release.yml +++ b/build/azure-devdiv-pipeline.pre-release.yml @@ -69,13 +69,13 @@ extends: - task: npmAuthenticate@0 inputs: workingFile: .npmrc - + - script: npm config get registry displayName: Verify NPM Registry - task: NodeTool@0 inputs: - versionSpec: '22.x' + versionSpec: '22.17.0' checkLatest: true displayName: Select Node 22 LTS @@ -113,6 +113,7 @@ extends: workingDirectory: $(Build.StagingDirectory)\drop signType: real verifySignature: true + teamName: $(TeamName) - ${{ if eq(parameters.publishExtension, true) }}: - template: build/templates/publish.yml@self @@ -123,4 +124,3 @@ extends: signatureName: extension.signature.p7s publishFolder: drop preRelease: true - diff --git a/build/azure-devdiv-pipeline.stable.yml b/build/azure-devdiv-pipeline.stable.yml index 36538208..baa18b23 100644 --- a/build/azure-devdiv-pipeline.stable.yml +++ b/build/azure-devdiv-pipeline.stable.yml @@ -30,7 +30,7 @@ extends: codeSignValidation: enabled: true sbom: - enabled: false # Disable global SBOM generation; we'll enable selectively per artifact output + enabled: false # Disable global SBOM generation; we'll enable selectively per artifact output pool: name: AzurePipelines-EO os: windows @@ -61,7 +61,7 @@ extends: steps: - task: NodeTool@0 inputs: - versionSpec: '22.x' + versionSpec: '22.17.0' checkLatest: true displayName: Select Node 22 LTS - task: UsePythonVersion@0 @@ -98,14 +98,14 @@ extends: workingDirectory: $(Build.StagingDirectory)\drop signType: real verifySignature: true + teamName: $(TeamName) - ${{ if eq(parameters.publishExtension, true) }}: - - template: build/templates/publish.yml@self - parameters: - azureSubscription: PylancePublishPipelineSecureConnectionWithManagedIdentity - vsixName: $(VsixName) - manifestName: extension.manifest - signatureName: extension.signature.p7s - publishFolder: drop - preRelease: false - + - template: build/templates/publish.yml@self + parameters: + azureSubscription: PylancePublishPipelineSecureConnectionWithManagedIdentity + vsixName: $(VsixName) + manifestName: extension.manifest + signatureName: extension.signature.p7s + publishFolder: drop + preRelease: false diff --git a/build/templates/sign.yml b/build/templates/sign.yml index f3c7f83b..fc292248 100644 --- a/build/templates/sign.yml +++ b/build/templates/sign.yml @@ -5,12 +5,10 @@ # vsixName: black-formatter.vsix # workingDirectory: $(Build.SourcesDirectory) # signType: real -# Note: vsce CLI is invoked via 'npx vsce' (devDependency), no global install required. - parameters: - name: vsixName type: string - default: black-formatter.vsix + default: autopep8.vsix - name: manifestName type: string default: extension.manifest @@ -29,11 +27,11 @@ parameters: - name: prepareRoot type: boolean default: true - # vsceVersion parameter removed; rely on pinned devDependency version via npx. + - name: teamName + type: string + default: VSCode-autopep8 steps: - # vsce CLI expected to be installed by parent pipeline; no local install here. - - task: NuGetToolInstaller@1 displayName: Install NuGet @@ -43,7 +41,7 @@ steps: command: restore restoreSolution: '$(Build.SourcesDirectory)/packages.config' restoreDirectory: '$(Build.SourcesDirectory)/packages' - + - powershell: | New-Item -ItemType Directory -Path "$(Build.StagingDirectory)\drop" -Force | Out-Null; Copy-Item "$(Build.SourcesDirectory)\$(VsixName)" "$(Build.StagingDirectory)\drop\$(VsixName)" -Force; if (!(Test-Path "$(Build.StagingDirectory)\drop\$(VsixName)")) { Write-Error 'VSIX copy failed'; exit 1 }; Get-Item "$(Build.StagingDirectory)\drop\$(VsixName)" | Format-Table Name,Length,LastWriteTime -AutoSize displayName: Copy VSIX into drop @@ -69,15 +67,30 @@ steps: $sig = Join-Path $wd $signatureName if (!(Test-Path $sig)) { Write-Warning "Signature placeholder missing (will attempt signing anyway)." } - # Deprecated prepareRoot step removed: we now sign directly in workingDirectory by overriding BaseOutputDirectory. + # ✅ Added MicroBuildSigningPlugin for PME enforcement + - task: MicroBuildSigningPlugin@4 + displayName: Enable MicroBuild Signing + inputs: + signType: ${{ parameters.signType }} # 'real' or 'test' + zipSources: false + feedSource: 'https://devdiv.pkgs.visualstudio.com/DefaultCollection/_packaging/MicroBuildToolset/nuget/v3/index.json' + ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)' + ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + TeamName: ${{ parameters.teamName }} - task: MSBuild@1 displayName: Run signing (MSBuild) inputs: solution: '$(Build.SourcesDirectory)/build/sign.proj' - msbuildArguments: '/verbosity:detailed /bl:"${{ parameters.workingDirectory }}\\signing.binlog" /p:SignType=${{ parameters.signType }} /p:BaseOutputDirectory=${{ parameters.workingDirectory }} /p:OutDir=${{ parameters.workingDirectory }} /p:IntermediateOutputPath=${{ parameters.workingDirectory }}\\intermediate' - - # No copy-back needed; signing outputs now land directly in workingDirectory. + msbuildArguments: > + /verbosity:detailed + /bl:"${{ parameters.workingDirectory }}\\signing.binlog" + /p:SignType=${{ parameters.signType }} + /p:BaseOutputDirectory=${{ parameters.workingDirectory }} + /p:OutDir=${{ parameters.workingDirectory }} + /p:IntermediateOutputPath=${{ parameters.workingDirectory }}\\intermediate - task: PowerShell@2 displayName: Post-sign inspection @@ -132,7 +145,7 @@ steps: if (!(Test-Path $vsix)) { Write-Error "Missing VSIX: $vsix"; exit 1 } if (!(Test-Path $manifest)) { Write-Error "Missing manifest: $manifest"; exit 1 } if (!(Test-Path $signature)) { Write-Error "Missing signature file: $signature"; exit 1 } - npx vsce verify-signature --packagePath "$vsix" --manifestPath "$manifest" --signaturePath "$signature" + npx @vscode/vsce verify-signature --packagePath "$vsix" --manifestPath "$manifest" --signaturePath "$signature" if ($LASTEXITCODE -ne 0) { Write-Error "vsce verify-signature failed with exit code $LASTEXITCODE" exit $LASTEXITCODE From 1664cf8c4de90cc0e148ad5c24aecc37c32a03ec Mon Sep 17 00:00:00 2001 From: bschnurr Date: Fri, 28 Nov 2025 10:35:47 -0800 Subject: [PATCH 3/3] format --- build/azure-devdiv-pipeline.stable.yml | 2 +- package.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/build/azure-devdiv-pipeline.stable.yml b/build/azure-devdiv-pipeline.stable.yml index baa18b23..59258d13 100644 --- a/build/azure-devdiv-pipeline.stable.yml +++ b/build/azure-devdiv-pipeline.stable.yml @@ -15,7 +15,7 @@ variables: value: VSCode-black-formatter - name: VsixName value: black-formatter.vsix - + parameters: - name: publishExtension displayName: 🚀 Publish Extension diff --git a/package.json b/package.json index 2c9eb056..454c1310 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "compile": "webpack", "compile-tests": "tsc -p . --outDir out", "format-check": "prettier --check 'src/**/*.ts' 'build/**/*.yml' '.github/**/*.yml'", + "fix-format": "prettier --write 'src/**/*.ts' 'build/**/*.yml' '.github/**/*.yml'", "lint": "eslint src --ext ts", "package": "webpack --mode production --devtool hidden-source-map", "pretest": "npm run compile-tests && npm run compile && npm run lint",