Skip to content

Commit 9faa6c6

Browse files
authored
Docs onboarding v2 (Azure#26682)
Requires eng/common changes in Azure/azure-sdk-tools#6632. Note: There's also a cleanup [PR](Azure/azure-sdk-tools#6800) to cleanup older language specific items. Test run of docindex:https://dev.azure.com/azure-sdk/internal/_build/results?buildId=2970911&view=logs&j=dc056dfc-c0cf-5958-c8c4-8da4f91a3739 Converts a collection of metadata JSON files into an onboarding spec.
1 parent 3e5b97d commit 9faa6c6

File tree

4 files changed

+120
-9
lines changed

4 files changed

+120
-9
lines changed

eng/scripts/Language-Settings.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,10 +232,11 @@ function ValidatePackagesForDocs($packages, $DocValidationImageId) {
232232

233233
$scriptRoot = $PSScriptRoot
234234
# Run this in parallel as each step takes a long time to run
235-
$validationOutput = $packages | Foreach-Object -Parallel {
235+
$validationOutput = $packages | ForEach-Object { [PSCustomObject]$_ } | Foreach-Object -Parallel {
236236
# Get value for variables outside of the Foreach-Object scope
237237
$scriptRoot = "$using:scriptRoot"
238238
$workingDirectory = "$using:tempDirectory"
239+
Write-Host "`"$scriptRoot\validate-docs-package.ps1`" -Package $_ -DocValidationImageId `"$($using:DocValidationImageId)`" -WorkingDirectory $workingDirectory"
239240
return ."$scriptRoot\validate-docs-package.ps1" -Package $_ -DocValidationImageId "$using:DocValidationImageId" -WorkingDirectory $workingDirectory
240241
}
241242

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
. "$PSScriptRoot/Docs-ToC.ps1"
2+
3+
# $SetDocsPackageOnboarding = "Set-${Language}-DocsPackageOnboarding"
4+
function Set-javascript-DocsPackageOnboarding($moniker, $metadata, $docRepoLocation, $packageSourceOverride) {
5+
$onboardingFile = GetOnboardingFile `
6+
-docRepoLocation $docRepoLocation `
7+
-moniker $moniker
8+
9+
$onboardingSpec = Get-Content $onboardingFile -Raw | ConvertFrom-Json -AsHashtable
10+
11+
$packagesToOnboard = @()
12+
foreach ($package in $metadata) {
13+
$packageSpec = [ordered]@{
14+
name = Get-DocsMsPackageName `
15+
-packageName $package.Name `
16+
-packageVersion $package.Version
17+
}
18+
19+
# $packageSourceOverride is irrelevant here as preview packages are
20+
# published up to NPM directly as alpha versions. The version from the
21+
# package metadata is sufficient.
22+
23+
# Merge properties from from overrides, duplicate keys will be overwritten
24+
if ($package.ContainsKey('DocsCiConfigProperties')) {
25+
$overrides = $package['DocsCiConfigProperties']
26+
foreach ($key in $overrides.Keys) {
27+
$packageSpec[$key] = $overrides[$key]
28+
}
29+
}
30+
31+
$packagesToOnboard += $packageSpec
32+
}
33+
34+
$onboardingSpec['npm_package_sources'] = $packagesToOnboard
35+
36+
Set-Content `
37+
-Path $onboardingFile `
38+
-Value ($onboardingSpec | ConvertTo-Json -Depth 100)
39+
}
40+
41+
function GetPackageInfoFromDocsMsConfig($packageName) {
42+
if (!$packageName) {
43+
throw "Package name must not be empty"
44+
}
45+
46+
$name = $packageName
47+
$version = ''
48+
if ($packageName.IndexOf('@', 1) -ne -1) {
49+
$secondAtIndex = $packageName.IndexOf('@', 1)
50+
51+
# "@azure/package@1.2.3" -> "@azure/package"
52+
$name = $packageName.Substring(0, $secondAtIndex)
53+
54+
# "@azure/package@1.2.3" -> "1.2.3"
55+
$version = $packageName.Substring($secondAtIndex + 1)
56+
}
57+
58+
return @{
59+
Name = $name
60+
Version = $version
61+
}
62+
}
63+
64+
# $GetDocsPackagesAlreadyOnboarded = "Get-${Language}-DocsPackagesAlreadyOnboarded"
65+
function Get-javascript-DocsPackagesAlreadyOnboarded($docRepoLocation, $moniker) {
66+
$packageOnboardingFile = GetOnboardingFile `
67+
-docRepoLocation $DocRepoLocation `
68+
-moniker $moniker
69+
70+
$onboardedPackages = @{}
71+
$onboardingSpec = ConvertFrom-Json (Get-Content $packageOnboardingFile -Raw)
72+
foreach ($spec in $onboardingSpec.npm_package_sources) {
73+
$packageInfo = GetPackageInfoFromDocsMsConfig $spec.name
74+
$onboardedPackages[$packageInfo.Name] = $packageInfo
75+
}
76+
77+
return $onboardedPackages
78+
}

eng/scripts/docs/Docs-ToC.ps1

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
function GetOnboardingFile($docRepoLocation, $moniker) {
2+
$packageOnboardingFile = "$docRepoLocation/ci-configs/packages-latest.json"
3+
if ("preview" -eq $moniker) {
4+
$packageOnboardingFile = "$docRepoLocation/ci-configs/packages-preview.json"
5+
}
6+
elseif ("legacy" -eq $moniker) {
7+
$packageOnboardingFile = "$docRepoLocation/ci-configs/packages-legacy.json"
8+
}
9+
10+
return $packageOnboardingFile
11+
}
12+
113
function Get-javascript-OnboardedDocsMsPackages($DocRepoLocation) {
214
$packageOnboardingFiles = @(
315
"$DocRepoLocation/ci-configs/packages-latest.json",
@@ -21,14 +33,10 @@ function Get-javascript-OnboardedDocsMsPackages($DocRepoLocation) {
2133
}
2234

2335
function Get-javascript-OnboardedDocsMsPackagesForMoniker($DocRepoLocation, $moniker) {
24-
$packageOnboardingFile = ""
25-
if ("latest" -eq $moniker) {
26-
$packageOnboardingFile = "$DocRepoLocation/ci-configs/packages-latest.json"
27-
}
28-
if ("preview" -eq $moniker) {
29-
$packageOnboardingFile = "$DocRepoLocation/ci-configs/packages-preview.json"
30-
}
31-
36+
$packageOnboardingFile = GetOnboardingFile `
37+
-docRepoLocation $DocRepoLocation `
38+
-moniker $moniker
39+
3240
$onboardedPackages = @{}
3341
$onboardingSpec = ConvertFrom-Json (Get-Content $packageOnboardingFile -Raw)
3442
foreach ($spec in $onboardingSpec.npm_package_sources) {
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
Import-Module Pester
2+
3+
BeforeAll {
4+
. $PSScriptRoot/../Docs-Onboarding.ps1
5+
}
6+
7+
Describe 'GetPackageInfoFromDocsMsConfig' {
8+
It 'Returns expected values' -ForEach @(
9+
@{ inputValue = '@azure/package@1.2.3'; expectedValue = @{ Name = '@azure/package'; Version = '1.2.3' } },
10+
@{ inputValue = '@azure/package'; expectedValue = @{ Name = '@azure/package'; Version = '' } }
11+
) {
12+
$result = GetPackageInfoFromDocsMsConfig $inputValue
13+
$result.Name | Should -Be $expectedValue.Name
14+
$result.Version | Should -Be $expectedValue.Version
15+
}
16+
17+
It 'Throws when given $null' {
18+
{ GetPackageInfoFromDocsMsConfig $null } | Should -Throw
19+
}
20+
21+
It 'Throws when given an empty string' {
22+
{ GetPackageInfoFromDocsMsConfig '' } | Should -Throw
23+
}
24+
}

0 commit comments

Comments
 (0)