From bfe14c1851c5766a5c6fa04dfdcc0d02978222de Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Wed, 30 Jun 2021 17:51:05 -0700 Subject: [PATCH 1/3] Read package information from msbuild In order to avoid duplication of logic we are creating an msbuild target that dumps out the properties for each of the projects and then parsing that for our other engineering system needs. --- eng/Directory.Build.Common.targets | 18 ++++++++++++++ eng/scripts/Language-Settings.ps1 | 40 +++++++----------------------- eng/service.proj | 8 ++++++ 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/eng/Directory.Build.Common.targets b/eng/Directory.Build.Common.targets index 9cabecdd78e6..e4a7d33a848c 100644 --- a/eng/Directory.Build.Common.targets +++ b/eng/Directory.Build.Common.targets @@ -264,5 +264,23 @@ + + + false + true + + data + client + mgmt + + $([MSBuild]::NormalizeDirectory($(MSBuildProjectDirectory)/../).Trim("/").Trim("\\")) + + + + + + + + diff --git a/eng/scripts/Language-Settings.ps1 b/eng/scripts/Language-Settings.ps1 index a1f54e92853a..c562b87c8ab8 100644 --- a/eng/scripts/Language-Settings.ps1 +++ b/eng/scripts/Language-Settings.ps1 @@ -6,46 +6,24 @@ $packagePattern = "*.nupkg" $MetadataUri = "https://raw.githubusercontent.com/Azure/azure-sdk/main/_data/releases/latest/dotnet-packages.csv" $BlobStorageUrl = "https://azuresdkdocs.blob.core.windows.net/%24web?restype=container&comp=list&prefix=dotnet%2F&delimiter=%2F" -function Get-dotnet-PackageInfoFromRepo ($pkgPath, $serviceDirectory) +function Get-AllPackageInfoFromRepo($serviceDirectory) { - $projDirPath = (Join-Path $pkgPath "src") + $allPackageProps = @() + $msbuildOutput = dotnet msbuild /nologo /t:GetAllPackageInfo $EngDir/service.proj /p:ServiceDirectory=$serviceDirectory - if (!(Test-Path $projDirPath)) + foreach ($projectOutput in $msbuildOutput) { - return $null - } - - $projectPaths = @(Resolve-Path (Join-Path $projDirPath "*.csproj")) + $pkgPath, $serviceDirectory, $pkgName, $pkgVersion, $sdkType, $isNewSdk = $projectOutput.Split(' ',[System.StringSplitOptions]::RemoveEmptyEntries).Trim("'") - if ($projectpaths.Count -ge 1) { - $projectPath = $projectPaths[0].path - if ($projectPaths.Count -gt 1) { - LogWarning "There is more than on csproj file in the projectpath/src directory. First project picked." - } - } - else { - return $null - } - - if ($projectPath -and (Test-Path $projectPath)) - { - $pkgName = Split-Path -Path $projectPath -LeafBase - $projectData = New-Object -TypeName XML - $projectData.load($projectPath) - $pkgVersion = Select-XML -Xml $projectData -XPath '/Project/PropertyGroup/Version' - $sdkType = "client" - if ($pkgName -match "\.ResourceManager\." -or $pkgName -match "\.Management\.") - { - $sdkType = "mgmt" - } $pkgProp = [PackageProps]::new($pkgName, $pkgVersion, $pkgPath, $serviceDirectory) $pkgProp.SdkType = $sdkType - $pkgProp.IsNewSdk = $pkgName.StartsWith("Azure") + $pkgProp.IsNewSdk = ($isNewSdk -eq 'true') $pkgProp.ArtifactName = $pkgName - return $pkgProp + + $allPackageProps += $pkgProp } - return $null + return $allPackageProps } # Returns the nuget publish status of a package id and version. diff --git a/eng/service.proj b/eng/service.proj index 3ea144801b6f..bdf11bee487b 100644 --- a/eng/service.proj +++ b/eng/service.proj @@ -63,4 +63,12 @@ + + + + \ No newline at end of file From 9287f34d699842c9061d5972ca664b54e0ed0b2e Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Thu, 1 Jul 2021 09:35:59 -0700 Subject: [PATCH 2/3] PR Feedback --- eng/scripts/Language-Settings.ps1 | 2 +- eng/service.proj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/scripts/Language-Settings.ps1 b/eng/scripts/Language-Settings.ps1 index c562b87c8ab8..00ab9b22e730 100644 --- a/eng/scripts/Language-Settings.ps1 +++ b/eng/scripts/Language-Settings.ps1 @@ -9,7 +9,7 @@ $BlobStorageUrl = "https://azuresdkdocs.blob.core.windows.net/%24web?restype=con function Get-AllPackageInfoFromRepo($serviceDirectory) { $allPackageProps = @() - $msbuildOutput = dotnet msbuild /nologo /t:GetAllPackageInfo $EngDir/service.proj /p:ServiceDirectory=$serviceDirectory + $msbuildOutput = dotnet msbuild /nologo /t:GetPackageInfo $EngDir/service.proj /p:ServiceDirectory=$serviceDirectory foreach ($projectOutput in $msbuildOutput) { diff --git a/eng/service.proj b/eng/service.proj index bdf11bee487b..97c6c40cc3fb 100644 --- a/eng/service.proj +++ b/eng/service.proj @@ -64,7 +64,7 @@ - + Date: Thu, 1 Jul 2021 11:48:14 -0700 Subject: [PATCH 3/3] Ignore empty lines from msbuild output --- eng/scripts/Language-Settings.ps1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/eng/scripts/Language-Settings.ps1 b/eng/scripts/Language-Settings.ps1 index 00ab9b22e730..4eb0f2933807 100644 --- a/eng/scripts/Language-Settings.ps1 +++ b/eng/scripts/Language-Settings.ps1 @@ -13,6 +13,8 @@ function Get-AllPackageInfoFromRepo($serviceDirectory) foreach ($projectOutput in $msbuildOutput) { + if (!$projectOutput) { continue } + $pkgPath, $serviceDirectory, $pkgName, $pkgVersion, $sdkType, $isNewSdk = $projectOutput.Split(' ',[System.StringSplitOptions]::RemoveEmptyEntries).Trim("'") $pkgProp = [PackageProps]::new($pkgName, $pkgVersion, $pkgPath, $serviceDirectory)