@@ -10,29 +10,30 @@ function Get-AllPackageInfoFromRepo ([string] $ServiceDirectory) {
1010 $allPackageProps = @ ()
1111 Push-Location $RepoRoot
1212 try {
13- $searchPath = ' sdk'
13+ $sdkPath = Join-Path $RepoRoot ' sdk' - Resolve
1414
1515 if ($ServiceDirectory -and $ServiceDirectory -ne ' auto' ) {
1616 $searchPath = Join-Path ' sdk' $ServiceDirectory
1717 }
1818
19- $cargoTomlFiles = Get-ChildItem - Path $searchPath - Recurse - Filter ' Cargo.toml' - ErrorAction SilentlyContinue
19+ $packages = cargo metadata -- format-version 1
20+ | ConvertFrom-Json - AsHashtable
21+ | Select-Object - ExpandProperty packages
22+ | Where-Object { $_.manifest_path.StartsWith ($sdkPath ) }
2023
2124 $packageManifests = @ {}
22- foreach ($file in $cargoTomlFiles ) {
23- $manifest = cargo read-manifest -- manifest- path $file | ConvertFrom-Json - AsHashtable
24-
25- if ($manifest.manifest_path -replace ' \\' , ' /' -match ' /sdk/([^/]+)/' ) {
26- $manifest.ServiceDirectoryName = $Matches [1 ]
25+ foreach ($package in $packages ) {
26+ if ($package.manifest_path -replace ' \\' , ' /' -match ' /sdk/([^/]+)/' ) {
27+ $package.ServiceDirectoryName = $Matches [1 ]
2728 }
2829 else {
2930 # ignore manifests that are not in a service directory
3031 continue
3132 }
3233
33- $manifest .RelativePath = (Split-Path $manifest .manifest_path - Parent).Replace($RepoRoot , " " ).SubString(1 )
34- $manifest .DependentPackages = @ ()
35- $packageManifests [$manifest .name ] = $manifest
34+ $package .RelativePath = (Split-Path $package .manifest_path - Parent).Replace($RepoRoot , " " ).SubString(1 )
35+ $package .DependentPackages = @ ()
36+ $packageManifests [$package .name ] = $package
3637 }
3738 }
3839 catch {
@@ -44,22 +45,22 @@ function Get-AllPackageInfoFromRepo ([string] $ServiceDirectory) {
4445 }
4546
4647 # Invert the manifest dependency graph
47- foreach ($manifest in $packageManifests.Values ) {
48- foreach ($dependency in $manifest .dependencies ) {
48+ foreach ($package in $packageManifests.Values ) {
49+ foreach ($dependency in $package .dependencies ) {
4950 $dependencyManifest = $packageManifests [$dependency.name ]
5051 if ($dependencyManifest ) {
51- $dependencyManifest.DependentPackages += $manifest
52+ $dependencyManifest.DependentPackages += $package
5253 }
5354 }
5455 }
5556
5657 # Flatten the dependency graph recursively
57- function GetDependentPackages ($manifest , $dependantPackages ) {
58+ function GetDependentPackages ($package , $dependantPackages ) {
5859 if (! $dependantPackages ) {
5960 $dependantPackages = @ ()
6061 }
6162
62- foreach ($dependency in $manifest .DependentPackages ) {
63+ foreach ($dependency in $package .DependentPackages ) {
6364 if ($dependantPackages.Contains ($dependency )) {
6465 continue
6566 }
@@ -70,20 +71,20 @@ function Get-AllPackageInfoFromRepo ([string] $ServiceDirectory) {
7071 return $dependantPackages ;
7172 }
7273
73- foreach ($manifest in $packageManifests.Values ) {
74- $absolutePath = Split-Path $manifest .manifest_path - Parent - Resolve
75- $pkgProp = [PackageProps ]::new($manifest .name , $manifest .version , $absolutePath , $manifest .ServiceDirectoryName )
74+ foreach ($package in $packageManifests.Values ) {
75+ $absolutePath = Split-Path $package .manifest_path - Parent - Resolve
76+ $pkgProp = [PackageProps ]::new($package .name , $package .version , $absolutePath , $package .ServiceDirectoryName )
7677 $pkgProp.IsNewSdk = $true
77- $pkgProp.ArtifactName = $manifest .name
78+ $pkgProp.ArtifactName = $package .name
7879
79- if ($manifest .name -match " mgmt" ) {
80+ if ($package .name -match " mgmt" ) {
8081 $pkgProp.SdkType = " mgmt"
8182 }
8283 else {
8384 $pkgProp.SdkType = " client"
8485 }
8586
86- $pkgProp.DependentPackages = GetDependentPackages $manifest | Select-Object - ExpandProperty RelativePath
87+ $pkgProp.DependentPackages = GetDependentPackages $package | Select-Object - ExpandProperty RelativePath
8788
8889 $allPackageProps += $pkgProp
8990 }
0 commit comments