From 6a33354485a62a2d62a50600150133e5fdae5efa Mon Sep 17 00:00:00 2001 From: Nikita Bykov Date: Mon, 21 Sep 2020 12:05:58 +0300 Subject: [PATCH] improved documentation for Android on macOS --- .../SoftwareReport.Android.psm1 | 199 ++++++++---------- .../SoftwareReport.Generator.ps1 | 44 +--- 2 files changed, 94 insertions(+), 149 deletions(-) diff --git a/images/macos/software-report/SoftwareReport.Android.psm1 b/images/macos/software-report/SoftwareReport.Android.psm1 index 8145b248..c64e0ad6 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,122 @@ function Get-AndroidInstalledPackages { return $androidInstalledPackages } -function Build-AndroidSDKToolsTable { + +function Build-AndroidTable { + Write-Host "Build-AndroidTable" + $packageInfo = Get-AndroidInstalledPackages + Write-Host $packageInfo + 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-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "ndk-bundle" + } + ) | Where-Object { $_.Version } | ForEach-Object { + [PSCustomObject] @{ + "Package Name" = $_.Package + "Version" = $_.Version + } + } +} + +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] - $packageDescription = $packageInfoParts[2] + ", Revision " + $packageInfoParts[1] - return Build-AndroidTableObject -PackageName $packageName -Description $packageDescription + return $packageInfoParts[1] } + return ($versions -Join "
") } -function Build-AndroidSDKPlatformTable { +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].split(";")[1] - $packageDescription = $packageInfoParts[2] + ", 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-AndroidSDKBuildToolsTable { +function Get-AndroidBuildToolVersions { param ( [Parameter(Mandatory)] - [object] $packageInfo + [object] $PackageInfo ) - return $packageInfo | ForEach-Object { + $versions = $packageInfo | Where-Object { $_ -Match "Android SDK Build-Tools" } | ForEach-Object { $packageInfoParts = Split-TableRowByColumns $_ - $packageName = $packageInfoParts[0].replace(";", "-") - $packageDescription = "Android SDK Build-Tools, Revision " + $packageInfoParts[1] - return Build-AndroidTableObject -PackageName $packageName -Description $packageDescription + 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 Build-AndroidNDKTable { +function Get-AndroidGoogleAPIsVersions { param ( - [Parameter(Mandatory)][AllowEmptyString()] - [string[]] $installedPackages + [Parameter(Mandatory)] + [object] $PackageInfo ) - $ndkInfo = @() - - 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" - } - - $ndkFolderPath = Join-Path (Get-AndroidSDKRoot) "ndk" - $ndkInfo += Get-ChildItem -Path $ndkFolderPath | ForEach-Object { - return [PSCustomObject] @{ - "Version" = $_.Name - "Path" = $_.FullName - } - } - } - - $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" - } - - $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] - } + $versions = $packageInfo | Where-Object { $_ -Match "Google APIs" } | ForEach-Object { + $packageInfoParts = Split-TableRowByColumns $_ + return $packageInfoParts[0].split(";")[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 9627e24e..13e4aada 100644 --- a/images/macos/software-report/SoftwareReport.Generator.ps1 +++ b/images/macos/software-report/SoftwareReport.Generator.ps1 @@ -185,9 +185,9 @@ $azureCLIVersion = Run-Command "az -v" | Select-String "^azure-cli" | Take-Part $awsVersion = Run-Command "aws --version" | Take-Part -Part 0 | Take-Part -Delimiter "/" -Part 1 $aliyunVersion = Run-Command "aliyun --version" | Select-String "Alibaba Cloud Command Line Interface Version " | Take-Part -Part 6 $awsSamVersion = Run-Command "sam --version" | Take-Part -Part 3 -$awsSessionManagerVersion = Run-Command "session-manager-plugin --version" +$awsSessionManagerVersion = Run-Command "session-manager-plugin --version" $ghcUpVersion = Run-Command "ghcup --version" | Take-Part -Part 5 -$ghcVersion = Run-Command "ghc --version" | Take-Part -Part 7 +$ghcVersion = Run-Command "ghc --version" | Take-Part -Part 7 $cabalVersion = Run-Command "cabal --version" | Take-Part -Part 3 $stackVersion = Run-Command "stack --version" | Take-Part -Part 1 | ForEach-Object {$_.replace(",","")} @@ -300,45 +300,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 #