diff --git a/images/macos/software-report/SoftwareReport.Android.psm1 b/images/macos/software-report/SoftwareReport.Android.psm1 index 8145b248f..75f1d9f86 100644 --- a/images/macos/software-report/SoftwareReport.Android.psm1 +++ b/images/macos/software-report/SoftwareReport.Android.psm1 @@ -1,7 +1,3 @@ -Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" - -$os = Get-OSVersion - function Split-TableRowByColumns { param( [string] $Row @@ -9,17 +5,6 @@ function Split-TableRowByColumns { return $Row.Split("|") | ForEach-Object { $_.trim() } } -function Build-AndroidTableObject { - param( - [string] $PackageName, - [string] $Description - ) - return [PSCustomObject] @{ - "Package Name" = $PackageName - "Description" = $Description - } -} - function Get-AndroidSDKRoot { return Join-Path $env:HOME "Library" "Android" "sdk" } @@ -43,124 +28,148 @@ function Get-AndroidInstalledPackages { return $androidInstalledPackages } -function Build-AndroidSDKToolsTable { - param ( - [Parameter(Mandatory)] - [object] $packageInfo - ) - - return $packageInfo | ForEach-Object { - $packageInfoParts = Split-TableRowByColumns $_ - $packageName = $packageInfoParts[0] - $packageDescription = $packageInfoParts[2] + ", Revision " + $packageInfoParts[1] - return Build-AndroidTableObject -PackageName $packageName -Description $packageDescription + +function Build-AndroidTable { + Write-Host "Build-AndroidTable" + $packageInfo = Get-AndroidInstalledPackages + return @( + @{ + "Package" = "Android SDK Tools" + "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Android SDK Tools" + }, + @{ + "Package" = "Android SDK Platforms" + "Version" = Get-AndroidPlatformVersions -PackageInfo $packageInfo + }, + @{ + "Package" = "Android SDK Build-tools" + "Version" = Get-AndroidBuildToolVersions -PackageInfo $packageInfo + }, + @{ + "Package" = "Android SDK Platform-Tools" + "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Android SDK Platform-Tools" + }, + @{ + "Package" = "Google APIs" + "Version" = Get-AndroidGoogleAPIsVersions -PackageInfo $packageInfo + }, + @{ + "Package" = "Android Support Repository" + "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Android Support Repository" + }, + @{ + "Package" = "Google Play services" + "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Google Play services" + }, + @{ + "Package" = "Google Repository" + "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Google Repository" + }, + @{ + "Package" = "SDK Patch Applier v4" + "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "SDK Patch Applier v4" + }, + @{ + "Package" = "CMake" + "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "cmake" + }, + @{ + "Package" = "NDK" + "Version" = Get-AndroidNDKVersions -PackageInfo $packageInfo + } + ) | Where-Object { $_.Version } | ForEach-Object { + [PSCustomObject] @{ + "Package Name" = $_.Package + "Version" = $_.Version + } } } -function Build-AndroidSDKPlatformTable { +function Get-AndroidPackageVersions { param ( [Parameter(Mandatory)] - [object] $packageInfo + [object] $PackageInfo, + [Parameter(Mandatory)] + [object] $MatchedString ) - return $packageInfo | ForEach-Object { + $versions = $packageInfo | Where-Object { $_ -Match $MatchedString } | ForEach-Object { $packageInfoParts = Split-TableRowByColumns $_ - $packageName = $packageInfoParts[0].split(";")[1] - $packageDescription = $packageInfoParts[2] + ", Revision " + $packageInfoParts[1] - return Build-AndroidTableObject -PackageName $packageName -Description $packageDescription + return $packageInfoParts[1] } + return ($versions -Join "
") } -function Build-AndroidSDKBuildToolsTable { +function Get-AndroidPlatformVersions { param ( [Parameter(Mandatory)] - [object] $packageInfo + [object] $PackageInfo ) - return $packageInfo | ForEach-Object { + $versions = $packageInfo | Where-Object { $_ -Match "Android SDK Platform " } | ForEach-Object { $packageInfoParts = Split-TableRowByColumns $_ - $packageName = $packageInfoParts[0].replace(";", "-") - $packageDescription = "Android SDK Build-Tools, Revision " + $packageInfoParts[1] - return Build-AndroidTableObject -PackageName $packageName -Description $packageDescription + $revision = $packageInfoParts[1] + $version = $packageInfoParts[0].split(";")[1] + return "$version (rev $revision)" } + [array]::Reverse($versions) + return ($versions -Join "
") } -function Build-AndroidNDKTable { +function Get-AndroidBuildToolVersions { + param ( + [Parameter(Mandatory)] + [object] $PackageInfo + ) + + $versions = $packageInfo | Where-Object { $_ -Match "Android SDK Build-Tools" } | ForEach-Object { + $packageInfoParts = Split-TableRowByColumns $_ + return $packageInfoParts[1] + } + $groupVersions = @() + $versions | ForEach-Object { + $majorVersion = $_.Split(".")[0] + $groupVersions += $versions | Where-Object { $_.StartsWith($majorVersion) } | Join-String -Separator " " + } + return ($groupVersions | Sort-Object -Descending -Unique | Join-String -Separator "
") +} + +function Get-AndroidGoogleAPIsVersions { + param ( + [Parameter(Mandatory)] + [object] $PackageInfo + ) + + $versions = $packageInfo | Where-Object { $_ -Match "Google APIs" } | ForEach-Object { + $packageInfoParts = Split-TableRowByColumns $_ + return $packageInfoParts[0].split(";")[1] + } + return ($versions -Join "
") +} + +function Get-AndroidNDKVersions { param ( [Parameter(Mandatory)][AllowEmptyString()] - [string[]] $installedPackages + [string[]] $packageInfo ) - $ndkInfo = @() + $os = Get-OSVersion + $versions = @() if ($os.IsLessThanBigSur) { - $ndkInfo += [PSCustomObject] @{ - # Hardcode NDK 15 as a separate case since it is installed manually without sdk-manager (to none default location) - "Version" = "15.2.4203891" - "Path" = Join-Path (Get-AndroidSDKRoot) "android-ndk-r15c" - } - + # Hardcode NDK 15 as a separate case since it is installed manually without sdk-manager (to none default location) + $versions += "15.2.4203891" + $ndkFolderPath = Join-Path (Get-AndroidSDKRoot) "ndk" - $ndkInfo += Get-ChildItem -Path $ndkFolderPath | ForEach-Object { - return [PSCustomObject] @{ - "Version" = $_.Name - "Path" = $_.FullName - } + Get-ChildItem -Path $ndkFolderPath | ForEach-Object { + $versions += $_.Name } } - - $ndkBundleInfo = $installedPackages | Where-Object { $_ -Match "ndk-bundle" } | Select-Object -First 1 - $ndkBundleVersion = (Split-TableRowByColumns $ndkBundleInfo)[1] - $ndkInfo += [PSCustomObject] @{ - "Version" = $ndkBundleVersion - "Path" = Join-Path (Get-AndroidSDKRoot) "ndk-bundle" + + $versions += $packageInfo | Where-Object { $_ -Match "ndk-bundle" } | ForEach-Object { + $packageInfoParts = Split-TableRowByColumns $_ + return $packageInfoParts[1] } - $ndkInfo | ForEach-Object { - $_.Path = $_.Path.Replace($env:HOME, '$HOME') - } - - return $ndkInfo -} - -function Build-AndroidUtilsTable { - param ( - [Parameter(Mandatory)][AllowEmptyString()] - [string[]] $installedPackages - ) - - $utilsList = @("cmake", "Android Emulator") - return $utilsList | ForEach-Object { - $packageName = $_ - $packageInfo = $installedPackages | Where-Object { $_ -Match $packageName } | Select-Object -First 1 - $packageInfoParts = Split-TableRowByColumns $packageInfo - return [PSCustomObject] @{ - "Package Name" = $packageName - "Version" = $packageInfoParts[1] - } - } -} - -function Build-AndroidExtraPackagesTable { - param ( - [Parameter(Mandatory)][AllowEmptyString()] - [string[]] $installedPackages - ) - - $extraPackages = @( - "Android Support Repository", - "Google Play services", - "Google Repository", - "Hardware_Accelerated_Execution_Manager" - ) - - return $extraPackages | ForEach-Object { - $packageId = $_ - $packageInfo = $installedPackages | Where-Object { $_ -Like "*${packageId}*" } | Select-Object -First 1 - $packageInfoParts = Split-TableRowByColumns $packageInfo - return [PSCustomObject] @{ - "Package Name" = $packageInfoParts[2] - "Version" = $packageInfoParts[1] - } - } + return ($versions -Join "
") } \ No newline at end of file diff --git a/images/macos/software-report/SoftwareReport.Generator.ps1 b/images/macos/software-report/SoftwareReport.Generator.ps1 index 9a8ada4a4..87c944598 100644 --- a/images/macos/software-report/SoftwareReport.Generator.ps1 +++ b/images/macos/software-report/SoftwareReport.Generator.ps1 @@ -310,45 +310,7 @@ if (-not $os.IsBigSur) { # Android section $markdown += New-MDHeader "Android" -Level 3 -$androidInstalledPackages = Get-AndroidInstalledPackages - -$markdown += New-MDHeader "Android SDK Tools" -Level 4 -$androidSDKTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Tools" } -$markdown += Build-AndroidSDKToolsTable $androidSDKTools | New-MDTable -$markdown += New-MDNewLine - -$markdown += New-MDHeader "Android SDK Platform-Tools" -Level 4 -$androidSDKPlatformTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Platform-Tools" } -$markdown += Build-AndroidSDKToolsTable $androidSDKPlatformTools | New-MDTable -$markdown += New-MDNewLine - -$markdown += New-MDHeader "Android SDK Platforms" -Level 4 -$androidSDKPlatforms = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Platform " } -$markdown += Build-AndroidSDKPlatformTable $androidSDKPlatforms | New-MDTable -$markdown += New-MDNewLine - -$markdown += New-MDHeader "Android SDK Build-Tools" -Level 4 -$androidSDKBuildTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Build-Tools" } -$markdown += Build-AndroidSDKBuildtoolsTable $androidSDKBuildTools | New-MDTable -$markdown += New-MDNewLine - -$markdown += New-MDHeader "Android NDKs" -Level 4 -$markdown += Build-AndroidNDKTable $androidInstalledPackages | New-MDTable -$markdown += New-MDNewLine - -$markdown += New-MDHeader "Android Utils" -Level 4 -$markdown += Build-AndroidUtilsTable $androidInstalledPackages | New-MDTable -$markdown += New-MDNewLine - -$androidGoogleAPIsTable = $androidInstalledPackages | Where-Object { $_ -Match "Google APIs" } -if ($androidGoogleAPIsTable.Count -gt 0) { - $markdown += New-MDHeader "Android Google APIs" -Level 4 - $markdown += Build-AndroidSDKPlatformTable $androidGoogleAPIsTable | New-MDTable - $markdown += New-MDNewLine -} - -$markdown += New-MDHeader "Extra Packages" -Level 4 -$markdown += Build-AndroidExtraPackagesTable $androidInstalledPackages | New-MDTable +$markdown += Build-AndroidTable | New-MDTable $markdown += New-MDNewLine #