From 1f73b64e5c254d912d3db1b4defc9d9086639270 Mon Sep 17 00:00:00 2001 From: Nikita Bykov Date: Mon, 14 Sep 2020 11:01:14 +0300 Subject: [PATCH] Improved documentation for Android --- .../SoftwareReport.Android.psm1 | 202 +++++++++++------- .../SoftwareReport.Generator.ps1 | 28 +-- 2 files changed, 129 insertions(+), 101 deletions(-) diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 index cc9fbb15d..7e799e8ba 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 @@ -1,3 +1,10 @@ +function Split-TableRowByColumns { + param( + [string] $Row + ) + return $Row.Split("|") | ForEach-Object { $_.trim() } +} + function Get-AndroidComponentLocation { param( [string] $ComponentName @@ -6,22 +13,12 @@ function Get-AndroidComponentLocation { return "Location $path" } -function Split-AndroidSDKOutputRow { +function Get-AndroidSDKRoot { param( - [string] $Row + [string] $ComponentName ) - return $Row.Split("|").Trim() -} - -function Create-AndroidTableObject { - param( - [string] $PackageName, - [string] $Description - ) - return [PSCustomObject] @{ - "Package Name" = $PackageName - "Description" = $Description - } + $path = Join-Path $env:ANDROID_HOME $ComponentName + return "Location $path" } function Get-AndroidSDKManagerPath { @@ -42,68 +39,123 @@ function Get-AndroidInstalledPackages { return $androidInstalledPackages } -function Build-AndroidSDKToolsTable { - param ( - [Parameter(Mandatory)] - [object] $packageInfo - ) - return $packageInfo | ForEach-Object { - $packageInfoParts = Split-AndroidSDKOutputRow $_ - $packageName = $packageInfoParts[0] - $packageDescription = $packageInfoParts[2] + ", Revision " + $packageInfoParts[1] - Create-AndroidTableObject -PackageName $packageName -Description $packageDescription - } -} - -function Build-AndroidSDKPlatformTable { - param ( - [Parameter(Mandatory)] - [object] $packageInfo - ) - - return $packageInfo | ForEach-Object { - $packageInfoParts = Split-AndroidSDKOutputRow $_ - $packageName = $packageInfoParts[0].split(";")[1] - $packageDescription = $packageInfoParts[2] + ", Revision " + $packageInfoParts[1] - return Create-AndroidTableObject -PackageName $packageName -Description $packageDescription - } -} - -function Build-AndroidSDKBuildToolsTable { - param ( - [Parameter(Mandatory)] - [object] $packageInfo - ) - - return $packageInfo | ForEach-Object { - $packageInfoParts = Split-AndroidSDKOutputRow $_ - $packageName = $packageInfoParts[0].replace(";", "-") - $packageDescription = "Android SDK Build-Tools, Revision " + $packageInfoParts[1] - return Create-AndroidTableObject -PackageName $packageName -Description $packageDescription - } -} - -function Build-AndroidExtraPackagesTable { - param ( - [Parameter(Mandatory)][AllowEmptyString()] - [string[]] $installedPackages - ) - - $extraPackages = @( - "Android Support Repository", - "Google Play services", - "Google Repository", - "ndk-bundle" - ) - - return $extraPackages | ForEach-Object { - $packageId = $_ - $packageInfo = $installedPackages | Where-Object { $_ -Like "*${packageId}*" } | Select-Object -First 1 - $packageInfoParts = Split-AndroidSDKOutputRow $packageInfo - return [PSCustomObject] @{ - "Package Name" = $packageInfoParts[2] - "Version" = $packageInfoParts[1] +function 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 + "Location" = Get-AndroidComponentLocation -ComponentName "platforms" + }, + @{ + "Package" = "Android SDK Build-tools" + "Version" = Get-AndroidBuildToolVersions -PackageInfo $packageInfo + "Location" = Get-AndroidComponentLocation -ComponentName "build-tools" + }, + @{ + "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 + "Location" = $_.Location } } +} + +function Get-AndroidPackageVersions { + param ( + [Parameter(Mandatory)] + [object] $PackageInfo, + [Parameter(Mandatory)] + [object] $MatchedString + ) + + $versions = $packageInfo | Where-Object { $_ -Match $MatchedString } | ForEach-Object { + $packageInfoParts = Split-TableRowByColumns $_ + return $packageInfoParts[1] + } + return ($versions -Join "
") +} + +function Get-AndroidPlatformVersions { + param ( + [Parameter(Mandatory)] + [object] $PackageInfo + ) + + $versions = $packageInfo | Where-Object { $_ -Match "Android SDK Platform " } | ForEach-Object { + $packageInfoParts = Split-TableRowByColumns $_ + $revision = $packageInfoParts[1] + $version = $packageInfoParts[0].split(";")[1] + return "$version, (rev $revision)" + } + [array]::Reverse($versions) + return ($versions -Join "
") +} + +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 "
") } \ No newline at end of file diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 index 5ff886c77..c93e5b8a2 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 @@ -227,32 +227,8 @@ $markdown += Get-PowerShellModules | New-MDTable $markdown += New-MDNewLine # Android section -$androidInstalledPackages = Get-AndroidInstalledPackages - -$markdown += New-MDHeader "Android SDK Tools" -Level 3 -$androidSDKTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Tools" -or $_ -Match "Android SDK Platform-Tools" } -$markdown += Build-AndroidSDKToolsTable $androidSDKTools | New-MDTable +$markdown += New-MDHeader "Android" -Level 3 +$markdown += Build-AndroidTable | New-MDTable $markdown += New-MDNewLine -$markdown += New-MDHeader "Android SDK Platforms" -Level 3 -$androidSDKPlatforms = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Platform " } -$markdown += New-MDInlineCode -Text (Get-AndroidComponentLocation -ComponentName "platforms") -$markdown += New-MDNewLine -$markdown += Build-AndroidSDKPlatformTable $androidSDKPlatforms | New-MDTable -$markdown += New-MDNewLine - -$markdown += New-MDHeader "Android SDK Build-Tools" -Level 3 -$androidSDKBuildTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Build-Tools" } -$markdown += New-MDInlineCode -Text (Get-AndroidComponentLocation -ComponentName "build-tools") -$markdown += New-MDNewLine -$markdown += Build-AndroidSDKBuildtoolsTable $androidSDKBuildTools | New-MDTable -$markdown += New-MDNewLine - -$markdown += New-MDHeader "Android Extra Packages" -Level 3 -$markdown += Build-AndroidExtraPackagesTable $androidInstalledPackages | New-MDTable -$markdown += New-MDNewLine - -$markdown += New-MDHeader "Cached Docker images" -Level 3 -$markdown += New-MDList -Style Unordered -Lines @(Get-CachedDockerImages) - $markdown | Out-File -FilePath "C:\InstalledSoftware.md" \ No newline at end of file