Skip to content

Commit 565d796

Browse files
committed
Merge in 'release/5.0' changes
2 parents f971277 + 4dcc32c commit 565d796

File tree

4 files changed

+199
-6
lines changed

4 files changed

+199
-6
lines changed

eng/Version.Details.xml

+4-4
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@
5151
</Dependency>
5252
</ProductDependencies>
5353
<ToolsetDependencies>
54-
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="5.0.0-beta.21160.3">
54+
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="5.0.0-beta.21262.2">
5555
<Uri>https://github.com/dotnet/arcade</Uri>
56-
<Sha>670382be6a978ba401c21c57ba44311199d2682a</Sha>
56+
<Sha>dad4f3c62e24b94b1514427674af8ca899cddd5f</Sha>
5757
</Dependency>
58-
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="5.0.0-beta.21160.3">
58+
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="5.0.0-beta.21262.2">
5959
<Uri>https://github.com/dotnet/arcade</Uri>
60-
<Sha>670382be6a978ba401c21c57ba44311199d2682a</Sha>
60+
<Sha>dad4f3c62e24b94b1514427674af8ca899cddd5f</Sha>
6161
</Dependency>
6262
</ToolsetDependencies>
6363
</Dependencies>

eng/common/generate-locproject.ps1

+110
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
Param(
2+
[Parameter(Mandatory=$true)][string] $SourcesDirectory, # Directory where source files live; if using a Localize directory it should live in here
3+
[string] $LanguageSet = 'VS_Main_Languages', # Language set to be used in the LocProject.json
4+
[switch] $UseCheckedInLocProjectJson, # When set, generates a LocProject.json and compares it to one that already exists in the repo; otherwise just generates one
5+
[switch] $CreateNeutralXlfs # Creates neutral xlf files. Only set to false when running locally
6+
)
7+
8+
# Generates LocProject.json files for the OneLocBuild task. OneLocBuildTask is described here:
9+
# https://ceapex.visualstudio.com/CEINTL/_wiki/wikis/CEINTL.wiki/107/Localization-with-OneLocBuild-Task
10+
11+
Set-StrictMode -Version 2.0
12+
$ErrorActionPreference = "Stop"
13+
. $PSScriptRoot\tools.ps1
14+
15+
Import-Module -Name (Join-Path $PSScriptRoot 'native\CommonLibrary.psm1')
16+
17+
$exclusionsFilePath = "$SourcesDirectory\Localize\LocExclusions.json"
18+
$exclusions = @{ Exclusions = @() }
19+
if (Test-Path -Path $exclusionsFilePath)
20+
{
21+
$exclusions = Get-Content "$exclusionsFilePath" | ConvertFrom-Json
22+
}
23+
24+
Push-Location "$SourcesDirectory" # push location for Resolve-Path -Relative to work
25+
26+
# Template files
27+
$jsonFiles = @()
28+
$jsonFiles += Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\.template\.config\\localize\\en\..+\.json" } # .NET templating pattern
29+
$jsonFiles += Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\\strings\.json" } # current winforms pattern
30+
31+
$xlfFiles = @()
32+
33+
$allXlfFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory\*\*.xlf"
34+
$langXlfFiles = @()
35+
if ($allXlfFiles) {
36+
$null = $allXlfFiles[0].FullName -Match "\.([\w-]+)\.xlf" # matches '[langcode].xlf'
37+
$firstLangCode = $Matches.1
38+
$langXlfFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory\*\*.$firstLangCode.xlf"
39+
}
40+
$langXlfFiles | ForEach-Object {
41+
$null = $_.Name -Match "(.+)\.[\w-]+\.xlf" # matches '[filename].[langcode].xlf'
42+
43+
$destinationFile = "$($_.Directory.FullName)\$($Matches.1).xlf"
44+
$xlfFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru
45+
}
46+
47+
$locFiles = $jsonFiles + $xlfFiles
48+
49+
$locJson = @{
50+
Projects = @(
51+
@{
52+
LanguageSet = $LanguageSet
53+
LocItems = @(
54+
$locFiles | ForEach-Object {
55+
$outputPath = "$(($_.DirectoryName | Resolve-Path -Relative) + "\")"
56+
$continue = $true
57+
foreach ($exclusion in $exclusions.Exclusions) {
58+
if ($outputPath.Contains($exclusion))
59+
{
60+
$continue = $false
61+
}
62+
}
63+
$sourceFile = ($_.FullName | Resolve-Path -Relative)
64+
if (!$CreateNeutralXlfs -and $_.Extension -eq '.xlf') {
65+
Remove-Item -Path $sourceFile
66+
}
67+
if ($continue)
68+
{
69+
if ($_.Directory.Name -eq 'en' -and $_.Extension -eq '.json') {
70+
return @{
71+
SourceFile = $sourceFile
72+
CopyOption = "LangIDOnPath"
73+
OutputPath = "$($_.Directory.Parent.FullName | Resolve-Path -Relative)\"
74+
}
75+
}
76+
else {
77+
return @{
78+
SourceFile = $sourceFile
79+
CopyOption = "LangIDOnName"
80+
OutputPath = $outputPath
81+
}
82+
}
83+
}
84+
}
85+
)
86+
}
87+
)
88+
}
89+
90+
$json = ConvertTo-Json $locJson -Depth 5
91+
Write-Host "LocProject.json generated:`n`n$json`n`n"
92+
Pop-Location
93+
94+
if (!$UseCheckedInLocProjectJson) {
95+
New-Item "$SourcesDirectory\Localize\LocProject.json" -Force # Need this to make sure the Localize directory is created
96+
Set-Content "$SourcesDirectory\Localize\LocProject.json" $json
97+
}
98+
else {
99+
New-Item "$SourcesDirectory\Localize\LocProject-generated.json" -Force # Need this to make sure the Localize directory is created
100+
Set-Content "$SourcesDirectory\Localize\LocProject-generated.json" $json
101+
102+
if ((Get-FileHash "$SourcesDirectory\Localize\LocProject-generated.json").Hash -ne (Get-FileHash "$SourcesDirectory\Localize\LocProject.json").Hash) {
103+
Write-PipelineTelemetryError -Category "OneLocBuild" -Message "Existing LocProject.json differs from generated LocProject.json. Download LocProject-generated.json and compare them."
104+
105+
exit 1
106+
}
107+
else {
108+
Write-Host "Generated LocProject.json and current LocProject.json are identical."
109+
}
110+
}
+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
parameters:
2+
# Optional: dependencies of the job
3+
dependsOn: ''
4+
5+
# Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
6+
pool:
7+
vmImage: vs2017-win2016
8+
9+
CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex
10+
GithubPat: $(BotAccount-dotnet-bot-repo-PAT)
11+
12+
SourcesDirectory: $(Build.SourcesDirectory)
13+
CreatePr: true
14+
AutoCompletePr: false
15+
UseCheckedInLocProjectJson: false
16+
LanguageSet: VS_Main_Languages
17+
LclSource: lclFilesInRepo
18+
LclPackageId: ''
19+
RepoType: gitHub
20+
condition: ''
21+
22+
jobs:
23+
- job: OneLocBuild
24+
25+
dependsOn: ${{ parameters.dependsOn }}
26+
27+
displayName: OneLocBuild
28+
29+
pool: ${{ parameters.pool }}
30+
31+
variables:
32+
- group: OneLocBuildVariables # Contains the CeapexPat and GithubPat
33+
- name: _GenerateLocProjectArguments
34+
value: -SourcesDirectory ${{ parameters.SourcesDirectory }}
35+
-LanguageSet "${{ parameters.LanguageSet }}"
36+
-CreateNeutralXlfs
37+
- ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}:
38+
- name: _GenerateLocProjectArguments
39+
value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson
40+
41+
42+
steps:
43+
- task: Powershell@2
44+
inputs:
45+
filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1
46+
arguments: $(_GenerateLocProjectArguments)
47+
displayName: Generate LocProject.json
48+
condition: ${{ parameters.condition }}
49+
50+
- task: OneLocBuild@2
51+
displayName: OneLocBuild
52+
env:
53+
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
54+
inputs:
55+
locProj: Localize/LocProject.json
56+
outDir: $(Build.ArtifactStagingDirectory)
57+
lclSource: ${{ parameters.LclSource }}
58+
lclPackageId: ${{ parameters.LclPackageId }}
59+
isCreatePrSelected: ${{ parameters.CreatePr }}
60+
${{ if eq(parameters.CreatePr, true) }}:
61+
isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }}
62+
packageSourceAuth: patAuth
63+
patVariable: ${{ parameters.CeapexPat }}
64+
${{ if eq(parameters.RepoType, 'gitHub') }}:
65+
repoType: ${{ parameters.RepoType }}
66+
gitHubPatVariable: "${{ parameters.GithubPat }}"
67+
condition: ${{ parameters.condition }}
68+
69+
- task: PublishBuildArtifacts@1
70+
displayName: Publish Localization Files
71+
inputs:
72+
PathtoPublish: '$(Build.ArtifactStagingDirectory)/loc'
73+
PublishLocation: Container
74+
ArtifactName: Loc
75+
condition: ${{ parameters.condition }}
76+
77+
- task: PublishBuildArtifacts@1
78+
displayName: Publish LocProject.json
79+
inputs:
80+
PathtoPublish: '$(Build.SourcesDirectory)/Localize/'
81+
PublishLocation: Container
82+
ArtifactName: Loc
83+
condition: ${{ parameters.condition }}

global.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"rollForward": "latestMajor"
1717
},
1818
"msbuild-sdks": {
19-
"Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.21160.3",
20-
"Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.21160.3"
19+
"Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.21262.2",
20+
"Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.21262.2"
2121
}
2222
}

0 commit comments

Comments
 (0)