diff --git a/eng/scripts/Language-Settings.ps1 b/eng/scripts/Language-Settings.ps1 index eb56855d7a0b..83462bfc8d19 100644 --- a/eng/scripts/Language-Settings.ps1 +++ b/eng/scripts/Language-Settings.ps1 @@ -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('_', '-') diff --git a/eng/scripts/get_package_properties.py b/eng/scripts/get_package_properties.py new file mode 100644 index 000000000000..aa65f88d9fa2 --- /dev/null +++ b/eng/scripts/get_package_properties.py @@ -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))) \ No newline at end of file