From 7f789b73213836108dd3502921c314a28c89ee28 Mon Sep 17 00:00:00 2001 From: Sima Zhu <48036328+sima-zhu@users.noreply.github.com> Date: Thu, 14 Apr 2022 13:35:36 -0700 Subject: [PATCH] Github io docs sort by client, mgmt, track2, track1 (#3000) --- .../docgeneration/Generate-DocIndex.ps1 | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/eng/common/docgeneration/Generate-DocIndex.ps1 b/eng/common/docgeneration/Generate-DocIndex.ps1 index 461b15ce01f..08c66f3b618 100644 --- a/eng/common/docgeneration/Generate-DocIndex.ps1 +++ b/eng/common/docgeneration/Generate-DocIndex.ps1 @@ -66,8 +66,8 @@ function Get-TocMapping { foreach ($artifact in $artifacts) { $packageInfo = $metadata | ? { $_.Package -eq $artifact -and $_.Hide -ne "true" } + $serviceName = "" - $displayName = "" if (!$packageInfo) { LogDebug "There is no service name for artifact $artifact or it is marked as hidden. Please check csv of Azure/azure-sdk/_data/release/latest repo if this is intended. " continue @@ -76,16 +76,28 @@ function Get-TocMapping { LogWarning "There is no service name for artifact $artifact. Please check csv of Azure/azure-sdk/_data/release/latest repo if this is intended. " # If no service name retrieved, print out warning message, and put it into Other page. $serviceName = "Other" - $displayName = $packageInfo[0].DisplayName.Trim() } else { if ($packageInfo.Length -gt 1) { LogWarning "There are more than 1 packages fetched out for artifact $artifact. Please check csv of Azure/azure-sdk/_data/release/latest repo if this is intended. " } $serviceName = $packageInfo[0].ServiceName.Trim() - $displayName = $packageInfo[0].DisplayName.Trim() } - $orderServiceMapping[$artifact] = @($serviceName, $displayName) + + # Define the order of "New", "Type", if not match, return the length of the array. + $CustomOrder_New = "true", "false", "" + $newIndex = $CustomOrder_New.IndexOf($packageInfo[0].New.ToLower()) + $newIndex = $newIndex -eq -1 ? $CustomOrder_New.Count : $newIndex + $CustomOrder_Type = "client", "mgmt", "compat", "spring", "" + $typeIndex = $CustomOrder_Type.IndexOf($packageInfo[0].Type.ToLower()) + $typeIndex = $typeIndex -eq -1 ? $CustomOrder_Type.Count : $typeIndex + $orderServiceMapping[$artifact] = [PSCustomObject][ordered]@{ + NewIndex = $newIndex + TypeIndex = $typeIndex + ServiceName = $serviceName + DisplayName = $packageInfo[0].DisplayName.Trim() + Artifact = $artifact + } } return $orderServiceMapping } @@ -114,10 +126,11 @@ function GenerateDocfxTocContent([Hashtable]$tocContent, [String]$lang, [String] New-Item -Path $YmlPath -Name "toc.yml" -Force $visitedService = @{} # Sort and display toc service name by alphabetical order, and then sort artifact by order. - foreach ($serviceMapping in ($tocContent.GetEnumerator() | Sort-Object Value, Key)) { - $artifact = $serviceMapping.Key - $serviceName = $serviceMapping.Value[0] - $displayName = $serviceMapping.Value[1] + $sortedToc = $tocContent.Values | Sort-Object NewIndex, TypeIndex, ServiceName, DisplayName, Artifact + foreach ($serviceMapping in $sortedToc) { + $artifact = $serviceMapping.Artifact + $serviceName = $serviceMapping.ServiceName + $displayName = $serviceMapping.DisplayName # handle spaces in service name, EG "Confidential Ledger" # handle / in service name, EG "Database for MySQL/PostgreSQL". Leaving a "/" present will generate a bad link location.