Skip to content

Commit

Permalink
Sync eng/common directory with azure-sdk-tools for PR 3578 (Azure#25189)
Browse files Browse the repository at this point in the history
* Fixed the common contract.

* Fix for current regex

* Add new line

* Update eng/common/scripts/Service-Level-Readme-Automation.ps1

Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com>

* move compare and merge into gerenerate function

* Fix on new lines

Co-authored-by: sima-zhu <sizhu@microsoft.com>
Co-authored-by: Sima Zhu <48036328+sima-zhu@users.noreply.github.com>
Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com>
  • Loading branch information
4 people authored and jeremydvoss committed Jul 21, 2022
1 parent 38192ba commit f9998ee
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 40 deletions.
45 changes: 31 additions & 14 deletions eng/common/scripts/Helpers/Metadata-Helpers.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,23 @@ function GetDocsMsService($packageInfo, $serviceName)
return $service
}

function GenerateDocsMsMetadata($language, $languageDisplayName, $serviceName, $tenantId, $clientId, $clientSecret, $msService)
function compare-and-merge-metadata ($original, $updated) {
$updateMetdata = ($updated.GetEnumerator() | ForEach-Object { "$($_.Key): $($_.Value)" }) -join "`r`n"
$updateMetdata += "`r`n"
if (!$original) {
return $updateMetdata
}
$originalTable = ConvertFrom-StringData -StringData $original -Delimiter ":"
foreach ($key in $originalTable.Keys) {
if (!($updated.ContainsKey($key))) {
Write-Warning "New metadata missed the entry: $key. Adding back."
$updateMetdata += "$key`: $($originalTable[$key])`r`n"
}
}
return $updateMetdata
}

function GenerateDocsMsMetadata($originalMetadata, $language, $languageDisplayName, $serviceName, $tenantId, $clientId, $clientSecret, $msService)
{
$langTitle = "Azure $serviceName SDK for $languageDisplayName"
$langDescription = "Reference for Azure $serviceName SDK for $languageDisplayName"
Expand All @@ -113,19 +129,20 @@ function GenerateDocsMsMetadata($language, $languageDisplayName, $serviceName, $
$msauthor = $author
}
$date = Get-Date -Format "MM/dd/yyyy"
$header = @"
---
title: $langTitle
description: $langDescription
author: $author
ms.author: $msauthor
ms.date: $date
ms.topic: reference
ms.devlang: $language
ms.service: $msService
---
"@
return $header

$metadataTable = @{
"title"= $langTitle
"description"= $langDescription
"author"= $author
"ms.author"= $msauthor
"ms.data"= $date
"ms.topic"= "reference"
"ms.devlang"= $language
"ms.service"= $msService
}
$updatedMetadata = compare-and-merge-metadata -original $originalMetadata -updated $metadataTable
return "---
$updatedMetadata---`r`n"
}

