diff --git a/helpers/software-report-base/SoftwareReport.Comparer.psm1 b/helpers/software-report-base/SoftwareReport.Comparer.psm1 index 45af1971..bcce515c 100644 --- a/helpers/software-report-base/SoftwareReport.Comparer.psm1 +++ b/helpers/software-report-base/SoftwareReport.Comparer.psm1 @@ -39,7 +39,7 @@ class SoftwareReportComparer { # Nodes are equal but not identical, so something was changed if ($currentReportNode -is [TableNode]) { $this.CompareSimilarTableNodes($sameNodeInPreviousReport, $currentReportNode, $Headers) - } elseif ($currentReportNode -is [ToolVersionsNode]) { + } elseif ($currentReportNode -is [ToolVersionsListNode]) { $this.CompareSimilarToolVersionsListNodes($sameNodeInPreviousReport, $currentReportNode, $Headers) } else { $this.ChangedItems.Add([ReportDifferenceItem]::new($sameNodeInPreviousReport, $currentReportNode, $Headers)) @@ -79,7 +79,7 @@ class SoftwareReportComparer { } } - hidden [void] CompareSimilarToolVersionsListNodes([ToolVersionsNode] $PreviousReportNode, [ToolVersionsNode] $CurrentReportNode, [Array] $Headers) { + hidden [void] CompareSimilarToolVersionsListNodes([ToolVersionsListNode] $PreviousReportNode, [ToolVersionsListNode] $CurrentReportNode, [Array] $Headers) { $previousReportMajorVersions = $PreviousReportNode.Versions | ForEach-Object { $PreviousReportNode.ExtractMajorVersion($_) } $currentReportMajorVersion = $CurrentReportNode.Versions | ForEach-Object { $CurrentReportNode.ExtractMajorVersion($_) } @@ -89,15 +89,15 @@ class SoftwareReportComparer { $changedCurrentVersions = $CurrentReportNode.Versions | Where-Object { ($CurrentReportNode.ExtractMajorVersion($_) -in $previousReportMajorVersions) -and ($_ -notin $PreviousReportNode.Versions) } if ($addedVersions.Count -gt 0) { - $this.AddedItems.Add([ReportDifferenceItem]::new($null, [ToolVersionsNode]::new($CurrentReportNode.ToolName, $addedVersions, $CurrentReportNode.MajorVersionRegex, $true), $Headers)) + $this.AddedItems.Add([ReportDifferenceItem]::new($null, [ToolVersionsListNode]::new($CurrentReportNode.ToolName, $addedVersions, $CurrentReportNode.MajorVersionRegex, $true), $Headers)) } if ($deletedVersions.Count -gt 0) { - $this.DeletedItems.Add([ReportDifferenceItem]::new([ToolVersionsNode]::new($PreviousReportNode.ToolName, $deletedVersions, $PreviousReportNode.MajorVersionRegex, $true), $null, $Headers)) + $this.DeletedItems.Add([ReportDifferenceItem]::new([ToolVersionsListNode]::new($PreviousReportNode.ToolName, $deletedVersions, $PreviousReportNode.MajorVersionRegex, $true), $null, $Headers)) } - $previousChangedNode = ($changedPreviousVersions.Count -gt 0) ? [ToolVersionsNode]::new($PreviousReportNode.ToolName, $changedPreviousVersions, $PreviousReportNode.MajorVersionRegex, $true) : $null - $currentChangedNode = ($changedCurrentVersions.Count -gt 0) ? [ToolVersionsNode]::new($CurrentReportNode.ToolName, $changedCurrentVersions, $CurrentReportNode.MajorVersionRegex, $true) : $null + $previousChangedNode = ($changedPreviousVersions.Count -gt 0) ? [ToolVersionsListNode]::new($PreviousReportNode.ToolName, $changedPreviousVersions, $PreviousReportNode.MajorVersionRegex, $true) : $null + $currentChangedNode = ($changedCurrentVersions.Count -gt 0) ? [ToolVersionsListNode]::new($CurrentReportNode.ToolName, $changedCurrentVersions, $CurrentReportNode.MajorVersionRegex, $true) : $null if ($previousChangedNode -and $currentChangedNode) { $this.ChangedItems.Add([ReportDifferenceItem]::new($previousChangedNode, $currentChangedNode, $Headers)) } @@ -111,7 +111,7 @@ class SoftwareReportComparer { hidden [Boolean] FilterExcludedNodes([BaseNode] $Node) { # We shouldn't show "Image Version" diff because it is already shown in report header - if (($Node -is [ToolNode]) -and ($Node.ToolName -eq "Image Version:")) { + if (($Node -is [ToolVersionNode]) -and ($Node.ToolName -eq "Image Version:")) { return $false } @@ -313,7 +313,7 @@ class SoftwareReportComparerReport { } [String] GetImageVersion([SoftwareReport] $Report) { - $imageVersionNode = $Report.Root.Children ?? @() | Where-Object { ($_ -is [ToolNode]) -and ($_.ToolName -eq "Image Version:") } | Select-Object -First 1 + $imageVersionNode = $Report.Root.Children ?? @() | Where-Object { ($_ -is [ToolVersionNode]) -and ($_.ToolName -eq "Image Version:") } | Select-Object -First 1 return $imageVersionNode.Version ?? "Unknown version" } } diff --git a/helpers/software-report-base/SoftwareReport.Nodes.psm1 b/helpers/software-report-base/SoftwareReport.Nodes.psm1 index 48ad1cf7..5e820dc6 100644 --- a/helpers/software-report-base/SoftwareReport.Nodes.psm1 +++ b/helpers/software-report-base/SoftwareReport.Nodes.psm1 @@ -10,10 +10,10 @@ class NodesFactory { static [BaseNode] ParseNodeFromObject($jsonObj) { if ($jsonObj.NodeType -eq [HeaderNode].Name) { return [HeaderNode]::FromJsonObject($jsonObj) - } elseif ($jsonObj.NodeType -eq [ToolNode].Name) { - return [ToolNode]::FromJsonObject($jsonObj) - } elseif ($jsonObj.NodeType -eq [ToolVersionsNode].Name) { - return [ToolVersionsNode]::FromJsonObject($jsonObj) + } elseif ($jsonObj.NodeType -eq [ToolVersionNode].Name) { + return [ToolVersionNode]::FromJsonObject($jsonObj) + } elseif ($jsonObj.NodeType -eq [ToolVersionsListNode].Name) { + return [ToolVersionsListNode]::FromJsonObject($jsonObj) } elseif ($jsonObj.NodeType -eq [TableNode].Name) { return [TableNode]::FromJsonObject($jsonObj) } elseif ($jsonObj.NodeType -eq [NoteNode].Name) { @@ -53,25 +53,25 @@ class HeaderNode: BaseNode { } } - [HeaderNode] AddHeaderNode([String] $Title) { + [HeaderNode] AddHeader([String] $Title) { $node = [HeaderNode]::new($Title) $this.AddNode($node) return $node } - [void] AddToolNode([String] $ToolName, [String] $Version) { - $this.AddNode([ToolNode]::new($ToolName, $Version)) + [void] AddToolVersion([String] $ToolName, [String] $Version) { + $this.AddNode([ToolVersionNode]::new($ToolName, $Version)) } - [void] AddToolVersionsNode([String] $ToolName, [Array] $Version, [String] $MajorVersionRegex, [Boolean] $InlineList) { - $this.AddNode([ToolVersionsNode]::new($ToolName, $Version, $MajorVersionRegex, $InlineList)) + [void] AddToolVersionsList([String] $ToolName, [Array] $Version, [String] $MajorVersionRegex, [Boolean] $InlineList) { + $this.AddNode([ToolVersionsListNode]::new($ToolName, $Version, $MajorVersionRegex, $InlineList)) } - [void] AddTableNode([Array] $Table) { + [void] AddTable([Array] $Table) { $this.AddNode([TableNode]::FromObjectsArray($Table)) } - [void] AddNoteNode([String] $Content) { + [void] AddNote([String] $Content) { $this.AddNode([NoteNode]::new($Content)) } @@ -124,10 +124,10 @@ class HeaderNode: BaseNode { } # Node type to describe the tool with single version: "Bash 5.1.16" -class ToolNode: BaseToolNode { +class ToolVersionNode: BaseToolNode { [String] $Version - ToolNode([String] $ToolName, [String] $Version): base($ToolName) { + ToolVersionNode([String] $ToolName, [String] $Version): base($ToolName) { $this.Version = $Version } @@ -148,17 +148,17 @@ class ToolNode: BaseToolNode { } static [BaseNode] FromJsonObject($jsonObj) { - return [ToolNode]::new($jsonObj.ToolName, $jsonObj.Version) + return [ToolVersionNode]::new($jsonObj.ToolName, $jsonObj.Version) } } # Node type to describe the tool with multiple versions "Toolcache Node.js 14.17.6 16.2.0 18.2.3" -class ToolVersionsNode: BaseToolNode { +class ToolVersionsListNode: BaseToolNode { [Array] $Versions [Regex] $MajorVersionRegex [String] $ListType - ToolVersionsNode([String] $ToolName, [Array] $Versions, [String] $MajorVersionRegex, [Boolean] $InlineList): base($ToolName) { + ToolVersionsListNode([String] $ToolName, [Array] $Versions, [String] $MajorVersionRegex, [Boolean] $InlineList): base($ToolName) { $this.Versions = $Versions $this.MajorVersionRegex = [Regex]::new($MajorVersionRegex) $this.ListType = $InlineList ? "Inline" : "List" @@ -203,8 +203,8 @@ class ToolVersionsNode: BaseToolNode { } } - static [ToolVersionsNode] FromJsonObject($jsonObj) { - return [ToolVersionsNode]::new($jsonObj.ToolName, $jsonObj.Versions, $jsonObj.MajorVersionRegex, $jsonObj.ListType -eq "Inline") + static [ToolVersionsListNode] FromJsonObject($jsonObj) { + return [ToolVersionsListNode]::new($jsonObj.ToolName, $jsonObj.Versions, $jsonObj.MajorVersionRegex, $jsonObj.ListType -eq "Inline") } hidden [void] ValidateMajorVersionRegex() { diff --git a/images/macos/software-report/SoftwareReport.Browsers.psm1 b/images/macos/software-report/SoftwareReport.Browsers.psm1 index 2ee1fce6..6dbf1fbf 100644 --- a/images/macos/software-report/SoftwareReport.Browsers.psm1 +++ b/images/macos/software-report/SoftwareReport.Browsers.psm1 @@ -1,14 +1,14 @@ function Build-BrowserSection { return @( - [ToolNode]::new("Safari", $(Get-SafariVersion)) - [ToolNode]::new("SafariDriver", $(Get-SafariDriverVersion)) - [ToolNode]::new("Google Chrome", $(Get-ChromeVersion)) - [ToolNode]::new("ChromeDriver", $(Get-ChromeDriverVersion)) - [ToolNode]::new("Microsoft Edge", $(Get-EdgeVersion)) - [ToolNode]::new("Microsoft Edge WebDriver", $(Get-EdgeDriverVersion)) - [ToolNode]::new("Mozilla Firefox", $(Get-FirefoxVersion)) - [ToolNode]::new("geckodriver", $(Get-GeckodriverVersion)) - [ToolNode]::new("Selenium server", $(Get-SeleniumVersion)) + [ToolVersionNode]::new("Safari", $(Get-SafariVersion)) + [ToolVersionNode]::new("SafariDriver", $(Get-SafariDriverVersion)) + [ToolVersionNode]::new("Google Chrome", $(Get-ChromeVersion)) + [ToolVersionNode]::new("ChromeDriver", $(Get-ChromeDriverVersion)) + [ToolVersionNode]::new("Microsoft Edge", $(Get-EdgeVersion)) + [ToolVersionNode]::new("Microsoft Edge WebDriver", $(Get-EdgeDriverVersion)) + [ToolVersionNode]::new("Mozilla Firefox", $(Get-FirefoxVersion)) + [ToolVersionNode]::new("geckodriver", $(Get-GeckodriverVersion)) + [ToolVersionNode]::new("Selenium server", $(Get-SeleniumVersion)) ) } @@ -84,7 +84,7 @@ function Build-BrowserWebdriversEnvironmentTable { } } - $node.AddTableNode($table) + $node.AddTable($table) return $node } diff --git a/images/macos/software-report/SoftwareReport.Common.psm1 b/images/macos/software-report/SoftwareReport.Common.psm1 index 3817de8b..698e99d8 100644 --- a/images/macos/software-report/SoftwareReport.Common.psm1 +++ b/images/macos/software-report/SoftwareReport.Common.psm1 @@ -87,7 +87,7 @@ function Get-GccVersions { $versionList | Foreach-Object { $nameVersion = Run-Command "gcc-${_} --version" | Select-Object -First 1 $version = ($nameVersion -replace "^gcc-${_}").Trim() -replace '\).*$', ')' - return [ToolNode]::new("GCC ${_}", "$version - available by ``gcc-${_}`` alias") + return [ToolVersionNode]::new("GCC ${_}", "$version - available by ``gcc-${_}`` alias") } } @@ -96,7 +96,7 @@ function Get-FortranVersions { $versionList | Foreach-Object { $nameVersion = Run-Command "gfortran-${_} --version" | Select-Object -First 1 $version = ($nameVersion -replace "^GNU Fortran").Trim() -replace '\).*$', ')' - return [ToolNode]::new("GNU Fortran ${_}", "$version - available by ``gfortran-${_}`` alias") + return [ToolVersionNode]::new("GNU Fortran ${_}", "$version - available by ``gfortran-${_}`` alias") } } @@ -111,8 +111,8 @@ function Get-ClangLLVMVersions { $homebrewClangVersion = $clangVersionRegex.Match($homebrewClangOutput).Groups['version'].Value return @( - [ToolNode]::new("Clang/LLVM", $defaultClangVersion) - [ToolNode]::new("Clang/LLVM (Homebrew)", "$homebrewClangVersion - available on ``$homebrewClangPath``") + [ToolVersionNode]::new("Clang/LLVM", $defaultClangVersion) + [ToolVersionNode]::new("Clang/LLVM (Homebrew)", "$homebrewClangVersion - available on ``$homebrewClangPath``") ) } @@ -168,9 +168,9 @@ function Build-OSInfoSection { $kernelVersion = $parsedSystemInfo[1].Replace($fieldsToInclude[1],"").Trim() $osInfoNode = [HeaderNode]::new("macOS $version") - $osInfoNode.AddToolNode("OS Version:", $systemVersion) - $osInfoNode.AddToolNode("Kernel Version:", $kernelVersion) - $osInfoNode.AddToolNode("Image Version:", $ImageName.Split('_')[1]) + $osInfoNode.AddToolVersion("OS Version:", $systemVersion) + $osInfoNode.AddToolVersion("Kernel Version:", $kernelVersion) + $osInfoNode.AddToolVersion("Image Version:", $ImageName.Split('_')[1]) return $osInfoNode } @@ -598,7 +598,7 @@ function Build-PackageManagementEnvironmentTable { } } - $node.AddTableNode($table) + $node.AddTable($table) return $node } diff --git a/images/macos/software-report/SoftwareReport.Generator.ps1 b/images/macos/software-report/SoftwareReport.Generator.ps1 index b2136670..9acb317f 100644 --- a/images/macos/software-report/SoftwareReport.Generator.ps1 +++ b/images/macos/software-report/SoftwareReport.Generator.ps1 @@ -29,180 +29,180 @@ $osInfo = Build-OSInfoSection $ImageName # Software report $softwareReport = [SoftwareReport]::new($osInfo) -$installedSoftware = $softwareReport.Root.AddHeaderNode("Installed Software") +$installedSoftware = $softwareReport.Root.AddHeader("Installed Software") # Language and Runtime -$languageAndRuntime = $installedSoftware.AddHeaderNode("Language and Runtime") -$languageAndRuntime.AddToolVersionsNode(".NET Core SDK", $(Get-DotnetVersionList), '^\d+\.\d+\.\d', $true) -$languageAndRuntime.AddToolNode("Bash", $(Get-BashVersion)) +$languageAndRuntime = $installedSoftware.AddHeader("Language and Runtime") +$languageAndRuntime.AddToolVersionsList(".NET Core SDK", $(Get-DotnetVersionList), '^\d+\.\d+\.\d', $true) +$languageAndRuntime.AddToolVersion("Bash", $(Get-BashVersion)) $languageAndRuntime.AddNodes($(Get-ClangLLVMVersions)) $languageAndRuntime.AddNodes($(Get-GccVersions)) $languageAndRuntime.AddNodes($(Get-FortranVersions)) -$languageAndRuntime.AddToolNode("Go", $(Get-GoVersion)) -$languageAndRuntime.AddToolNode("Julia", $(Get-JuliaVersion)) -$languageAndRuntime.AddToolNode("Kotlin", $(Get-KotlinVersion)) -$languageAndRuntime.AddToolNode("Mono", $(Get-MonoVersion)) -$languageAndRuntime.AddToolNode("MSBuild", $(Get-MSBuildVersion)) -$languageAndRuntime.AddToolNode("Node.js", $(Get-NodeVersion)) -$languageAndRuntime.AddToolNode("NVM", $(Get-NVMVersion)) -$languageAndRuntime.AddToolVersionsNode("NVM - Cached node versions", $(Get-NVMNodeVersionList), '^\d+', $true) -$languageAndRuntime.AddToolNode("Perl", $(Get-PerlVersion)) -$languageAndRuntime.AddToolNode("PHP", $(Get-PHPVersion)) -$languageAndRuntime.AddToolNode("Python", $(Get-PythonVersion)) -$languageAndRuntime.AddToolNode("Python3", $(Get-Python3Version)) -$languageAndRuntime.AddToolNode("R", $(Get-RVersion)) -$languageAndRuntime.AddToolNode("Ruby", $(Get-RubyVersion)) +$languageAndRuntime.AddToolVersion("Go", $(Get-GoVersion)) +$languageAndRuntime.AddToolVersion("Julia", $(Get-JuliaVersion)) +$languageAndRuntime.AddToolVersion("Kotlin", $(Get-KotlinVersion)) +$languageAndRuntime.AddToolVersion("Mono", $(Get-MonoVersion)) +$languageAndRuntime.AddToolVersion("MSBuild", $(Get-MSBuildVersion)) +$languageAndRuntime.AddToolVersion("Node.js", $(Get-NodeVersion)) +$languageAndRuntime.AddToolVersion("NVM", $(Get-NVMVersion)) +$languageAndRuntime.AddToolVersionsList("NVM - Cached node versions", $(Get-NVMNodeVersionList), '^\d+', $true) +$languageAndRuntime.AddToolVersion("Perl", $(Get-PerlVersion)) +$languageAndRuntime.AddToolVersion("PHP", $(Get-PHPVersion)) +$languageAndRuntime.AddToolVersion("Python", $(Get-PythonVersion)) +$languageAndRuntime.AddToolVersion("Python3", $(Get-Python3Version)) +$languageAndRuntime.AddToolVersion("R", $(Get-RVersion)) +$languageAndRuntime.AddToolVersion("Ruby", $(Get-RubyVersion)) # Package Management -$packageManagement = $installedSoftware.AddHeaderNode("Package Management") -$packageManagement.AddToolNode("Bundler", $(Get-BundlerVersion)) -$packageManagement.AddToolNode("Carthage", $(Get-CarthageVersion)) -$packageManagement.AddToolNode("CocoaPods", $(Get-CocoaPodsVersion)) -$packageManagement.AddToolNode("Composer", $(Get-ComposerVersion)) -$packageManagement.AddToolNode("Homebrew", $(Get-HomebrewVersion)) -$packageManagement.AddToolNode("Miniconda", $(Get-CondaVersion)) -$packageManagement.AddToolNode("NPM", $(Get-NPMVersion)) -$packageManagement.AddToolNode("NuGet", $(Get-NuGetVersion)) -$packageManagement.AddToolNode("Pip", $(Get-PipVersion -Version 2)) -$packageManagement.AddToolNode("Pip3", $(Get-PipVersion -Version 3)) -$packageManagement.AddToolNode("Pipx", $(Get-PipxVersion)) -$packageManagement.AddToolNode("RubyGems", $(Get-RubyGemsVersion)) -$packageManagement.AddToolNode("Vcpkg", $(Get-VcpkgVersion)) -$packageManagement.AddToolNode("Yarn", $(Get-YarnVersion)) +$packageManagement = $installedSoftware.AddHeader("Package Management") +$packageManagement.AddToolVersion("Bundler", $(Get-BundlerVersion)) +$packageManagement.AddToolVersion("Carthage", $(Get-CarthageVersion)) +$packageManagement.AddToolVersion("CocoaPods", $(Get-CocoaPodsVersion)) +$packageManagement.AddToolVersion("Composer", $(Get-ComposerVersion)) +$packageManagement.AddToolVersion("Homebrew", $(Get-HomebrewVersion)) +$packageManagement.AddToolVersion("Miniconda", $(Get-CondaVersion)) +$packageManagement.AddToolVersion("NPM", $(Get-NPMVersion)) +$packageManagement.AddToolVersion("NuGet", $(Get-NuGetVersion)) +$packageManagement.AddToolVersion("Pip", $(Get-PipVersion -Version 2)) +$packageManagement.AddToolVersion("Pip3", $(Get-PipVersion -Version 3)) +$packageManagement.AddToolVersion("Pipx", $(Get-PipxVersion)) +$packageManagement.AddToolVersion("RubyGems", $(Get-RubyGemsVersion)) +$packageManagement.AddToolVersion("Vcpkg", $(Get-VcpkgVersion)) +$packageManagement.AddToolVersion("Yarn", $(Get-YarnVersion)) $packageManagement.AddNode($(Build-PackageManagementEnvironmentTable)) # Project Management -$projectanagement = $installedSoftware.AddHeaderNode("Project Management") -$projectanagement.AddToolNode("Apache Ant", $(Get-ApacheAntVersion)) -$projectanagement.AddToolNode("Apache Maven", $(Get-MavenVersion)) -$projectanagement.AddToolNode("Gradle", $(Get-GradleVersion)) -$projectanagement.AddToolNode("Sbt", $(Get-SbtVersion)) +$projectanagement = $installedSoftware.AddHeader("Project Management") +$projectanagement.AddToolVersion("Apache Ant", $(Get-ApacheAntVersion)) +$projectanagement.AddToolVersion("Apache Maven", $(Get-MavenVersion)) +$projectanagement.AddToolVersion("Gradle", $(Get-GradleVersion)) +$projectanagement.AddToolVersion("Sbt", $(Get-SbtVersion)) # Utilities -$utilities = $installedSoftware.AddHeaderNode("Utilities") -$utilities.AddToolNode("7-Zip", $(Get-7zipVersion)) -$utilities.AddToolNode("aria2", $(Get-Aria2Version)) -$utilities.AddToolNode("azcopy", $(Get-AzcopyVersion)) -$utilities.AddToolNode("bazel", $(Get-BazelVersion)) -$utilities.AddToolNode("bazelisk", $(Get-BazeliskVersion)) -$utilities.AddToolNode("bsdtar", $(Get-BsdtarVersion)) -$utilities.AddToolNode("Curl", $(Get-CurlVersion)) -$utilities.AddToolNode("Git", $(Get-GitVersion)) -$utilities.AddToolNode("Git LFS", $(Get-GitLFSVersion)) -$utilities.AddToolNode("GitHub CLI", $(Get-GitHubCLIVersion)) +$utilities = $installedSoftware.AddHeader("Utilities") +$utilities.AddToolVersion("7-Zip", $(Get-7zipVersion)) +$utilities.AddToolVersion("aria2", $(Get-Aria2Version)) +$utilities.AddToolVersion("azcopy", $(Get-AzcopyVersion)) +$utilities.AddToolVersion("bazel", $(Get-BazelVersion)) +$utilities.AddToolVersion("bazelisk", $(Get-BazeliskVersion)) +$utilities.AddToolVersion("bsdtar", $(Get-BsdtarVersion)) +$utilities.AddToolVersion("Curl", $(Get-CurlVersion)) +$utilities.AddToolVersion("Git", $(Get-GitVersion)) +$utilities.AddToolVersion("Git LFS", $(Get-GitLFSVersion)) +$utilities.AddToolVersion("GitHub CLI", $(Get-GitHubCLIVersion)) if ($os.IsCatalina) { - $utilities.AddToolNode("GNU parallel", $(Get-ParallelVersion)) + $utilities.AddToolVersion("GNU parallel", $(Get-ParallelVersion)) } -$utilities.AddToolNode("GNU Tar", $(Get-GnuTarVersion)) -$utilities.AddToolNode("GNU Wget", $(Get-WgetVersion)) -$utilities.AddToolNode("gpg (GnuPG)", $(Get-GPGVersion)) +$utilities.AddToolVersion("GNU Tar", $(Get-GnuTarVersion)) +$utilities.AddToolVersion("GNU Wget", $(Get-WgetVersion)) +$utilities.AddToolVersion("gpg (GnuPG)", $(Get-GPGVersion)) if ($os.IsLessThanMonterey) { - $utilities.AddToolNode("helm", $(Get-HelmVersion)) + $utilities.AddToolVersion("helm", $(Get-HelmVersion)) } -$utilities.AddToolNode("Hub CLI", $(Get-HubVersion)) -$utilities.AddToolNode("ImageMagick", $(Get-ImageMagickVersion)) -$utilities.AddToolNode("jq", $(Get-JqVersion)) -$utilities.AddToolNode("mongo", $(Get-MongoVersion)) -$utilities.AddToolNode("mongod", $(Get-MongodVersion)) +$utilities.AddToolVersion("Hub CLI", $(Get-HubVersion)) +$utilities.AddToolVersion("ImageMagick", $(Get-ImageMagickVersion)) +$utilities.AddToolVersion("jq", $(Get-JqVersion)) +$utilities.AddToolVersion("mongo", $(Get-MongoVersion)) +$utilities.AddToolVersion("mongod", $(Get-MongodVersion)) if ($os.IsLessThanMonterey) { - $utilities.AddToolNode("Newman", $(Get-NewmanVersion)) + $utilities.AddToolVersion("Newman", $(Get-NewmanVersion)) } -$utilities.AddToolNode("OpenSSL", $(Get-OpenSSLVersion)) -$utilities.AddToolNode("Packer", $(Get-PackerVersion)) -$utilities.AddToolNode("PostgreSQL", $(Get-PostgresServerVersion)) -$utilities.AddToolNode("psql (PostgreSQL)", $(Get-PostgresClientVersion)) -$utilities.AddToolNode("Sox", $(Get-SoxVersion)) -$utilities.AddToolNode("Subversion (SVN)", $(Get-SVNVersion)) -$utilities.AddToolNode("Switchaudio-osx", $(Get-SwitchAudioOsxVersion)) +$utilities.AddToolVersion("OpenSSL", $(Get-OpenSSLVersion)) +$utilities.AddToolVersion("Packer", $(Get-PackerVersion)) +$utilities.AddToolVersion("PostgreSQL", $(Get-PostgresServerVersion)) +$utilities.AddToolVersion("psql (PostgreSQL)", $(Get-PostgresClientVersion)) +$utilities.AddToolVersion("Sox", $(Get-SoxVersion)) +$utilities.AddToolVersion("Subversion (SVN)", $(Get-SVNVersion)) +$utilities.AddToolVersion("Switchaudio-osx", $(Get-SwitchAudioOsxVersion)) if (-not $os.IsBigSur) { - $utilities.AddToolNode("Vagrant", $(Get-VagrantVersion)) - $utilities.AddToolNode("VirtualBox", $(Get-VirtualBoxVersion)) + $utilities.AddToolVersion("Vagrant", $(Get-VagrantVersion)) + $utilities.AddToolVersion("VirtualBox", $(Get-VirtualBoxVersion)) } -$utilities.AddToolNode("yq", $(Get-YqVersion)) -$utilities.AddToolNode("zstd", $(Get-ZstdVersion)) +$utilities.AddToolVersion("yq", $(Get-YqVersion)) +$utilities.AddToolVersion("zstd", $(Get-ZstdVersion)) # Tools -$tools = $installedSoftware.AddHeaderNode("Tools") +$tools = $installedSoftware.AddHeader("Tools") if ($os.IsLessThanMonterey) { - $tools.AddToolNode("Aliyun CLI", $(Get-AliyunCLIVersion)) + $tools.AddToolVersion("Aliyun CLI", $(Get-AliyunCLIVersion)) } -$tools.AddToolNode("App Center CLI", $(Get-AppCenterCLIVersion)) -$tools.AddToolNode("AWS CLI", $(Get-AWSCLIVersion)) -$tools.AddToolNode("AWS SAM CLI", $(Get-AWSSAMCLIVersion)) -$tools.AddToolNode("AWS Session Manager CLI", $(Get-AWSSessionManagerCLIVersion)) -$tools.AddToolNode("Azure CLI", $(Get-AzureCLIVersion)) -$tools.AddToolNode("Azure CLI (azure-devops)", $(Get-AzureDevopsVersion)) -$tools.AddToolNode("Bicep CLI", $(Get-BicepVersion)) -$tools.AddToolNode("Cabal", $(Get-CabalVersion)) -$tools.AddToolNode("Cmake", $(Get-CmakeVersion)) +$tools.AddToolVersion("App Center CLI", $(Get-AppCenterCLIVersion)) +$tools.AddToolVersion("AWS CLI", $(Get-AWSCLIVersion)) +$tools.AddToolVersion("AWS SAM CLI", $(Get-AWSSAMCLIVersion)) +$tools.AddToolVersion("AWS Session Manager CLI", $(Get-AWSSessionManagerCLIVersion)) +$tools.AddToolVersion("Azure CLI", $(Get-AzureCLIVersion)) +$tools.AddToolVersion("Azure CLI (azure-devops)", $(Get-AzureDevopsVersion)) +$tools.AddToolVersion("Bicep CLI", $(Get-BicepVersion)) +$tools.AddToolVersion("Cabal", $(Get-CabalVersion)) +$tools.AddToolVersion("Cmake", $(Get-CmakeVersion)) if (-not $os.IsCatalina) { - $tools.AddToolNode("CodeQL Action Bundle", $(Get-CodeQLBundleVersion)) + $tools.AddToolVersion("CodeQL Action Bundle", $(Get-CodeQLBundleVersion)) } if (-not $os.IsCatalina) { - $tools.AddToolNode("Colima", $(Get-ColimaVersion)) + $tools.AddToolVersion("Colima", $(Get-ColimaVersion)) } -$tools.AddToolNode("Fastlane", $(Get-FastlaneVersion)) -$tools.AddToolNode("GHC", $(Get-GHCVersion)) -$tools.AddToolNode("GHCup", $(Get-GHCupVersion)) -$tools.AddToolNode("Jazzy", $(Get-JazzyVersion)) -$tools.AddToolNode("Stack", $(Get-StackVersion)) -$tools.AddToolNode("SwiftFormat", $(Get-SwiftFormatVersion)) -$tools.AddToolNode("Swig", $(Get-SwigVersion)) -$tools.AddToolNode("Xcode Command Line Tools", $(Get-XcodeCommandLineToolsVersion)) +$tools.AddToolVersion("Fastlane", $(Get-FastlaneVersion)) +$tools.AddToolVersion("GHC", $(Get-GHCVersion)) +$tools.AddToolVersion("GHCup", $(Get-GHCupVersion)) +$tools.AddToolVersion("Jazzy", $(Get-JazzyVersion)) +$tools.AddToolVersion("Stack", $(Get-StackVersion)) +$tools.AddToolVersion("SwiftFormat", $(Get-SwiftFormatVersion)) +$tools.AddToolVersion("Swig", $(Get-SwigVersion)) +$tools.AddToolVersion("Xcode Command Line Tools", $(Get-XcodeCommandLineToolsVersion)) # Linters -$linters = $installedSoftware.AddHeaderNode("Linters") -$linters.AddToolNode("SwiftLint", $(Get-SwiftLintVersion)) -$linters.AddToolNode("Yamllint", $(Get-YamllintVersion)) +$linters = $installedSoftware.AddHeader("Linters") +$linters.AddToolVersion("SwiftLint", $(Get-SwiftLintVersion)) +$linters.AddToolVersion("Yamllint", $(Get-YamllintVersion)) # Browsers -$browsers = $installedSoftware.AddHeaderNode("Browsers") +$browsers = $installedSoftware.AddHeader("Browsers") $browsers.AddNodes($(Build-BrowserSection)) $browsers.AddNode($(Build-BrowserWebdriversEnvironmentTable)) # Java -$java = $installedSoftware.AddHeaderNode("Java") -$java.AddTableNode($(Get-JavaVersions)) +$java = $installedSoftware.AddHeader("Java") +$java.AddTable($(Get-JavaVersions)) # Graal -$graalvm = $installedSoftware.AddHeaderNode("GraalVM") -$graalvm.AddTableNode($(Build-GraalVMTable)) +$graalvm = $installedSoftware.AddHeader("GraalVM") +$graalvm.AddTable($(Build-GraalVMTable)) # Toolcache -$toolcache = $installedSoftware.AddHeaderNode("Cached Tools") +$toolcache = $installedSoftware.AddHeader("Cached Tools") $toolcache.AddNodes($(Build-ToolcacheSection)) # Rust -$rust = $installedSoftware.AddHeaderNode("Rust Tools") -$rust.AddToolNode("Cargo", $(Get-RustCargoVersion)) -$rust.AddToolNode("Rust", $(Get-RustVersion)) -$rust.AddToolNode("Rustdoc", $(Get-RustdocVersion)) -$rust.AddToolNode("Rustup", $(Get-RustupVersion)) +$rust = $installedSoftware.AddHeader("Rust Tools") +$rust.AddToolVersion("Cargo", $(Get-RustCargoVersion)) +$rust.AddToolVersion("Rust", $(Get-RustVersion)) +$rust.AddToolVersion("Rustdoc", $(Get-RustdocVersion)) +$rust.AddToolVersion("Rustup", $(Get-RustupVersion)) -$rustPackages = $rust.AddHeaderNode("Packages") -$rustPackages.AddToolNode("Bindgen", $(Get-Bindgen)) -$rustPackages.AddToolNode("Cargo-audit", $(Get-Cargoaudit)) -$rustPackages.AddToolNode("Cargo-outdated", $(Get-Cargooutdated)) -$rustPackages.AddToolNode("Cbindgen", $(Get-Cbindgen)) -$rustPackages.AddToolNode("Clippy", $(Get-RustClippyVersion)) -$rustPackages.AddToolNode("Rustfmt", $(Get-RustfmtVersion)) +$rustPackages = $rust.AddHeader("Packages") +$rustPackages.AddToolVersion("Bindgen", $(Get-Bindgen)) +$rustPackages.AddToolVersion("Cargo-audit", $(Get-Cargoaudit)) +$rustPackages.AddToolVersion("Cargo-outdated", $(Get-Cargooutdated)) +$rustPackages.AddToolVersion("Cbindgen", $(Get-Cbindgen)) +$rustPackages.AddToolVersion("Clippy", $(Get-RustClippyVersion)) +$rustPackages.AddToolVersion("Rustfmt", $(Get-RustfmtVersion)) # PowerShell -$powerShell = $installedSoftware.AddHeaderNode("PowerShell Tools") -$powerShell.AddToolNode("PowerShell", $(Get-PowershellVersion)) +$powerShell = $installedSoftware.AddHeader("PowerShell Tools") +$powerShell.AddToolVersion("PowerShell", $(Get-PowershellVersion)) -$powerShellModules = $powerShell.AddHeaderNode("PowerShell Modules") +$powerShellModules = $powerShell.AddHeader("PowerShell Modules") $powerShellModules.AddNodes($(Get-PowerShellModules)) # Web Servers -$webServers = $installedSoftware.AddHeaderNode("Web Servers") -$webServers.AddTableNode($(Build-WebServersSection)) +$webServers = $installedSoftware.AddHeader("Web Servers") +$webServers.AddTable($(Build-WebServersSection)) # Xamarin section -$xamarin = $installedSoftware.AddHeaderNode("Xamarin") -$vsForMac = $xamarin.AddHeaderNode("Visual Studio for Mac") -$vsForMac.AddTableNode($(Build-VSMacTable)) +$xamarin = $installedSoftware.AddHeader("Xamarin") +$vsForMac = $xamarin.AddHeader("Visual Studio for Mac") +$vsForMac.AddTable($(Build-VSMacTable)) if (-not $os.IsCatalina) { $note = @@ -211,60 +211,60 @@ To use Visual Studio 2019 by default rename the app: mv "/Applications/Visual Studio.app" "/Applications/Visual Studio 2022.app" mv "/Applications/Visual Studio 2019.app" "/Applications/Visual Studio.app" '@ - $vsForMacNotes = $vsForMac.AddHeaderNode("Notes") - $vsForMacNotes.AddNoteNode($note) + $vsForMacNotes = $vsForMac.AddHeader("Notes") + $vsForMacNotes.AddNote($note) } -$xamarinBundles = $xamarin.AddHeaderNode("Xamarin bundles") -$xamarinBundles.AddTableNode($(Build-XamarinTable)) +$xamarinBundles = $xamarin.AddHeader("Xamarin bundles") +$xamarinBundles.AddTable($(Build-XamarinTable)) -$unitTestFramework = $xamarin.AddHeaderNode("Unit Test Framework") -$unitTestFramework.AddToolNode("NUnit", $(Get-NUnitVersion)) +$unitTestFramework = $xamarin.AddHeader("Unit Test Framework") +$unitTestFramework.AddToolVersion("NUnit", $(Get-NUnitVersion)) # Xcode section -$xcode = $installedSoftware.AddHeaderNode("Xcode") +$xcode = $installedSoftware.AddHeader("Xcode") # First run doesn't provide full data about devices and runtimes Get-XcodeInfoList | Out-Null $xcodeInfo = Get-XcodeInfoList -$xcode.AddTableNode($(Build-XcodeTable $xcodeInfo)) +$xcode.AddTable($(Build-XcodeTable $xcodeInfo)) -$xcodeTools = $xcode.AddHeaderNode("Xcode Support Tools") +$xcodeTools = $xcode.AddHeader("Xcode Support Tools") $xcodeTools.AddNodes($(Build-XcodeSupportToolsSection)) -$installedSdks = $xcode.AddHeaderNode("Installed SDKs") -$installedSdks.AddTableNode($(Build-XcodeSDKTable $xcodeInfo)) +$installedSdks = $xcode.AddHeader("Installed SDKs") +$installedSdks.AddTable($(Build-XcodeSDKTable $xcodeInfo)) -$installedSimulators = $xcode.AddHeaderNode("Installed Simulators") -$installedSimulators.AddTableNode($(Build-XcodeSimulatorsTable $xcodeInfo)) +$installedSimulators = $xcode.AddHeader("Installed Simulators") +$installedSimulators.AddTable($(Build-XcodeSimulatorsTable $xcodeInfo)) # Android section -$android = $installedSoftware.AddHeaderNode("Android") +$android = $installedSoftware.AddHeader("Android") $androidTable = Build-AndroidTable if ($os.IsCatalina) { $androidTable += Get-IntelHaxmVersion } -$android.AddTableNode($androidTable) +$android.AddTable($androidTable) -$androidEnv = $android.AddHeaderNode("Environment variables") -$androidEnv.AddTableNode($(Build-AndroidEnvironmentTable)) +$androidEnv = $android.AddHeader("Environment variables") +$androidEnv.AddTable($(Build-AndroidEnvironmentTable)) -$miscellaneous = $installedSoftware.AddHeaderNode("Miscellaneous") -$miscellaneous.AddToolNode("libXext", $(Get-LibXextVersion)) -$miscellaneous.AddToolNode("libXft", $(Get-LibXftVersion)) -$miscellaneous.AddToolNode("Tcl/Tk", $(Get-TclTkVersion)) -$miscellaneous.AddToolNode("Zlib", $(Get-ZlibVersion)) +$miscellaneous = $installedSoftware.AddHeader("Miscellaneous") +$miscellaneous.AddToolVersion("libXext", $(Get-LibXextVersion)) +$miscellaneous.AddToolVersion("libXft", $(Get-LibXftVersion)) +$miscellaneous.AddToolVersion("Tcl/Tk", $(Get-TclTkVersion)) +$miscellaneous.AddToolVersion("Zlib", $(Get-ZlibVersion)) if ($os.IsMonterey) { - $miscellaneousEnv = $miscellaneous.AddHeaderNode("Environment variables") - $miscellaneousEnv.AddTableNode($(Build-MiscellaneousEnvironmentTable)) + $miscellaneousEnv = $miscellaneous.AddHeader("Environment variables") + $miscellaneousEnv.AddTable($(Build-MiscellaneousEnvironmentTable)) $notes = @' If you want to use Parallels Desktop you should download a package from URL stored in PARALLELS_DMG_URL environment variable. A system extension is allowed for this version. '@ - $miscellaneousEnvNotes = $miscellaneousEnv.AddHeaderNode("Notes") - $miscellaneousEnvNotes.AddNoteNode($notes) + $miscellaneousEnvNotes = $miscellaneousEnv.AddHeader("Notes") + $miscellaneousEnvNotes.AddNote($notes) } # diff --git a/images/macos/software-report/SoftwareReport.Toolcache.psm1 b/images/macos/software-report/SoftwareReport.Toolcache.psm1 index d59f6b57..cad7873f 100644 --- a/images/macos/software-report/SoftwareReport.Toolcache.psm1 +++ b/images/macos/software-report/SoftwareReport.Toolcache.psm1 @@ -35,11 +35,11 @@ function Get-ToolcacheGoVersions { function Build-ToolcacheSection { return @( - [ToolVersionsNode]::new("Ruby", $(Get-ToolcacheRubyVersions), '^\d+\.\d+', $false), - [ToolVersionsNode]::new("Python", $(Get-ToolcachePythonVersions), '^\d+\.\d+', $false), - [ToolVersionsNode]::new("PyPy", $(Get-ToolcachePyPyVersions), '^\d+\.\d+', $false), - [ToolVersionsNode]::new("Node.js", $(Get-ToolcacheNodeVersions), '^\d+', $false), - [ToolVersionsNode]::new("Go", $(Get-ToolcacheGoVersions), '^\d+\.\d+', $false) + [ToolVersionsListNode]::new("Ruby", $(Get-ToolcacheRubyVersions), '^\d+\.\d+', $false), + [ToolVersionsListNode]::new("Python", $(Get-ToolcachePythonVersions), '^\d+\.\d+', $false), + [ToolVersionsListNode]::new("PyPy", $(Get-ToolcachePyPyVersions), '^\d+\.\d+', $false), + [ToolVersionsListNode]::new("Node.js", $(Get-ToolcacheNodeVersions), '^\d+', $false), + [ToolVersionsListNode]::new("Go", $(Get-ToolcacheGoVersions), '^\d+\.\d+', $false) ) } @@ -48,6 +48,6 @@ function Get-PowerShellModules { $modules | ForEach-Object { $moduleName = $_ $moduleVersions = Get-Module -Name $moduleName -ListAvailable | Select-Object -ExpandProperty Version | Sort-Object -Unique - return [ToolVersionsNode]::new($moduleName, $moduleVersions, '^\d+', $true) + return [ToolVersionsListNode]::new($moduleName, $moduleVersions, '^\d+', $true) } } \ No newline at end of file diff --git a/images/macos/software-report/SoftwareReport.Xcode.psm1 b/images/macos/software-report/SoftwareReport.Xcode.psm1 index eed571ff..68e61caa 100644 --- a/images/macos/software-report/SoftwareReport.Xcode.psm1 +++ b/images/macos/software-report/SoftwareReport.Xcode.psm1 @@ -237,8 +237,8 @@ function Build-XcodeSupportToolsSection { $xcpretty = Run-Command "xcpretty --version" $xcversion = Run-Command "xcversion --version" | Select-String "^[0-9]" - $toolNodes += [ToolNode]::new("xcpretty", $xcpretty) - $toolNodes += [ToolNode]::new("xcversion", $xcversion) + $toolNodes += [ToolVersionNode]::new("xcpretty", $xcpretty) + $toolNodes += [ToolVersionNode]::new("xcversion", $xcversion) $nomadOutput = Run-Command "gem list nomad-cli" $nomadCLI = [regex]::matches($nomadOutput, "(\d+.){2}\d+").Value @@ -246,8 +246,8 @@ function Build-XcodeSupportToolsSection { $nomadShenzhen = [regex]::matches($nomadShenzhenOutput, "(\d+.){2}\d+").Value if ($os.IsLessThanMonterey) { - $toolNodes += [ToolNode]::new("Nomad CLI", $nomadCLI) - $toolNodes += [ToolNode]::new("Nomad shenzhen CLI", $nomadShenzhen) + $toolNodes += [ToolVersionNode]::new("Nomad CLI", $nomadCLI) + $toolNodes += [ToolVersionNode]::new("Nomad shenzhen CLI", $nomadShenzhen) } return $toolNodes