Skip to content

Commit

Permalink
Add Get-AllPackageInfoFromRepo (#16947)
Browse files Browse the repository at this point in the history
* Add Get-AllPackageInfoFromRepo

* make get_package_properties.py a script with arguments

* handle invalid output from get_package_properties.py

* Move Push-Location into try block, add finally block

* Ensure isNewSdk resolves to a boolean
  • Loading branch information
chidozieononiwu authored Mar 4, 2021
1 parent 3209d78 commit 9b71692
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
52 changes: 52 additions & 0 deletions eng/scripts/Language-Settings.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,58 @@ $packagePattern = "*.zip"
$MetadataUri = "https://raw.githubusercontent.com/Azure/azure-sdk/master/_data/releases/latest/python-packages.csv"
$BlobStorageUrl = "https://azuresdkdocs.blob.core.windows.net/%24web?restype=container&comp=list&prefix=python%2F&delimiter=%2F"

function Get-AllPackageInfoFromRepo ($serviceDirectory)
{
$allPackageProps = @()
$searchPath = "sdk/*/*/setup.py"
if ($serviceDirectory)
{
$searchPath = "sdk/${serviceDirectory}/*/setup.py"
}

$allPkgPropLines = $null
try
{
Push-Location $RepoRoot
pip install packaging==20.4 -q -I
$allPkgPropLines = python "eng\scripts\get_package_properties.py" -s $searchPath
}
catch
{
# This is soft error and failure is expected for python metapackages
LogError "Failed to get all package properties"
}
finally
{
Pop-Location
}

foreach ($line in $allPkgPropLines)
{
$pkgInfo = ($line -Split ",").Trim("()' ")
$packageName = $pkgInfo[0]
$packageVersion = $pkgInfo[1]
$isNewSdk = ($pkgInfo[2] -eq "True")
$setupPyDir = $pkgInfo[3]
$pkgDirectoryPath = Resolve-Path (Join-Path -Path $RepoRoot $setupPyDir)
$serviceDirectoryName = Split-Path (Split-Path -Path $pkgDirectoryPath -Parent) -Leaf
if ($packageName -match "mgmt")
{
$sdkType = "mgmt"
}
else
{
$sdkType = "client"
}
$pkgProp = [PackageProps]::new($packageName, $packageVersion, $pkgDirectoryPath, $serviceDirectoryName)
$pkgProp.IsNewSdk = $isNewSdk
$pkgProp.SdkType = $sdkType
$pkgProp.ArtifactName = $packageName
$allPackageProps += $pkgProp
}
return $allPackageProps
}

function Get-python-PackageInfoFromRepo ($pkgPath, $serviceDirectory, $pkgName)
{
$packageName = $pkgName.Replace('_', '-')
Expand Down
16 changes: 16 additions & 0 deletions eng/scripts/get_package_properties.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import argparse
import sys
import glob
import os

sys.path.append(os.path.join('scripts', 'devops_tasks'))
from common_tasks import get_package_properties

if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Get package version details from the repo')
parser.add_argument('-s', '--search_path', required=True, help='The scope of the search')
args = parser.parse_args()

for p in glob.glob(args.search_path, recursive=True):
if os.path.basename(os.path.dirname(p)) != 'azure-mgmt' and os.path.basename(os.path.dirname(p)) != 'azure' and os.path.basename(os.path.dirname(p)) != 'azure-storage':
print(get_package_properties(os.path.dirname(p)))

0 comments on commit 9b71692

Please sign in to comment.