function ServiceLevelReadmeNameStyle($serviceName) {
Expand Down
49 changes: 23 additions & 26 deletions eng/common/scripts/Service-Level-Readme-Automation.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -62,49 +62,46 @@ function create-metadata-table($readmeFolder, $readmeName, $moniker, $msService,
$metadataString = GenerateDocsMsMetadata -language $Language -languageDisplayName $LanguageDisplayName -serviceName $serviceName `
-tenantId $TenantId -clientId $ClientId -clientSecret $ClientSecret `
-msService $msService
Add-Content -Path $readmePath -Value $metadataString
Add-Content -Path $readmePath -Value $metadataString -NoNewline

# Add tables, seperate client and mgmt.
$readmeHeader = "# $langTitle - $moniker"
$readmeHeader = "# Azure $serviceName SDK for $languageDisplayName - $moniker`r`n"
Add-Content -Path $readmePath -Value $readmeHeader
Add-Content -Path $readmePath -Value $content
}

function compare-and-merge-metadata ($original, $updated) {
$originalTable = ConvertFrom-StringData -StringData $original -Delimiter ":"
$updatedTable = ConvertFrom-StringData -StringData $updated -Delimiter ":"
foreach ($key in $originalTable.Keys) {
if (!($updatedTable.ContainsKey($key))) {
Write-Warning "New metadata missed the entry: $key. Adding back."
$updated += "$key`: $($originalTable[$key])`r`n"
}
}
return $updated
Add-Content -Path $readmePath -Value $content -NoNewline
}

# Update the metadata table.
function update-metadata-table($readmeFolder, $readmeName, $serviceName, $msService)
{
$readmePath = Join-Path $readmeFolder -ChildPath $readmeName
$readmeContent = Get-Content -Path $readmePath -Raw
$null = $readmeContent -match "---`n*(?<metadata>(.*`n)*)---`n*(?<content>(.*`n)*)"
$restContent = $Matches["content"]
$orignalMetadata = $Matches["metadata"]
$match = $readmeContent -match "^---\n*(?<metadata>(.*\n?)*?)---\n*(?<content>(.*\n?)*)"
if (!$match) {
# $Language, $LanguageDisplayName are the variables globally defined in Language-Settings.ps1
$metadataString = GenerateDocsMsMetadata -language $Language -languageDisplayName $LanguageDisplayName -serviceName $serviceName `
-tenantId $TenantId -clientId $ClientId -clientSecret $ClientSecret `
-msService $msService
Set-Content -Path $readmePath -Value "$metadataString$readmeContent" -NoNewline
return
}
$restContent = $Matches["content"].trim()
$metadata = $Matches["metadata"].trim()
# $Language, $LanguageDisplayName are the variables globally defined in Language-Settings.ps1
$metadataString = GenerateDocsMsMetadata -language $Language -languageDisplayName $LanguageDisplayName -serviceName $serviceName `
$metadataString = GenerateDocsMsMetadata -originalMetadata $metadata -language $Language -languageDisplayName $LanguageDisplayName -serviceName $serviceName `
-tenantId $TenantId -clientId $ClientId -clientSecret $ClientSecret `
-msService $msService
$null = $metadataString -match "---`n*(?<metadata>(.*`n)*)---"
$mergedMetadata = compare-and-merge-metadata -original $orignalMetadata -updated $Matches["metadata"]
Set-Content -Path $readmePath -Value "---`n$mergedMetadata---`n$restContent" -NoNewline
Set-Content -Path $readmePath -Value "$metadataString$restContent" -NoNewline
}

function generate-markdown-table($readmeFolder, $readmeName, $packageInfo, $moniker) {
$tableHeader = "| Reference | Package | Source |`r`n|---|---|---|`r`n"
$tableContent = ""
# Here is the table, the versioned value will
foreach ($pkg in $packageInfo) {
$repositoryLink = $RepositoryUri
$repositoryLink = "$RepositoryUri/$($pkg.Package)"
if (Test-Path "Function:$GetRepositoryLinkFn") {
$repositoryLink = &$GetRepositoryLinkFn -packageInfo $pkg
}
$packageLevelReadme = ""
if (Test-Path "Function:$GetPackageLevelReadmeFn") {
$packageLevelReadme = &$GetPackageLevelReadmeFn -packageMetadata $pkg
Expand All @@ -118,7 +115,7 @@ function generate-markdown-table($readmeFolder, $readmeName, $packageInfo, $moni
if ($pkg.PSObject.Members.Name -contains "DirectoryPath") {
$githubLink = "$GithubUri/blob/main/$($pkg.DirectoryPath)"
}
$line = "|$referenceLink|[$($pkg.Package)]($repositoryLink/$($pkg.Package))|[Github]($githubLink)|`r`n"
$line = "|$referenceLink|[$($pkg.Package)]($repositoryLink)|[Github]($githubLink)|`r`n"
$tableContent += $line
}
$readmePath = Join-Path $readmeFolder -ChildPath $readmeName
Expand All @@ -140,12 +137,12 @@ function generate-service-level-readme($readmeBaseName, $pathPrefix, $packageInf
$mgmtIndexReadme = "$readmeBaseName-mgmt-index.md"
$clientPackageInfo = $packageInfos.Where({ 'client' -eq $_.Type }) | Sort-Object -Property Package
if ($clientPackageInfo) {
generate-markdown-table -readmeFolder $readmeFolder -readmeName "$clientIndexReadme" -packageInfo $clientPackageInfo -moniker $moniker
generate-markdown-table -readmeFolder $readmeFolder -readmeName $clientIndexReadme -packageInfo $clientPackageInfo -moniker $moniker
}

$mgmtPackageInfo = $packageInfos.Where({ 'mgmt' -eq $_.Type }) | Sort-Object -Property Package
if ($mgmtPackageInfo) {
generate-markdown-table -readmeFolder $readmeFolder -readmeName "$mgmtIndexReadme" -packageInfo $mgmtPackageInfo -moniker $moniker
generate-markdown-table -readmeFolder $readmeFolder -readmeName $mgmtIndexReadme -packageInfo $mgmtPackageInfo -moniker $moniker
}
if (!(Test-Path (Join-Path $readmeFolder -ChildPath $serviceReadme))) {
create-metadata-table -readmeFolder $readmeFolder -readmeName $serviceReadme -moniker $moniker -msService $msService `
Expand Down
1 change: 1 addition & 0 deletions eng/common/scripts/common.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,4 @@ $GetDocsMsTocDataFn = "Get-${Language}-DocsMsTocData"
$GetDocsMsTocChildrenForManagementPackagesFn = "Get-${Language}-DocsMsTocChildrenForManagementPackages"
$UpdateDocsMsTocFn = "Get-${Language}-UpdatedDocsMsToc"
$GetPackageLevelReadmeFn = "Get-${Language}-PackageLevelReadme"
$GetRepositoryLinkFn = "Get-${Language}-RepositoryLink"

0 comments on commit f9998ee

Please sign in to comment.