diff --git a/azure-pipelines/Get-GitHubAppToken.ps1 b/azure-pipelines/Get-GitHubAppToken.ps1 new file mode 100644 index 000000000..f55135f43 --- /dev/null +++ b/azure-pipelines/Get-GitHubAppToken.ps1 @@ -0,0 +1,87 @@ +[CmdletBinding()] +param( + [Parameter(Mandatory = $true)] + [string] $KeyVaultName, + + [Parameter(Mandatory = $true)] + [string] $KeyName, + + [Parameter(Mandatory = $true)] + [string] $AppClientId, + + [Parameter(Mandatory = $true)] + [string] $InstallationOwner, + + [Parameter(Mandatory = $true)] + [string] $OutputVariableName +) + +$ErrorActionPreference = 'Stop' +$PSNativeCommandUseErrorActionPreference = $true + +function ConvertTo-Base64Url([byte[]] $bytes) { + return [Convert]::ToBase64String($bytes).TrimEnd('=').Replace('+', '-').Replace('/', '_') +} + +$jwtHeader = [ordered]@{ + alg = 'RS256' + typ = 'JWT' +} +$now = [System.DateTimeOffset]::UtcNow +$jwtPayload = [ordered]@{ + iat = $now.AddMinutes(-1).ToUnixTimeSeconds() + exp = $now.AddMinutes(5).ToUnixTimeSeconds() + iss = $AppClientId +} + +$headerEncoded = ConvertTo-Base64Url ([System.Text.Encoding]::UTF8.GetBytes(($jwtHeader | ConvertTo-Json -Compress))) +$payloadEncoded = ConvertTo-Base64Url ([System.Text.Encoding]::UTF8.GetBytes(($jwtPayload | ConvertTo-Json -Compress))) +$signingInput = "$headerEncoded.$payloadEncoded" + +$sha256 = [System.Security.Cryptography.SHA256]::Create() +$digestBytes = $sha256.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($signingInput)) +$digestBase64 = [Convert]::ToBase64String($digestBytes) + +Write-Host "Signing GitHub App JWT with key '$KeyName' in vault '$KeyVaultName'..." +$signResponseJson = az keyvault key sign ` + --vault-name $KeyVaultName ` + --name $KeyName ` + --algorithm RS256 ` + --digest $digestBase64 ` + --output json +if ($LASTEXITCODE -ne 0 -or [string]::IsNullOrWhiteSpace($signResponseJson)) { + throw "'az keyvault key sign' failed with exit code $LASTEXITCODE for key '$KeyName' in vault '$KeyVaultName'." +} + +$signResponse = $signResponseJson | ConvertFrom-Json +if ([string]::IsNullOrWhiteSpace($signResponse.signature)) { + throw "Key Vault returned an empty signature for key '$KeyName' in vault '$KeyVaultName'." +} + +$signatureEncoded = $signResponse.signature.TrimEnd('=').Replace('+', '-').Replace('/', '_') +$jwt = "$signingInput.$signatureEncoded" +$headers = @{ + Authorization = "Bearer $jwt" + 'X-GitHub-Api-Version' = '2022-11-28' + Accept = 'application/vnd.github+json' + 'User-Agent' = 'vscode-csharp-onelocbuild' +} + +Write-Host "Looking up the GitHub App installation for '$InstallationOwner'..." +$installations = Invoke-RestMethod -Uri 'https://api.github.com/app/installations' -Headers $headers -Method Get +$installation = $installations | Where-Object { $_.account.login -eq $InstallationOwner } | Select-Object -First 1 +if (-not $installation) { + throw "No GitHub App installation found for '$InstallationOwner'." +} + +$tokenResponse = Invoke-RestMethod ` + -Uri "https://api.github.com/app/installations/$($installation.id)/access_tokens" ` + -Headers $headers ` + -Method Post ` + -ContentType 'application/json' +if ([string]::IsNullOrWhiteSpace($tokenResponse.token)) { + throw "GitHub returned an empty installation token for '$InstallationOwner'." +} + +Write-Host "Got an installation token for '$InstallationOwner' that expires at $($tokenResponse.expires_at)." +Write-Host "##vso[task.setvariable variable=$OutputVariableName;issecret=true]$($tokenResponse.token)" diff --git a/azure-pipelines/loc.yml b/azure-pipelines/loc.yml index 59eb12003..936b89957 100644 --- a/azure-pipelines/loc.yml +++ b/azure-pipelines/loc.yml @@ -28,7 +28,7 @@ resources: ref: refs/tags/release variables: -# Variable group contains the PAT to LOC +# Variable group contains the credential for the localization package source. - group: OneLocBuildVariables extends: @@ -42,7 +42,7 @@ extends: networkIsolationPolicy: Permissive,CFSClean stages: - stage: LocalizationStage - condition: eq(variables['Build.SourceBranch'], 'refs/heads/main') + #condition: eq(variables['Build.SourceBranch'], 'refs/heads/main') jobs: - job: Localization templateContext: @@ -86,7 +86,20 @@ extends: LclPackageId: 'LCL-JUNO-PROD-VSCODECS' - pwsh: npm run l10nDevImportXlf displayName: 'Import xlf to json.' + - task: AzureCLI@2 + displayName: 'Get GitHub App installation token' + inputs: + azureSubscription: 'dnceng-oneloc-githubapp' + scriptType: pscore + scriptLocation: inlineScript + inlineScript: | + & "$(Build.SourcesDirectory)/azure-pipelines/Get-GitHubAppToken.ps1" ` + -KeyVaultName 'EngKeyVault' ` + -KeyName 'oneloc-localization-app-key' ` + -AppClientId 'Iv23lijBU8x3gc9lDOc9' ` + -InstallationOwner 'dotnet' ` + -OutputVariableName 'GitHubAppInstallationToken' - pwsh: npm run publishLocalizationContent -- --userName dotnet-bot --email dotnet-bot@dotnetfoundation.org --commitSha $(Build.SourceVersion) --targetRemoteRepo vscode-csharp --baseBranch 'main' displayName: 'Create PR in GitHub.' env: - GitHubPAT: $(BotAccount-dotnet-bot-repo-PAT) + GitHubToken: $(GitHubAppInstallationToken) diff --git a/package.nls.cs.json b/package.nls.cs.json index 7f75e2322..f1a680a3a 100644 --- a/package.nls.cs.json +++ b/package.nls.cs.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "Znovu spustit zdrojové generátory", "command.csharp.showDecompilationTerms": "Zobrazit smlouvu o podmínkách dekompilátoru", "command.dotnet.generateAssets.currentProject": "Generovat prostředky pro sestavení a ladění", - "command.dotnet.openSolution": "Otevřít řešení", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "Restartovat jazykový server", "command.dotnet.restore.all": "Obnovit všechny projekty", "command.dotnet.restore.project": "Obnovit projekt", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "Určuje, jestli se mají při určování verze, která se má použít pro načtení projektu, zahrnout verze Preview sady .NET SDK. Použije se, pokud je parametr useModernNet nastavený na hodnotu true.", "configuration.omnisharp.sdkPath": "Určuje cestu k instalaci sady .NET SDK, která se použije pro načítání projektu místo nejvyšší nainstalované verze. Použije se, pokud je parametr useModernNet nastavený na hodnotu true. Příklad: /home/username/dotnet/sdks/6.0.300.", "configuration.omnisharp.sdkVersion": "Určuje verzi sady .NET SDK, která se použije pro načtení projektu namísto nejvyšší nainstalované verze. Použije se, pokud je parametr useModernNet nastavený na hodnotu true. Příklad: 6.0.300", - "configuration.omnisharp.useEditorFormattingSettings": "Určuje, jestli má server OmniSharp používat nastavení editoru VS Code pro formátování kódu C# (použití tabulátorů, velikost odsazení).", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": "Použijte build serveru OmniSharp pro .NET 6. Tato verze _nepodporuje_ projekty .NET Framework, které nejsou ve stylu sady SDK, včetně Unity. U projektů Framework, .NET Core a .NET 5+, které jsou ve stylu sady SDK, byste měli zaznamenat výrazné zlepšení výkonu.", "configuration.omnisharp.useModernNet.title": "Použít build serveru OmniSharp pro .NET 6", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "Zobrazit všechny akce kódu C# v souborech Razor. Tyto akce nejsou v Razoru otestované a po použití můžou způsobit syntaktické chyby. Pokud k tomu dojde, nahlaste prosím chybu.", diff --git a/package.nls.de.json b/package.nls.de.json index 5e8becdb1..43b7a2565 100644 --- a/package.nls.de.json +++ b/package.nls.de.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "Quellgeneratoren erneut ausführen", "command.csharp.showDecompilationTerms": "Vereinbarung zu den Decompilerbedingungen anzeigen", "command.dotnet.generateAssets.currentProject": "Ressourcen für Build und Debuggen generieren", - "command.dotnet.openSolution": "Projektmappe öffnen", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "Sprachserver neu starten", "command.dotnet.restore.all": "Alle Projekte wiederherstellen", "command.dotnet.restore.project": "Projekt wiederherstellen", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "Gibt an, ob Vorschauversionen des .NET SDK einbezogen werden sollen, wenn bestimmt wird, welche Version zum Laden des Projekts verwendet werden soll. Gilt, wenn „useModernNet“ auf TRUE festgelegt ist.", "configuration.omnisharp.sdkPath": "Gibt den Pfad zu einer .NET SDK-Installation an, die für das Laden von Projekten anstelle der höchsten installierten Version verwendet werden soll. Gilt, wenn „useModernNet“ auf TRUE festgelegt ist. Beispiel: /home/username/dotnet/sdks/6.0.300.", "configuration.omnisharp.sdkVersion": "Gibt die Version des .NET SDK an, die für das Laden von Projekten anstelle der höchsten installierten Version verwendet werden soll. Gilt, wenn „useModernNet“ auf TRUE festgelegt ist. Beispiel: 6.0.300.", - "configuration.omnisharp.useEditorFormattingSettings": "Gibt an, ob OmniSharp VS Code-Editoreinstellungen für C#-Codeformatierung verwenden soll (Verwendung von Registerkarten, Einzugsgröße).", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": "Verwenden Sie den OmniSharp-Build für .NET 6. Diese Version unterstützt _keine_ .NET Framework-Projekte, die nicht im SDK-Stil vorliegen, einschließlich Unity. Framework-Projekte im SDK-Stil, .NET Core- und .NET 5+-Projekte sollten erhebliche Leistungsverbesserungen aufweisen.", "configuration.omnisharp.useModernNet.title": ".NET 6-Build von OmniSharp verwenden", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "Alle C#-Codeaktionen in Razor-Dateien anzeigen. Diese Aktionen werden in Razor nicht getestet und können beim Anwenden Syntaxfehler verursachen. Melden Sie in diesem Fall einen Fehler.", diff --git a/package.nls.es.json b/package.nls.es.json index d1d0999da..90d03c955 100644 --- a/package.nls.es.json +++ b/package.nls.es.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "Volver a ejecutar los generadores de origen", "command.csharp.showDecompilationTerms": "Mostrar el contrato de términos del descompilador", "command.dotnet.generateAssets.currentProject": "Generar recursos para compilar y depurar", - "command.dotnet.openSolution": "Abrir solución", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "Reiniciar servidor de lenguaje", "command.dotnet.restore.all": "Restaurar todos los proyectos", "command.dotnet.restore.project": "Restaurar proyecto", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "Especifica si se deben incluir versiones preliminares del SDK de .NET al determinar la versión que se va a usar para la carga del proyecto. Se aplica cuando \"useModernNet\" se establece en true.", "configuration.omnisharp.sdkPath": "Especifica la ruta de acceso a una instalación de SDK de .NET que se va a usar para la carga de proyectos en lugar de la versión más reciente instalada. Se aplica cuando \"useModernNet\" se establece en true. Ejemplo: /home/username/dotnet/sdks/6.0.300.", "configuration.omnisharp.sdkVersion": "Especifica la versión del SDK de .NET que se va a usar para la carga de proyectos en lugar de la versión más reciente instalada. Se aplica cuando \"useModernNet\" se establece en true. Ejemplo: 6.0.300.", - "configuration.omnisharp.useEditorFormattingSettings": "Especifica si OmniSharp debe usar la configuración VS Code del editor para el formato de código de C# (uso de tabulaciones, tamaño de sangría).", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": "Use la compilación de OmniSharp para .NET 6. Esta versión no admite proyectos de .NET Framework que no sean de tipo SDK, incluido Unity. Los proyectos framework de estilo SDK, .NET Core y .NET 5+ deben ver mejoras significativas en el rendimiento.", "configuration.omnisharp.useModernNet.title": "Usar la compilación de .NET 6 de OmniSharp", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "Mostrar todas las acciones de código de C# en archivos de Razor. Estas acciones no se prueban en Razor y pueden introducir errores de sintaxis cuando se aplican. Si esto ocurre, notifique un error.", diff --git a/package.nls.fr.json b/package.nls.fr.json index 9a50c6144..c98cc2387 100644 --- a/package.nls.fr.json +++ b/package.nls.fr.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "Réexécuter les générateurs sources", "command.csharp.showDecompilationTerms": "Afficher l'accord sur les termes du décompilateur", "command.dotnet.generateAssets.currentProject": "Générer des actifs pour la construction et le débogage", - "command.dotnet.openSolution": "Solution ouverte", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "Redémarrer le serveur de langue", "command.dotnet.restore.all": "Restaurer tous les projets", "command.dotnet.restore.project": "Restaurer le projet", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "Spécifie s’il faut inclure des versions préliminaires du Kit de développement logiciel (SDK) .NET lors de la détermination de la version à utiliser pour le chargement de projet. S'applique lorsque « useModernNet » est défini sur true.", "configuration.omnisharp.sdkPath": "Spécifie le chemin d’accès à une installation du Kit de développement logiciel (SDK) .NET à utiliser pour le chargement de projet au lieu de la version la plus élevée installée. S'applique lorsque « useModernNet » est défini sur true. Exemple : /home/username/dotnet/sdks/6.0.300.", "configuration.omnisharp.sdkVersion": "Spécifie la version du Kit de développement logiciel (SDK) .NET à utiliser pour le chargement de projet au lieu de la version la plus élevée installée. S'applique lorsque « useModernNet » est défini sur true. Exemple : 6.0.300.", - "configuration.omnisharp.useEditorFormattingSettings": "Spécifie si OmniSharp doit utiliser VS Code paramètres de l’éditeur pour la mise en forme du code C# (utilisation d’onglets, taille de retrait).", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": "Utilisez la version OmniSharp pour .NET 6. Cette version _ne prend pas_ en charge les projets .NET Framework non de style SDK, y compris Unity. Les projets framework de style SDK, .NET Core et .NET 5+ doivent voir des améliorations significatives des performances.", "configuration.omnisharp.useModernNet.title": "Utiliser la version .NET 6 d'OmniSharp", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "Afficher toutes les actions de code C# dans les fichiers Razor. Ces actions ne sont pas testées dans Razor et peuvent introduire des erreurs de syntaxe lorsqu’elles sont appliquées. Si cela se produit, veuillez signaler un bogue.", diff --git a/package.nls.it.json b/package.nls.it.json index 695d8f1bf..018811900 100644 --- a/package.nls.it.json +++ b/package.nls.it.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "Esegui di nuovo generatori di codice sorgente", "command.csharp.showDecompilationTerms": "Mostra il contratto per i termini del decompilatore", "command.dotnet.generateAssets.currentProject": "Genera gli asset per la compilazione e il debug", - "command.dotnet.openSolution": "Apri soluzione", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "Riavvia il server di linguaggio", "command.dotnet.restore.all": "Ripristina tutti i progetti", "command.dotnet.restore.project": "Ripristina progetto", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "Specifica se includere le versioni di anteprima di .NET SDK quando si determina quale versione usare per il caricamento del progetto. Si applica quando \"useModernNet\" è impostato su true.", "configuration.omnisharp.sdkPath": "Specifica il percorso per l'installazione di .NET SDK da usare per il caricamento del progetto anziché la versione più recente installata. Si applica quando \"useModernNet\" è impostato su true. Esempio: /home/username/dotnet/sdks/6.0.300.", "configuration.omnisharp.sdkVersion": "Specifica la versione di .NET SDK da usare per il caricamento del progetto anziché la versione più recente installata. Si applica quando \"useModernNet\" è impostato su true. Esempio: 6.0.300", - "configuration.omnisharp.useEditorFormattingSettings": "Specifica se OmniSharp deve usare le impostazioni dell'editor VS Code per la formattazione del codice C# (uso di tabulazioni, dimensioni rientro).", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": "Usare la build OmniSharp per .NET 6. Questa versione _non_ supporta i progetti .NET Framework non di tipo SDK, tra cui Unity. I progetti Framework, .NET Core e .NET 5+ di tipo SDK devono vedere miglioramenti significativi delle prestazioni.", "configuration.omnisharp.useModernNet.title": "Usare la build .NET 6 di OmniSharp", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "Mostra tutte le azioni del codice C# nei file Razor. Queste azioni non sono testate in Razor e possono presentare errori di sintassi quando vengono applicate. Se ciò accade, segnala un bug.", diff --git a/package.nls.ja.json b/package.nls.ja.json index cfbd3385b..8e1a33eeb 100644 --- a/package.nls.ja.json +++ b/package.nls.ja.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "ソース ジェネレーターの再実行", "command.csharp.showDecompilationTerms": "逆コンパイラの使用契約条件を表示する", "command.dotnet.generateAssets.currentProject": "ビルド用およびデバッグ用の資産を生成する", - "command.dotnet.openSolution": "ソリューションを開く", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "言語サーバーを再起動する", "command.dotnet.restore.all": "すべてのプロジェクトを復元する", "command.dotnet.restore.project": "プロジェクトの復元", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "プロジェクトの読み込みに使用するバージョンを決定するときに、.NET SDK のプレビュー バージョンを含めるかどうかを指定します。\"useModernNet\" が true に設定されている場合に適用されます。", "configuration.omnisharp.sdkPath": "インストールされている最も高いバージョンではなく、プロジェクトの読み込みに使用する .NET SDK インストールへのパスを指定します。\"useModernNet\" が true に設定されている場合に適用されます。例: /home/username/dotnet/sdks/6.0.300。", "configuration.omnisharp.sdkVersion": "インストールされている最も高いバージョンではなく、プロジェクトの読み込みに使用する .NET SDK のバージョンを指定します。\"useModernNet\" が true に設定されている場合に適用されます。例: 6.0.300。", - "configuration.omnisharp.useEditorFormattingSettings": "OmniSharp で C# コードの書式設定 (タブ、インデント サイズの使用) に VS Code エディター設定を使用するかどうかを指定します。", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": ".NET 6 用の OmniSharp ビルドを使用します。このバージョンは、Unity を含む SDK スタイルではない .NET Framework プロジェクトを _サポートしていません_。SDK スタイルの Framework、.NET Core、および .NET 5+ のプロジェクトでは、パフォーマンスが大幅に向上します。", "configuration.omnisharp.useModernNet.title": "OmniSharp の .NET 6 ビルドを使用する", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "Razor ファイル内のすべての C# コード アクションを表示します。これらのアクションは Razor ではテストされておらず、適用すると構文エラーが発生する可能性があります。この問題が発生した場合は、バグを報告してください。", diff --git a/package.nls.json b/package.nls.json index 7e3846ee0..af5f623c3 100644 --- a/package.nls.json +++ b/package.nls.json @@ -1,7 +1,7 @@ { "command.o.restart": "Restart OmniSharp", "command.o.pickProjectAndStart": "Select Project", - "command.dotnet.openSolution": "Open Solution", + "command.dotnet.openSolution": "Open Solution blah", "command.o.fixAll.solution": "Fix all occurrences of a code issue within solution", "command.o.fixAll.project": "Fix all occurrences of a code issue within project", "command.o.fixAll.document": "Fix all occurrences of a code issue within document", @@ -124,7 +124,7 @@ "configuration.omnisharp.projectFilesExcludePattern": "The exclude pattern used by OmniSharp to find all project files.", "configuration.omnisharp.projectLoadTimeout": "The time Visual Studio Code will wait for the OmniSharp server to start. Time is expressed in seconds.", "configuration.omnisharp.maxProjectResults": "The maximum number of projects to be shown in the 'Select Project' dropdown (maximum 250).", - "configuration.omnisharp.useEditorFormattingSettings": "Specifes whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.minFindSymbolsFilterLength": "The minimum number of characters to enter before 'Go to Symbol in Workspace' operation shows any results.", "configuration.omnisharp.maxFindSymbolsItems": "The maximum number of items that 'Go to Symbol in Workspace' operation can show. The limit is applied only when a positive number is specified here.", "configuration.omnisharp.disableMSBuildDiagnosticWarning": "Specifies whether notifications should be shown if OmniSharp encounters warnings or errors loading a project. Note that these warnings/errors are always emitted to the OmniSharp log", diff --git a/package.nls.ko.json b/package.nls.ko.json index a69423eb8..5056110fb 100644 --- a/package.nls.ko.json +++ b/package.nls.ko.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "원본 생성기 다시 실행", "command.csharp.showDecompilationTerms": "디컴파일러 계약 표시", "command.dotnet.generateAssets.currentProject": "빌드 및 디버그에 대한 자산 생성", - "command.dotnet.openSolution": "솔루션 열기", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "언어 서버 다시 시작", "command.dotnet.restore.all": "모든 프로젝트 복원", "command.dotnet.restore.project": "프로젝트 복원", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "프로젝트 로드에 사용할 버전을 결정할 때 .NET SDK의 미리 보기 버전을 포함할지 여부를 지정합니다. \"useModernNet\"이 true로 설정된 경우 적용됩니다.", "configuration.omnisharp.sdkPath": "설치된 최상위 버전 대신 프로젝트 로드에 사용할 .NET SDK 설치 경로를 지정합니다. \"useModernNet\"이 true로 설정된 경우 적용됩니다. 예: /home/username/dotnet/sdks/6.0.300.", "configuration.omnisharp.sdkVersion": "설치된 최상위 버전 대신 프로젝트 로드에 사용할 .NET SDK 버전을 지정합니다. \"useModernNet\"이 true로 설정된 경우 적용됩니다. 예: 6.0.300.", - "configuration.omnisharp.useEditorFormattingSettings": "OmniSharp에서 C# 코드 서식 지정(탭 사용, 들여쓰기 크기)에 VS Code 편집기 설정을 사용해야 하는지 여부를 지정합니다.", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": ".NET 6에 OmniSharp 빌드를 사용합니다. 이 버전은 Unity를 포함하여 SDK 스타일이 아닌 .NET Framework 프로젝트를 지원하지 _않습니다_. SDK 스타일 Framework, .NET Core, .NET 5 이상 프로젝트에서는 성능이 크게 향상됩니다.", "configuration.omnisharp.useModernNet.title": "OmniSharp의 .NET 6 빌드 사용", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "Razor 파일에서 모든 C# 코드 작업을 표시합니다. 이러한 작업은 Razor에서 테스트되지 않았으며 적용하면 구문 오류가 발생할 수 있습니다. 이런 경우 버그를 보고해 주세요.", diff --git a/package.nls.pl.json b/package.nls.pl.json index 589253673..dff68cee8 100644 --- a/package.nls.pl.json +++ b/package.nls.pl.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "Ponownie uruchom generatory źródeł", "command.csharp.showDecompilationTerms": "Pokaż umowę warunków dekompilowania", "command.dotnet.generateAssets.currentProject": "Generuj zasoby na potrzeby kompilacji i debugowania", - "command.dotnet.openSolution": "Otwórz rozwiązanie", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "Ponownie uruchom serwer języka", "command.dotnet.restore.all": "Przywróć wszystkie projekty", "command.dotnet.restore.project": "Przywróć projekt", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "Określa, czy dołączać wersje zapoznawcze zestawu .NET SDK podczas określania wersji, która ma być używana do ładowania projektu. Ma zastosowanie, gdy właściwość „useModernNet” jest ustawiona na wartość true.", "configuration.omnisharp.sdkPath": "Określa ścieżkę do instalacji zestawu .NET SDK, która ma być używana do ładowania projektu zamiast zainstalowanej najwyższej wersji. Ma zastosowanie, gdy właściwość „useModernNet” jest ustawiona na wartość true. Przykład: /home/username/dotnet/sdks/6.0.300.", "configuration.omnisharp.sdkVersion": "Określa wersję zestawu .NET SDK, która ma być używana do ładowania projektu zamiast zainstalowanej najwyższej wersji. Ma zastosowanie, gdy właściwość „useModernNet” jest ustawiona na wartość true. Przykład: 6.0.300.", - "configuration.omnisharp.useEditorFormattingSettings": "Określa, czy element OmniSharp powinien używać ustawień edytora VS Code dla formatowania kodu języka C# (używać kart, rozmiaru wcięć).", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": "Użyj kompilacji OmniSharp dla platformy .NET 6. Ta wersja _nie_ obsługuje projektów .NET Framework innych niż SDK, w tym aparat Unity. Projekty platformy w stylu zestawu SDK, platformy .NET Core i platformy .NET 5+ powinny widzieć znaczącą poprawę wydajności.", "configuration.omnisharp.useModernNet.title": "Użyj kompilacji .NET 6 elementu OmniSharp", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "Pokaż wszystkie akcje kodu C# w plikach Razor. Te akcje nie zostały przetestowane w Razorze i mogą powodować błędy składniowe po zastosowaniu. Jeśli tak się stanie, zgłoś błąd.", diff --git a/package.nls.pt-br.json b/package.nls.pt-br.json index ccc9a2a7d..2dc780c5c 100644 --- a/package.nls.pt-br.json +++ b/package.nls.pt-br.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "Executar novamente geradores de origem", "command.csharp.showDecompilationTerms": "Mostrar o contrato de termos do descompilador", "command.dotnet.generateAssets.currentProject": "Gerar Ativos para Compilação e Depuração", - "command.dotnet.openSolution": "Abrir Solução", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "Reiniciar o Servidor de Linguagem", "command.dotnet.restore.all": "Restaurar Todos os Projetos", "command.dotnet.restore.project": "Restaurar Projeto", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "Especifica se as versões prévias do SDK do .NET devem ser incluídas ao determinar qual versão deve ser usada no carregamento do projeto. Aplica-se quando \"useModernNet\" é definido como verdadeiro.", "configuration.omnisharp.sdkPath": "Especifica o caminho para uma instalação do SDK do .NET a ser usada para carregar o projeto em vez de a versão mais alta instalada. Aplica-se quando \"useModernNet\" é definido como verdadeiro. Exemplo: /home/username/dotnet/sdks/6.0.300.", "configuration.omnisharp.sdkVersion": "Especifica a versão do SDK do .NET a ser usada para carregar o projeto em vez de a versão mais alta instalada. Aplica-se quando \"useModernNet\" é definido como verdadeiro. Exemplo: 6.0.300.", - "configuration.omnisharp.useEditorFormattingSettings": "Especifica se o OmniSharp deve usar as configurações do editor VS Code para formatar o código C# (uso de tabulações, tamanho do recuo).", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": "Use a compilação OmniSharp para .NET 6. Esta versão _não_ suporta projetos que não sejam do estilo SDK .NET Framework, incluindo Unity. Projetos do Framework no estilo SDK, .NET Core e .NET 5+ devem ver melhorias significativas de desempenho.", "configuration.omnisharp.useModernNet.title": "Usar a compilação do .NET 6 da OmniSharp", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "Mostrar todas as ações de código C# em arquivos Razor. Estas ações não foram testadas no Razor e podem introduzir erros de sintaxe quando aplicadas. Se isso acontecer, relate um bug.", diff --git a/package.nls.ru.json b/package.nls.ru.json index 8df231d7f..4c0eb2f8f 100644 --- a/package.nls.ru.json +++ b/package.nls.ru.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "Повторный запуск исходных генераторов", "command.csharp.showDecompilationTerms": "Показать соглашение об условиях декомпиляции", "command.dotnet.generateAssets.currentProject": "Создание ресурсов для сборки и отладки", - "command.dotnet.openSolution": "Открыть решение", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "Перезапустить языковой сервер", "command.dotnet.restore.all": "Восстановить все проекты", "command.dotnet.restore.project": "Восстановить проект", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "Указывает, следует ли включать предварительные версии пакета SDK для .NET при определении версии, используемой для загрузки проекта. Применяется, если для параметра \"useModernNet\" настроено значение true.", "configuration.omnisharp.sdkPath": "Указывает путь к установке пакета SDK для .NET, используемой для загрузки проекта, вместо установки наивысшей версии. Применяется, если для параметра \"useModernNet\" настроено значение true. Пример: /home/username/dotnet/sdks/6.0.300.", "configuration.omnisharp.sdkVersion": "Указывает версию пакета SDK для .NET, используемую для загрузки проекта, вместо установки наивысшей версии. Применяется, если для параметра \"useModernNet\" настроено значение true. Пример: 6.0.300.", - "configuration.omnisharp.useEditorFormattingSettings": "Указывает, следует ли OmniSharp использовать параметры редактора VS Code для форматирования кода C# (использование вкладок, размер отступа).", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": "Используйте сборку OmniSharp для .NET 6. Эта версия _не_ поддерживает проекты .NET Framework не в стиле SDK, в том числе Unity. Проекты .NET Core, .NET 5+ и платформы .NET Framework в стиле SDK должны значительно повысить производительность.", "configuration.omnisharp.useModernNet.title": "Использовать сборку .NET 6 для OmniSharp", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "Показывать все действия кода C# в файлах Razor. Эти действия не тестировались в Razor и могут привести к синтаксическим ошибкам при применении. Если это произойдет, сообщите об ошибке.", diff --git a/package.nls.tr.json b/package.nls.tr.json index f9628fafe..4dcb2cb99 100644 --- a/package.nls.tr.json +++ b/package.nls.tr.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "Kaynak Oluşturucuları Yeniden Çalıştır", "command.csharp.showDecompilationTerms": "Derleyici koşulları sözleşmesini göster", "command.dotnet.generateAssets.currentProject": "Derleme ve Hata Ayıklama için Varlıklar Oluşturun", - "command.dotnet.openSolution": "Çözümü Aç", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "Dil Sunucusunu Yeniden Başlat", "command.dotnet.restore.all": "Tüm Projeleri Geri Yükleyin", "command.dotnet.restore.project": "Projeyi Geri Yükle", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "Proje yükleme için hangi sürümün kullanılacağını belirlerken .NET SDK'nın önizleme sürümlerinin dahil edilip edilmeyeceğini belirtir. \"useModernNet\" true olarak ayarlandığında uygulanır.", "configuration.omnisharp.sdkPath": "Yüklü olan en yüksek sürüm yerine proje yükleme için kullanılacak .NET SDK yüklemesinin yolunu belirtir. \"useModernNet\" true olarak ayarlandığında uygulanır. Örnek: /home/username/dotnet/sdks/6.0.300.", "configuration.omnisharp.sdkVersion": "Yüklü olan en yüksek sürüm yerine proje yükleme için kullanılacak .NET SDK sürümünü belirtir. \"useModernNet\" true olarak ayarlandığında uygulanır. Örnek: 6.0.300.", - "configuration.omnisharp.useEditorFormattingSettings": "OmniSharp'ın C# kod biçimlendirmesi için VS Code düzenleyici ayarlarını kullanıp kullanmayacağını belirtir (sekme kullanımı, girinti boyutu).", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": ".NET 6 için OmniSharp derlemesini kullanın. Bu sürüm Unity dahil SDK stili olmayan .NET Framework projelerini desteklemiyor. SDK stili Framework, .NET Core ve .NET 5+ projeleri önemli performans iyileştirmeleri görüyor olmalıdır.", "configuration.omnisharp.useModernNet.title": "OmniSharp'ın .NET 6 derlemesi kullanın", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "Razor dosyalarındaki tüm C# kod eylemlerini gösterin. Bu eylemler Razor'da test edilmedi ve uygulandıklarında söz dizimi hatalarına neden olabilir. Bu durum oluşursa lütfen bir hata bildirin.", diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 0a49e64a0..0029eac51 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "重新运行源生成器", "command.csharp.showDecompilationTerms": "显示反编译程序条款协议", "command.dotnet.generateAssets.currentProject": "生成用于生成和调试的资产", - "command.dotnet.openSolution": "打开解决方案", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "重启语言服务器", "command.dotnet.restore.all": "还原所有项目", "command.dotnet.restore.project": "还原项目", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "指定在确定使用哪个版本进行项目加载时是否包含 .NET SDK 的预览版本。当“useModernNet”设置为 true 时适用。", "configuration.omnisharp.sdkPath": "指定用于项目加载的 .NET SDK 安装路径,而不是安装的最高版本。当“useModernNet”设置为 true 时适用。示例: /home/username/dotnet/sdks/6.0.300。", "configuration.omnisharp.sdkVersion": "指定用于项目加载的 .NET SDK 版本,而不是安装的最高版本。当“useModernNet”设置为 true 时适用。示例: 6.0.300。", - "configuration.omnisharp.useEditorFormattingSettings": "指定 OmniSharp 是否应使用 VS Code 编辑器设置进行 C# 代码格式化(使用制表符、缩进大小)。", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": "使用 .NET 6 版本的 OmniSharp。此版本不支持非 SDK 风格的 .NET Framework 项目,包括 Unity。SDK 样式的框架、.NET Core 和 .NET 5+ 项目应该会获得显著的性能提升。", "configuration.omnisharp.useModernNet.title": "使用 .NET 6 版本的 OmniSharp", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "在 Razor 文件中显示所有 C# 代码操作。这些操作在 Razor 中未测试,应用时可能会引入语法错误。如果发生这种情况,请报告 Bug。", diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index c6ef7097c..57a5e5052 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -12,7 +12,7 @@ "command.csharp.rerunSourceGenerators": "重新執行來源產生器", "command.csharp.showDecompilationTerms": "顯示解編程式條款合約", "command.dotnet.generateAssets.currentProject": "產生用於建置和偵錯的資產", - "command.dotnet.openSolution": "開啟方案", + "command.dotnet.openSolution": "Open Solution blah", "command.dotnet.restartServer": "重新啟動語言伺服器", "command.dotnet.restore.all": "還原所有專案", "command.dotnet.restore.project": "還原專案", @@ -129,7 +129,7 @@ "configuration.omnisharp.sdkIncludePrereleases": "指定在決定要用於專案載入的版本時,是否要包含 .NET SDK 的預覽版本。當 \"useModernNet\" 設定為 true 時適用。", "configuration.omnisharp.sdkPath": "指定要用於專案載入的 .NET SDK 安裝路徑,而不是安裝的最高版本。當 \"useModernNet\" 設定為 true 時適用。範例: /home/username/dotnet/sdks/6.0.300。", "configuration.omnisharp.sdkVersion": "指定要用於專案載入的 .NET SDK 版本,而不是安裝的最高版本。當 \"useModernNet\" 設定為 true 時適用。範例: 6.0.300。", - "configuration.omnisharp.useEditorFormattingSettings": "指定 OmniSharp 是否應該針對 C# 程式碼格式設定 (使用 Tab、縮排大小) 使用 VS Code 編輯器設定。", + "configuration.omnisharp.useEditorFormattingSettings": "Specifies whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size).", "configuration.omnisharp.useModernNet.description": "使用適用於 .NET 6 的 OmniSharp 組建。此版本不支援非 SDK 樣式的 .NET Framework 專案,包括 Unity。SDK 樣式的 Framework、.NET Core 和 .NET 5+ 專案應該會大幅提升效能。", "configuration.omnisharp.useModernNet.title": "使用 OmniSharp 的 .NET 6 版本", "configuration.razor.razor.advanced.showAllCSharpCodeActions": "顯示 Razor 檔案中的所有 C# 程式碼動作。這些動作尚未在 Razor 中測試,套用後可能會造成語法錯誤。如果發生這種情況,請回報錯誤。", diff --git a/tasks/localization/publishLocalizationContent.ts b/tasks/localization/publishLocalizationContent.ts index 2aaf3a2db..0019857af 100644 --- a/tasks/localization/publishLocalizationContent.ts +++ b/tasks/localization/publishLocalizationContent.ts @@ -35,7 +35,8 @@ async function publishLocalizationContent() { const localizationChanges = getAllPossibleLocalizationFiles(); await git(['add'].concat(localizationChanges)); - const diff = await git_diff(['--name-only', 'HEAD']); + // Check only staged localization files; other build steps may leave unrelated tracked files modified. + const diff = await git_diff(['--cached', '--name-only']); if (diff.length == 0) { console.log('No localization file changed'); return; @@ -55,9 +56,9 @@ async function publishLocalizationContent() { await git(['checkout', '-b', newBranchName]); await git(['commit', '-m', `Localization result of ${parsedArgs.commitSha}.`]); - const pat = process.env['GitHubPAT']; - if (!pat) { - throw 'No GitHub Pat found.'; + const token = process.env['GitHubToken']; + if (!token) { + throw 'No GitHub token found.'; } const remoteRepoAlias = 'targetRepo'; @@ -66,9 +67,9 @@ async function publishLocalizationContent() { 'remote', 'add', remoteRepoAlias, - `https://${parsedArgs.userName}:${pat}@github.com/dotnet/${parsedArgs.targetRemoteRepo}.git`, + `https://x-access-token:${token}@github.com/dotnet/${parsedArgs.targetRemoteRepo}.git`, ], - // Note: don't print PAT to console + // Do not print the token to the console. false ); await git(['fetch', remoteRepoAlias]); @@ -83,7 +84,7 @@ async function publishLocalizationContent() { await git(['push', '-u', remoteRepoAlias]); } - const octokit = new Octokit({ auth: pat }); + const octokit = new Octokit({ auth: token }); const listPullRequest = await octokit.rest.pulls.list({ owner: 'dotnet', repo: parsedArgs.targetRemoteRepo, @@ -144,16 +145,23 @@ async function git(args: string[], printCommand = true): Promise { console.log(`git ${args.join(' ')}`); } - const git = spawnSync('git', args); - if (git.status != 0) { - const err = git.stderr.toString(); + const result = spawnSync('git', args, { encoding: 'utf8' }); + const command = printCommand ? `git ${args.join(' ')}` : 'git command'; + if (result.error) { + throw new Error(`Failed to start ${command}: ${result.error.message}`); + } + if (result.status != 0) { + const output = [result.stderr, result.stdout] + .map((value) => value.trim()) + .filter((value) => value.length > 0) + .join(EOL); if (printCommand) { - console.log(`Failed to execute git ${args.join(' ')}.`); + console.error(`Failed to execute ${command}.`); } - throw err; + throw new Error(output || `${command} failed with code ${result.status}.`); } - const stdout = git.stdout.toString(); + const stdout = result.stdout; if (printCommand) { console.log(stdout); }