mirror of
https://github.com/actions/runner-images.git
synced 2025-12-10 02:46:51 +00:00
[macOS] Implement new directories hierarchy (#8741)
This commit is contained in:
committed by
GitHub
parent
5d40b1e213
commit
8d6a01b370
@@ -13,7 +13,7 @@ function Enable-AutoLogon {
|
||||
[string] $Password
|
||||
)
|
||||
|
||||
$url = "https://raw.githubusercontent.com/actions/runner-images/main/images/macos/provision/bootstrap-provisioner/setAutoLogin.sh"
|
||||
$url = "https://raw.githubusercontent.com/actions/runner-images/main/images/macos/assets/bootstrap-provisioner/setAutoLogin.sh"
|
||||
$script = Invoke-RestMethod -Uri $url
|
||||
$base64 = [Convert]::ToBase64String($script.ToCharArray())
|
||||
$command = "echo $base64 | base64 --decode > ./setAutoLogin.sh;sudo bash ./setAutoLogin.sh '${UserName}' '${Password}';rm ./setAutoLogin.sh"
|
||||
@@ -43,7 +43,7 @@ function Invoke-SoftwareUpdateArm64 {
|
||||
'14.\d' { $nextOSVersion = 'NotYetDefined' }
|
||||
}
|
||||
|
||||
$url = "https://raw.githubusercontent.com/actions/runner-images/main/images/macos/provision/configuration/auto-software-update-arm64.exp"
|
||||
$url = "https://raw.githubusercontent.com/actions/runner-images/main/images/macos/assets/auto-software-update-arm64.exp"
|
||||
$script = Invoke-RestMethod -Uri $url
|
||||
foreach ($update in $listOfUpdates) {
|
||||
if ($update -notmatch "$nextOSVersion") {
|
||||
|
||||
@@ -23,7 +23,7 @@ function Validate-Scripts {
|
||||
}
|
||||
|
||||
$PathUbuntu = "./images/ubuntu/scripts"
|
||||
$PathMacOS = "./images/macos/provision"
|
||||
$PathMacOS = "./images/macos"
|
||||
$PatternUbuntu = "#!/bin/bash -e"
|
||||
$PatternMacOS = "#!/bin/bash -e -o pipefail"
|
||||
$ScriptsWithBrokenShebang = @()
|
||||
|
||||
0
images/macos/provision/bootstrap-provisioner/change_password → images/macos/assets/bootstrap-provisioner/change_password
Executable file → Normal file
0
images/macos/provision/bootstrap-provisioner/change_password → images/macos/assets/bootstrap-provisioner/change_password
Executable file → Normal file
0
images/macos/provision/bootstrap-provisioner/kcpassword.py → images/macos/assets/bootstrap-provisioner/kcpassword.py
Executable file → Normal file
0
images/macos/provision/bootstrap-provisioner/kcpassword.py → images/macos/assets/bootstrap-provisioner/kcpassword.py
Executable file → Normal file
0
images/macos/provision/core/action-archive-cache.sh → images/macos/scripts/build/action-archive-cache.sh
Executable file → Normal file
0
images/macos/provision/core/action-archive-cache.sh → images/macos/scripts/build/action-archive-cache.sh
Executable file → Normal file
0
images/macos/provision/core/android-toolsets.sh → images/macos/scripts/build/android-toolsets.sh
Executable file → Normal file
0
images/macos/provision/core/android-toolsets.sh → images/macos/scripts/build/android-toolsets.sh
Executable file → Normal file
0
images/macos/provision/configuration/autologin.sh → images/macos/scripts/build/autologin.sh
Executable file → Normal file
0
images/macos/provision/configuration/autologin.sh → images/macos/scripts/build/autologin.sh
Executable file → Normal file
0
images/macos/provision/core/azcopy.sh → images/macos/scripts/build/azcopy.sh
Executable file → Normal file
0
images/macos/provision/core/azcopy.sh → images/macos/scripts/build/azcopy.sh
Executable file → Normal file
0
images/macos/provision/core/cocoapods.sh → images/macos/scripts/build/cocoapods.sh
Executable file → Normal file
0
images/macos/provision/core/cocoapods.sh → images/macos/scripts/build/cocoapods.sh
Executable file → Normal file
0
images/macos/provision/configuration/configure-ssh.sh → images/macos/scripts/build/configure-ssh.sh
Executable file → Normal file
0
images/macos/provision/configuration/configure-ssh.sh → images/macos/scripts/build/configure-ssh.sh
Executable file → Normal file
0
images/macos/provision/configuration/disable-auto-updates.sh → images/macos/scripts/build/disable-auto-updates.sh
Executable file → Normal file
0
images/macos/provision/configuration/disable-auto-updates.sh → images/macos/scripts/build/disable-auto-updates.sh
Executable file → Normal file
0
images/macos/provision/core/dotnet.sh → images/macos/scripts/build/dotnet.sh
Executable file → Normal file
0
images/macos/provision/core/dotnet.sh → images/macos/scripts/build/dotnet.sh
Executable file → Normal file
0
images/macos/provision/core/homebrew.sh → images/macos/scripts/build/homebrew.sh
Executable file → Normal file
0
images/macos/provision/core/homebrew.sh → images/macos/scripts/build/homebrew.sh
Executable file → Normal file
0
images/macos/provision/configuration/max-files.sh → images/macos/scripts/build/max-files.sh
Executable file → Normal file
0
images/macos/provision/configuration/max-files.sh → images/macos/scripts/build/max-files.sh
Executable file → Normal file
0
images/macos/provision/configuration/ntpconf.sh → images/macos/scripts/build/ntpconf.sh
Executable file → Normal file
0
images/macos/provision/configuration/ntpconf.sh → images/macos/scripts/build/ntpconf.sh
Executable file → Normal file
0
images/macos/provision/core/nvm.sh → images/macos/scripts/build/nvm.sh
Executable file → Normal file
0
images/macos/provision/core/nvm.sh → images/macos/scripts/build/nvm.sh
Executable file → Normal file
0
images/macos/provision/core/openjdk.sh → images/macos/scripts/build/openjdk.sh
Executable file → Normal file
0
images/macos/provision/core/openjdk.sh → images/macos/scripts/build/openjdk.sh
Executable file → Normal file
0
images/macos/provision/core/openssl.sh → images/macos/scripts/build/openssl.sh
Executable file → Normal file
0
images/macos/provision/core/openssl.sh → images/macos/scripts/build/openssl.sh
Executable file → Normal file
0
images/macos/provision/core/python.sh → images/macos/scripts/build/python.sh
Executable file → Normal file
0
images/macos/provision/core/python.sh → images/macos/scripts/build/python.sh
Executable file → Normal file
0
images/macos/provision/core/ruby.sh → images/macos/scripts/build/ruby.sh
Executable file → Normal file
0
images/macos/provision/core/ruby.sh → images/macos/scripts/build/ruby.sh
Executable file → Normal file
0
images/macos/provision/core/rubygem.sh → images/macos/scripts/build/rubygem.sh
Executable file → Normal file
0
images/macos/provision/core/rubygem.sh → images/macos/scripts/build/rubygem.sh
Executable file → Normal file
0
images/macos/provision/configuration/screensaver-off.sh → images/macos/scripts/build/screensaver-off.sh
Executable file → Normal file
0
images/macos/provision/configuration/screensaver-off.sh → images/macos/scripts/build/screensaver-off.sh
Executable file → Normal file
@@ -1,58 +1,58 @@
|
||||
################################################################################
|
||||
## File: toolset.ps1
|
||||
## Team: CI-Build
|
||||
## Desc: Install toolset
|
||||
################################################################################
|
||||
Import-Module "~/image-generation/helpers/Tests.Helpers.psm1"
|
||||
Import-Module "~/image-generation/helpers/Common.Helpers.psm1"
|
||||
|
||||
Function Install-Asset {
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[object] $ReleaseAsset
|
||||
)
|
||||
|
||||
$assetFolderPath = Join-Path "/tmp" "$($ReleaseAsset.filename)-temp-dir"
|
||||
New-Item -ItemType Directory -Path $assetFolderPath | Out-Null
|
||||
$assetArchivePath = Join-Path $assetFolderPath $ReleaseAsset.filename
|
||||
|
||||
Write-Host "Download $($ReleaseAsset.filename) archive to the $assetFolderPath folder..."
|
||||
Start-DownloadWithRetry -Url $ReleaseAsset.download_url -DownloadPath $assetFolderPath
|
||||
|
||||
Write-Host "Extract $($ReleaseAsset.filename) content..."
|
||||
tar -xzf $assetArchivePath -C $assetFolderPath
|
||||
|
||||
Write-Host "Invoke installation script..."
|
||||
Push-Location -Path $assetFolderPath
|
||||
Invoke-Expression "bash ./setup.sh"
|
||||
Pop-Location
|
||||
}
|
||||
|
||||
$arch = Get-Architecture
|
||||
|
||||
# Get toolcache content from toolset
|
||||
$toolsToInstall = @("Python", "Node", "Go")
|
||||
$tools = Get-ToolsetValue "toolcache" | Where-Object {$toolsToInstall -contains $_.Name}
|
||||
|
||||
foreach ($tool in $tools) {
|
||||
# Get versions manifest for current tool
|
||||
$assets = Invoke-RestMethodWithRetry -Url $tool.url
|
||||
|
||||
# Get github release asset for each version
|
||||
foreach ($version in $tool.arch.$arch.versions) {
|
||||
$asset = $assets | Where-Object version -like $version `
|
||||
| Select-Object -ExpandProperty files `
|
||||
| Where-Object { ($_.platform -eq $tool.platform) -and ($_.arch -eq $arch)} `
|
||||
| Select-Object -First 1
|
||||
|
||||
Write-Host "Installing $($tool.name) $version..."
|
||||
if ($null -ne $asset) {
|
||||
Install-Asset -ReleaseAsset $asset
|
||||
} else {
|
||||
Write-Host "Asset was not found in versions manifest"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
################################################################################
|
||||
## File: toolset.ps1
|
||||
## Team: CI-Build
|
||||
## Desc: Install toolset
|
||||
################################################################################
|
||||
Import-Module "~/image-generation/helpers/Tests.Helpers.psm1"
|
||||
Import-Module "~/image-generation/helpers/Common.Helpers.psm1"
|
||||
|
||||
Function Install-Asset {
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[object] $ReleaseAsset
|
||||
)
|
||||
|
||||
$assetFolderPath = Join-Path "/tmp" "$($ReleaseAsset.filename)-temp-dir"
|
||||
New-Item -ItemType Directory -Path $assetFolderPath | Out-Null
|
||||
$assetArchivePath = Join-Path $assetFolderPath $ReleaseAsset.filename
|
||||
|
||||
Write-Host "Download $($ReleaseAsset.filename) archive to the $assetFolderPath folder..."
|
||||
Start-DownloadWithRetry -Url $ReleaseAsset.download_url -DownloadPath $assetFolderPath
|
||||
|
||||
Write-Host "Extract $($ReleaseAsset.filename) content..."
|
||||
tar -xzf $assetArchivePath -C $assetFolderPath
|
||||
|
||||
Write-Host "Invoke installation script..."
|
||||
Push-Location -Path $assetFolderPath
|
||||
Invoke-Expression "bash ./setup.sh"
|
||||
Pop-Location
|
||||
}
|
||||
|
||||
$arch = Get-Architecture
|
||||
|
||||
# Get toolcache content from toolset
|
||||
$toolsToInstall = @("Python", "Node", "Go")
|
||||
$tools = Get-ToolsetValue "toolcache" | Where-Object {$toolsToInstall -contains $_.Name}
|
||||
|
||||
foreach ($tool in $tools) {
|
||||
# Get versions manifest for current tool
|
||||
$assets = Invoke-RestMethodWithRetry -Url $tool.url
|
||||
|
||||
# Get github release asset for each version
|
||||
foreach ($version in $tool.arch.$arch.versions) {
|
||||
$asset = $assets | Where-Object version -like $version `
|
||||
| Select-Object -ExpandProperty files `
|
||||
| Where-Object { ($_.platform -eq $tool.platform) -and ($_.arch -eq $arch)} `
|
||||
| Select-Object -First 1
|
||||
|
||||
Write-Host "Installing $($tool.name) $version..."
|
||||
if ($null -ne $asset) {
|
||||
Install-Asset -ReleaseAsset $asset
|
||||
} else {
|
||||
Write-Host "Asset was not found in versions manifest"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Invoke-PesterTests "Toolcache"
|
||||
0
images/macos/provision/core/xamarin.sh → images/macos/scripts/build/xamarin.sh
Executable file → Normal file
0
images/macos/provision/core/xamarin.sh → images/macos/scripts/build/xamarin.sh
Executable file → Normal file
0
images/macos/provision/core/xcode-sims.sh → images/macos/scripts/build/xcode-sims.sh
Executable file → Normal file
0
images/macos/provision/core/xcode-sims.sh → images/macos/scripts/build/xcode-sims.sh
Executable file → Normal file
@@ -1,319 +1,319 @@
|
||||
using module ./software-report-base/SoftwareReport.psm1
|
||||
using module ./software-report-base/SoftwareReport.Nodes.psm1
|
||||
|
||||
param (
|
||||
[Parameter(Mandatory)][string]
|
||||
$OutputDirectory,
|
||||
$ImageName
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Common.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Xcode.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Android.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Java.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Xamarin.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Toolcache.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Browsers.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.WebServers.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/../helpers/SoftwareReport.Helpers.psm1"
|
||||
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||
Import-Module "$PSScriptRoot/../helpers/Xcode.Helpers.psm1"
|
||||
|
||||
# Operating System info
|
||||
$os = Get-OSVersion
|
||||
|
||||
# OS info
|
||||
$osInfo = Build-OSInfoSection $ImageName
|
||||
|
||||
# Software report
|
||||
$softwareReport = [SoftwareReport]::new($osInfo)
|
||||
$installedSoftware = $softwareReport.Root.AddHeader("Installed Software")
|
||||
|
||||
# Language and Runtime
|
||||
$languageAndRuntime = $installedSoftware.AddHeader("Language and Runtime")
|
||||
$languageAndRuntime.AddToolVersionsListInline(".NET Core SDK", $(Get-DotnetVersionList), '^\d+\.\d+\.\d')
|
||||
$languageAndRuntime.AddToolVersion("Bash", $(Get-BashVersion))
|
||||
$languageAndRuntime.AddNodes($(Get-ClangLLVMVersions))
|
||||
$languageAndRuntime.AddNodes($(Get-GccVersions))
|
||||
$languageAndRuntime.AddNodes($(Get-FortranVersions))
|
||||
$languageAndRuntime.AddToolVersion("Julia", $(Get-JuliaVersion))
|
||||
$languageAndRuntime.AddToolVersion("Kotlin", $(Get-KotlinVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$languageAndRuntime.AddToolVersion("Go", $(Get-GoVersion))
|
||||
}
|
||||
$languageAndRuntime.AddToolVersion("Mono", $(Get-MonoVersion))
|
||||
$languageAndRuntime.AddToolVersion("Node.js", $(Get-NodeVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$languageAndRuntime.AddToolVersion("MSBuild", $(Get-MSBuildVersion))
|
||||
$languageAndRuntime.AddToolVersion("NVM", $(Get-NVMVersion))
|
||||
$languageAndRuntime.AddToolVersionsListInline("NVM - Cached node versions", $(Get-NVMNodeVersionList), '^\d+')
|
||||
}
|
||||
$languageAndRuntime.AddToolVersion("Perl", $(Get-PerlVersion))
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$languageAndRuntime.AddToolVersion("PHP", $(Get-PHPVersion))
|
||||
}
|
||||
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$languageAndRuntime.AddToolVersion("Python", $(Get-PythonVersion))
|
||||
}
|
||||
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$languageAndRuntime.AddToolVersion("Python3", $(Get-Python3Version))
|
||||
}
|
||||
$languageAndRuntime.AddToolVersion("R", $(Get-RVersion))
|
||||
$languageAndRuntime.AddToolVersion("Ruby", $(Get-RubyVersion))
|
||||
|
||||
# Package Management
|
||||
$packageManagement = $installedSoftware.AddHeader("Package Management")
|
||||
$packageManagement.AddToolVersion("Bundler", $(Get-BundlerVersion))
|
||||
$packageManagement.AddToolVersion("Carthage", $(Get-CarthageVersion))
|
||||
$packageManagement.AddToolVersion("CocoaPods", $(Get-CocoaPodsVersion))
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$packageManagement.AddToolVersion("Composer", $(Get-ComposerVersion))
|
||||
}
|
||||
$packageManagement.AddToolVersion("Homebrew", $(Get-HomebrewVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$packageManagement.AddToolVersion("Miniconda", $(Get-CondaVersion))
|
||||
}
|
||||
$packageManagement.AddToolVersion("NPM", $(Get-NPMVersion))
|
||||
$packageManagement.AddToolVersion("NuGet", $(Get-NuGetVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$packageManagement.AddToolVersion("Pip", $(Get-PipVersion -Version 2))
|
||||
}
|
||||
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$packageManagement.AddToolVersion("Pip3", $(Get-PipVersion -Version 3))
|
||||
$packageManagement.AddToolVersion("Pipx", $(Get-PipxVersion))
|
||||
}
|
||||
|
||||
$packageManagement.AddToolVersion("RubyGems", $(Get-RubyGemsVersion))
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$packageManagement.AddToolVersion("Vcpkg", $(Get-VcpkgVersion))
|
||||
}
|
||||
$packageManagement.AddToolVersion("Yarn", $(Get-YarnVersion))
|
||||
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$packageManagement.AddNode($(Build-PackageManagementEnvironmentTable))
|
||||
}
|
||||
# Project Management
|
||||
$projectManagement = $installedSoftware.AddHeader("Project Management")
|
||||
$projectManagement.AddToolVersion("Apache Ant", $(Get-ApacheAntVersion))
|
||||
$projectManagement.AddToolVersion("Apache Maven", $(Get-MavenVersion))
|
||||
$projectManagement.AddToolVersion("Gradle", $(Get-GradleVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$projectManagement.AddToolVersion("Sbt", $(Get-SbtVersion))
|
||||
}
|
||||
|
||||
# Utilities
|
||||
$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))
|
||||
$utilities.AddToolVersion("GNU Tar", $(Get-GnuTarVersion))
|
||||
$utilities.AddToolVersion("GNU Wget", $(Get-WgetVersion))
|
||||
$utilities.AddToolVersion("gpg (GnuPG)", $(Get-GPGVersion))
|
||||
if ($os.IsBigSur) {
|
||||
$utilities.AddToolVersion("helm", $(Get-HelmVersion))
|
||||
}
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$utilities.AddToolVersion("ImageMagick", $(Get-ImageMagickVersion))
|
||||
}
|
||||
$utilities.AddToolVersion("jq", $(Get-JqVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$utilities.AddToolVersion("mongo", $(Get-MongoVersion))
|
||||
$utilities.AddToolVersion("mongod", $(Get-MongodVersion))
|
||||
}
|
||||
if ($os.IsBigSur) {
|
||||
$utilities.AddToolVersion("Newman", $(Get-NewmanVersion))
|
||||
}
|
||||
$utilities.AddToolVersion("OpenSSL", $(Get-OpenSSLVersion))
|
||||
$utilities.AddToolVersion("Packer", $(Get-PackerVersion))
|
||||
$utilities.AddToolVersion("pkg-config", $(Get-PKGConfigVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$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 ($os.IsMonterey) {
|
||||
$utilities.AddToolVersion("Vagrant", $(Get-VagrantVersion))
|
||||
$utilities.AddToolVersion("VirtualBox", $(Get-VirtualBoxVersion))
|
||||
}
|
||||
$utilities.AddToolVersion("yq", $(Get-YqVersion))
|
||||
$utilities.AddToolVersion("zstd", $(Get-ZstdVersion))
|
||||
|
||||
# Tools
|
||||
$tools = $installedSoftware.AddHeader("Tools")
|
||||
if ($os.IsBigSur) {
|
||||
$tools.AddToolVersion("Aliyun CLI", $(Get-AliyunCLIVersion))
|
||||
}
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$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))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$tools.AddToolVersion("Cabal", $(Get-CabalVersion))
|
||||
}
|
||||
$tools.AddToolVersion("Cmake", $(Get-CmakeVersion))
|
||||
$tools.AddToolVersion("CodeQL Action Bundle", $(Get-CodeQLBundleVersion))
|
||||
if ($os.IsMonterey) {
|
||||
$tools.AddToolVersion("Colima", $(Get-ColimaVersion))
|
||||
}
|
||||
$tools.AddToolVersion("Fastlane", $(Get-FastlaneVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$tools.AddToolVersion("GHC", $(Get-GHCVersion))
|
||||
$tools.AddToolVersion("GHCup", $(Get-GHCupVersion))
|
||||
$tools.AddToolVersion("Jazzy", $(Get-JazzyVersion))
|
||||
}
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$tools.AddToolVersion("Stack", $(Get-StackVersion))
|
||||
}
|
||||
$tools.AddToolVersion("SwiftFormat", $(Get-SwiftFormatVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$tools.AddToolVersion("Swig", $(Get-SwigVersion))
|
||||
}
|
||||
$tools.AddToolVersion("Xcode Command Line Tools", $(Get-XcodeCommandLineToolsVersion))
|
||||
|
||||
# Linters
|
||||
$linters = $installedSoftware.AddHeader("Linters")
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$linters.AddToolVersion("SwiftLint", $(Get-SwiftLintVersion))
|
||||
}
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$linters.AddToolVersion("Yamllint", $(Get-YamllintVersion))
|
||||
}
|
||||
|
||||
# Browsers
|
||||
$browsers = $installedSoftware.AddHeader("Browsers")
|
||||
$browsers.AddNodes($(Build-BrowserSection))
|
||||
$browsers.AddNode($(Build-BrowserWebdriversEnvironmentTable))
|
||||
|
||||
# Java
|
||||
$java = $installedSoftware.AddHeader("Java")
|
||||
$java.AddTable($(Get-JavaVersions))
|
||||
|
||||
# Toolcache
|
||||
if (-not $os.IsSonoma) {
|
||||
$toolcache = $installedSoftware.AddHeader("Cached Tools")
|
||||
$toolcache.AddNodes($(Build-ToolcacheSection))
|
||||
|
||||
# Rust
|
||||
$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.AddHeader("Packages")
|
||||
if (-not $os.IsVentura) {
|
||||
$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.AddHeader("PowerShell Tools")
|
||||
$powerShell.AddToolVersion("PowerShell", $(Get-PowershellVersion))
|
||||
|
||||
$powerShellModules = $powerShell.AddHeader("PowerShell Modules")
|
||||
$powerShellModules.AddNodes($(Get-PowerShellModules))
|
||||
|
||||
# Web Servers
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$webServers = $installedSoftware.AddHeader("Web Servers")
|
||||
$webServers.AddTable($(Build-WebServersSection))
|
||||
}
|
||||
|
||||
# Xamarin section
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$xamarin = $installedSoftware.AddHeader("Xamarin")
|
||||
$vsForMac = $xamarin.AddHeader("Visual Studio for Mac")
|
||||
$vsForMac.AddTable($(Build-VSMacTable))
|
||||
$note =
|
||||
@'
|
||||
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.AddHeader("Notes")
|
||||
$vsForMacNotes.AddNote($note)
|
||||
|
||||
$xamarinBundles = $xamarin.AddHeader("Xamarin bundles")
|
||||
$xamarinBundles.AddTable($(Build-XamarinTable))
|
||||
|
||||
$unitTestFramework = $xamarin.AddHeader("Unit Test Framework")
|
||||
$unitTestFramework.AddToolVersion("NUnit", $(Get-NUnitVersion))
|
||||
}
|
||||
|
||||
# Xcode section
|
||||
$xcode = $installedSoftware.AddHeader("Xcode")
|
||||
# First run doesn't provide full data about devices and runtimes
|
||||
Get-XcodeInfoList | Out-Null
|
||||
|
||||
$xcodeInfo = Get-XcodeInfoList
|
||||
$xcode.AddTable($(Build-XcodeTable $xcodeInfo))
|
||||
|
||||
$xcodeTools = $xcode.AddHeader("Xcode Support Tools")
|
||||
$xcodeTools.AddNodes($(Build-XcodeSupportToolsSection))
|
||||
|
||||
$installedSdks = $xcode.AddHeader("Installed SDKs")
|
||||
$installedSdks.AddTable($(Build-XcodeSDKTable $xcodeInfo))
|
||||
|
||||
$installedSimulators = $xcode.AddHeader("Installed Simulators")
|
||||
$installedSimulators.AddTable($(Build-XcodeSimulatorsTable $xcodeInfo))
|
||||
|
||||
# Android section
|
||||
$android = $installedSoftware.AddHeader("Android")
|
||||
$androidTable = Build-AndroidTable
|
||||
$android.AddTable($androidTable)
|
||||
|
||||
$androidEnv = $android.AddHeader("Environment variables")
|
||||
$androidEnv.AddTable($(Build-AndroidEnvironmentTable))
|
||||
|
||||
if ($os.IsBigSur -or $os.IsMonterey) {
|
||||
$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.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.AddHeader("Notes")
|
||||
$miscellaneousEnvNotes.AddNote($notes)
|
||||
}
|
||||
|
||||
if (-not (Test-Path $OutputDirectory)) { New-Item -Path $OutputDirectory -ItemType Directory | Out-Null }
|
||||
|
||||
#
|
||||
# Write final reports
|
||||
#
|
||||
Write-Host $markdownExtended
|
||||
$softwareReport.ToJson() | Out-File -FilePath "${OutputDirectory}/systeminfo.json" -Encoding UTF8NoBOM
|
||||
$softwareReport.ToMarkdown() | Out-File -FilePath "${OutputDirectory}/systeminfo.md" -Encoding UTF8NoBOM
|
||||
using module ./software-report-base/SoftwareReport.psm1
|
||||
using module ./software-report-base/SoftwareReport.Nodes.psm1
|
||||
|
||||
param (
|
||||
[Parameter(Mandatory)][string]
|
||||
$OutputDirectory,
|
||||
$ImageName
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Common.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Xcode.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Android.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Java.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Xamarin.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Toolcache.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.Browsers.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/SoftwareReport.WebServers.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/../helpers/SoftwareReport.Helpers.psm1"
|
||||
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||
Import-Module "$PSScriptRoot/../helpers/Xcode.Helpers.psm1"
|
||||
|
||||
# Operating System info
|
||||
$os = Get-OSVersion
|
||||
|
||||
# OS info
|
||||
$osInfo = Build-OSInfoSection $ImageName
|
||||
|
||||
# Software report
|
||||
$softwareReport = [SoftwareReport]::new($osInfo)
|
||||
$installedSoftware = $softwareReport.Root.AddHeader("Installed Software")
|
||||
|
||||
# Language and Runtime
|
||||
$languageAndRuntime = $installedSoftware.AddHeader("Language and Runtime")
|
||||
$languageAndRuntime.AddToolVersionsListInline(".NET Core SDK", $(Get-DotnetVersionList), '^\d+\.\d+\.\d')
|
||||
$languageAndRuntime.AddToolVersion("Bash", $(Get-BashVersion))
|
||||
$languageAndRuntime.AddNodes($(Get-ClangLLVMVersions))
|
||||
$languageAndRuntime.AddNodes($(Get-GccVersions))
|
||||
$languageAndRuntime.AddNodes($(Get-FortranVersions))
|
||||
$languageAndRuntime.AddToolVersion("Julia", $(Get-JuliaVersion))
|
||||
$languageAndRuntime.AddToolVersion("Kotlin", $(Get-KotlinVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$languageAndRuntime.AddToolVersion("Go", $(Get-GoVersion))
|
||||
}
|
||||
$languageAndRuntime.AddToolVersion("Mono", $(Get-MonoVersion))
|
||||
$languageAndRuntime.AddToolVersion("Node.js", $(Get-NodeVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$languageAndRuntime.AddToolVersion("MSBuild", $(Get-MSBuildVersion))
|
||||
$languageAndRuntime.AddToolVersion("NVM", $(Get-NVMVersion))
|
||||
$languageAndRuntime.AddToolVersionsListInline("NVM - Cached node versions", $(Get-NVMNodeVersionList), '^\d+')
|
||||
}
|
||||
$languageAndRuntime.AddToolVersion("Perl", $(Get-PerlVersion))
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$languageAndRuntime.AddToolVersion("PHP", $(Get-PHPVersion))
|
||||
}
|
||||
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$languageAndRuntime.AddToolVersion("Python", $(Get-PythonVersion))
|
||||
}
|
||||
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$languageAndRuntime.AddToolVersion("Python3", $(Get-Python3Version))
|
||||
}
|
||||
$languageAndRuntime.AddToolVersion("R", $(Get-RVersion))
|
||||
$languageAndRuntime.AddToolVersion("Ruby", $(Get-RubyVersion))
|
||||
|
||||
# Package Management
|
||||
$packageManagement = $installedSoftware.AddHeader("Package Management")
|
||||
$packageManagement.AddToolVersion("Bundler", $(Get-BundlerVersion))
|
||||
$packageManagement.AddToolVersion("Carthage", $(Get-CarthageVersion))
|
||||
$packageManagement.AddToolVersion("CocoaPods", $(Get-CocoaPodsVersion))
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$packageManagement.AddToolVersion("Composer", $(Get-ComposerVersion))
|
||||
}
|
||||
$packageManagement.AddToolVersion("Homebrew", $(Get-HomebrewVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$packageManagement.AddToolVersion("Miniconda", $(Get-CondaVersion))
|
||||
}
|
||||
$packageManagement.AddToolVersion("NPM", $(Get-NPMVersion))
|
||||
$packageManagement.AddToolVersion("NuGet", $(Get-NuGetVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$packageManagement.AddToolVersion("Pip", $(Get-PipVersion -Version 2))
|
||||
}
|
||||
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$packageManagement.AddToolVersion("Pip3", $(Get-PipVersion -Version 3))
|
||||
$packageManagement.AddToolVersion("Pipx", $(Get-PipxVersion))
|
||||
}
|
||||
|
||||
$packageManagement.AddToolVersion("RubyGems", $(Get-RubyGemsVersion))
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$packageManagement.AddToolVersion("Vcpkg", $(Get-VcpkgVersion))
|
||||
}
|
||||
$packageManagement.AddToolVersion("Yarn", $(Get-YarnVersion))
|
||||
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$packageManagement.AddNode($(Build-PackageManagementEnvironmentTable))
|
||||
}
|
||||
# Project Management
|
||||
$projectManagement = $installedSoftware.AddHeader("Project Management")
|
||||
$projectManagement.AddToolVersion("Apache Ant", $(Get-ApacheAntVersion))
|
||||
$projectManagement.AddToolVersion("Apache Maven", $(Get-MavenVersion))
|
||||
$projectManagement.AddToolVersion("Gradle", $(Get-GradleVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$projectManagement.AddToolVersion("Sbt", $(Get-SbtVersion))
|
||||
}
|
||||
|
||||
# Utilities
|
||||
$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))
|
||||
$utilities.AddToolVersion("GNU Tar", $(Get-GnuTarVersion))
|
||||
$utilities.AddToolVersion("GNU Wget", $(Get-WgetVersion))
|
||||
$utilities.AddToolVersion("gpg (GnuPG)", $(Get-GPGVersion))
|
||||
if ($os.IsBigSur) {
|
||||
$utilities.AddToolVersion("helm", $(Get-HelmVersion))
|
||||
}
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$utilities.AddToolVersion("ImageMagick", $(Get-ImageMagickVersion))
|
||||
}
|
||||
$utilities.AddToolVersion("jq", $(Get-JqVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$utilities.AddToolVersion("mongo", $(Get-MongoVersion))
|
||||
$utilities.AddToolVersion("mongod", $(Get-MongodVersion))
|
||||
}
|
||||
if ($os.IsBigSur) {
|
||||
$utilities.AddToolVersion("Newman", $(Get-NewmanVersion))
|
||||
}
|
||||
$utilities.AddToolVersion("OpenSSL", $(Get-OpenSSLVersion))
|
||||
$utilities.AddToolVersion("Packer", $(Get-PackerVersion))
|
||||
$utilities.AddToolVersion("pkg-config", $(Get-PKGConfigVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$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 ($os.IsMonterey) {
|
||||
$utilities.AddToolVersion("Vagrant", $(Get-VagrantVersion))
|
||||
$utilities.AddToolVersion("VirtualBox", $(Get-VirtualBoxVersion))
|
||||
}
|
||||
$utilities.AddToolVersion("yq", $(Get-YqVersion))
|
||||
$utilities.AddToolVersion("zstd", $(Get-ZstdVersion))
|
||||
|
||||
# Tools
|
||||
$tools = $installedSoftware.AddHeader("Tools")
|
||||
if ($os.IsBigSur) {
|
||||
$tools.AddToolVersion("Aliyun CLI", $(Get-AliyunCLIVersion))
|
||||
}
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$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))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$tools.AddToolVersion("Cabal", $(Get-CabalVersion))
|
||||
}
|
||||
$tools.AddToolVersion("Cmake", $(Get-CmakeVersion))
|
||||
$tools.AddToolVersion("CodeQL Action Bundle", $(Get-CodeQLBundleVersion))
|
||||
if ($os.IsMonterey) {
|
||||
$tools.AddToolVersion("Colima", $(Get-ColimaVersion))
|
||||
}
|
||||
$tools.AddToolVersion("Fastlane", $(Get-FastlaneVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$tools.AddToolVersion("GHC", $(Get-GHCVersion))
|
||||
$tools.AddToolVersion("GHCup", $(Get-GHCupVersion))
|
||||
$tools.AddToolVersion("Jazzy", $(Get-JazzyVersion))
|
||||
}
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$tools.AddToolVersion("Stack", $(Get-StackVersion))
|
||||
}
|
||||
$tools.AddToolVersion("SwiftFormat", $(Get-SwiftFormatVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$tools.AddToolVersion("Swig", $(Get-SwigVersion))
|
||||
}
|
||||
$tools.AddToolVersion("Xcode Command Line Tools", $(Get-XcodeCommandLineToolsVersion))
|
||||
|
||||
# Linters
|
||||
$linters = $installedSoftware.AddHeader("Linters")
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$linters.AddToolVersion("SwiftLint", $(Get-SwiftLintVersion))
|
||||
}
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$linters.AddToolVersion("Yamllint", $(Get-YamllintVersion))
|
||||
}
|
||||
|
||||
# Browsers
|
||||
$browsers = $installedSoftware.AddHeader("Browsers")
|
||||
$browsers.AddNodes($(Build-BrowserSection))
|
||||
$browsers.AddNode($(Build-BrowserWebdriversEnvironmentTable))
|
||||
|
||||
# Java
|
||||
$java = $installedSoftware.AddHeader("Java")
|
||||
$java.AddTable($(Get-JavaVersions))
|
||||
|
||||
# Toolcache
|
||||
if (-not $os.IsSonoma) {
|
||||
$toolcache = $installedSoftware.AddHeader("Cached Tools")
|
||||
$toolcache.AddNodes($(Build-ToolcacheSection))
|
||||
|
||||
# Rust
|
||||
$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.AddHeader("Packages")
|
||||
if (-not $os.IsVentura) {
|
||||
$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.AddHeader("PowerShell Tools")
|
||||
$powerShell.AddToolVersion("PowerShell", $(Get-PowershellVersion))
|
||||
|
||||
$powerShellModules = $powerShell.AddHeader("PowerShell Modules")
|
||||
$powerShellModules.AddNodes($(Get-PowerShellModules))
|
||||
|
||||
# Web Servers
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$webServers = $installedSoftware.AddHeader("Web Servers")
|
||||
$webServers.AddTable($(Build-WebServersSection))
|
||||
}
|
||||
|
||||
# Xamarin section
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$xamarin = $installedSoftware.AddHeader("Xamarin")
|
||||
$vsForMac = $xamarin.AddHeader("Visual Studio for Mac")
|
||||
$vsForMac.AddTable($(Build-VSMacTable))
|
||||
$note =
|
||||
@'
|
||||
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.AddHeader("Notes")
|
||||
$vsForMacNotes.AddNote($note)
|
||||
|
||||
$xamarinBundles = $xamarin.AddHeader("Xamarin bundles")
|
||||
$xamarinBundles.AddTable($(Build-XamarinTable))
|
||||
|
||||
$unitTestFramework = $xamarin.AddHeader("Unit Test Framework")
|
||||
$unitTestFramework.AddToolVersion("NUnit", $(Get-NUnitVersion))
|
||||
}
|
||||
|
||||
# Xcode section
|
||||
$xcode = $installedSoftware.AddHeader("Xcode")
|
||||
# First run doesn't provide full data about devices and runtimes
|
||||
Get-XcodeInfoList | Out-Null
|
||||
|
||||
$xcodeInfo = Get-XcodeInfoList
|
||||
$xcode.AddTable($(Build-XcodeTable $xcodeInfo))
|
||||
|
||||
$xcodeTools = $xcode.AddHeader("Xcode Support Tools")
|
||||
$xcodeTools.AddNodes($(Build-XcodeSupportToolsSection))
|
||||
|
||||
$installedSdks = $xcode.AddHeader("Installed SDKs")
|
||||
$installedSdks.AddTable($(Build-XcodeSDKTable $xcodeInfo))
|
||||
|
||||
$installedSimulators = $xcode.AddHeader("Installed Simulators")
|
||||
$installedSimulators.AddTable($(Build-XcodeSimulatorsTable $xcodeInfo))
|
||||
|
||||
# Android section
|
||||
$android = $installedSoftware.AddHeader("Android")
|
||||
$androidTable = Build-AndroidTable
|
||||
$android.AddTable($androidTable)
|
||||
|
||||
$androidEnv = $android.AddHeader("Environment variables")
|
||||
$androidEnv.AddTable($(Build-AndroidEnvironmentTable))
|
||||
|
||||
if ($os.IsBigSur -or $os.IsMonterey) {
|
||||
$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.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.AddHeader("Notes")
|
||||
$miscellaneousEnvNotes.AddNote($notes)
|
||||
}
|
||||
|
||||
if (-not (Test-Path $OutputDirectory)) { New-Item -Path $OutputDirectory -ItemType Directory | Out-Null }
|
||||
|
||||
#
|
||||
# Write final reports
|
||||
#
|
||||
Write-Host $markdownExtended
|
||||
$softwareReport.ToJson() | Out-File -FilePath "${OutputDirectory}/systeminfo.json" -Encoding UTF8NoBOM
|
||||
$softwareReport.ToMarkdown() | Out-File -FilePath "${OutputDirectory}/systeminfo.md" -Encoding UTF8NoBOM
|
||||
0
images/macos/provision/utils/utils.sh → images/macos/scripts/helpers/utils.sh
Executable file → Normal file
0
images/macos/provision/utils/utils.sh → images/macos/scripts/helpers/utils.sh
Executable file → Normal file
@@ -1,82 +1,82 @@
|
||||
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||
Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/../software-report/SoftwareReport.Android.psm1" -DisableNameChecking
|
||||
|
||||
$os = Get-OSVersion
|
||||
|
||||
Describe "Android" {
|
||||
$androidSdkManagerPackages = Get-AndroidPackages
|
||||
[int]$platformMinVersion = Get-ToolsetValue "android.platform_min_version"
|
||||
[version]$buildToolsMinVersion = Get-ToolsetValue "android.build_tools_min_version"
|
||||
[array]$ndkVersions = Get-ToolsetValue "android.ndk.versions"
|
||||
$ndkFullVersions = $ndkVersions | ForEach-Object { Get-ChildItem "$env:ANDROID_HOME/ndk/${_}.*" -Name | Select-Object -Last 1 } | ForEach-Object { "ndk/${_}" }
|
||||
# Platforms starting with a letter are the preview versions, which is not installed on the image
|
||||
$platformVersionsList = ($androidSdkManagerPackages | Where-Object { "$_".StartsWith("platforms;") }) -replace 'platforms;android-', '' | Where-Object { $_ -match "^\d" } | Sort-Object -Unique
|
||||
$platformsInstalled = $platformVersionsList | Where-Object { [int]($_.Split("-")[0]) -ge $platformMinVersion } | ForEach-Object { "platforms/android-${_}" }
|
||||
|
||||
$buildToolsList = ($androidSdkManagerPackages | Where-Object { "$_".StartsWith("build-tools;") }) -replace 'build-tools;', ''
|
||||
$buildTools = $buildToolsList | Where-Object { $_ -match "\d+(\.\d+){2,}$" } | Where-Object { [version]$_ -ge $buildToolsMinVersion } | Sort-Object -Unique |
|
||||
ForEach-Object { "build-tools/${_}" }
|
||||
|
||||
$androidPackages = @(
|
||||
"tools",
|
||||
"platform-tools",
|
||||
"cmake",
|
||||
$platformsInstalled,
|
||||
$buildTools,
|
||||
$ndkFullVersions,
|
||||
(Get-ToolsetValue "android.extra-list" | ForEach-Object { "extras/${_}" }),
|
||||
(Get-ToolsetValue "android.addon-list" | ForEach-Object { "add-ons/${_}" }),
|
||||
(Get-ToolsetValue "android.additional-tools")
|
||||
) | ForEach-Object { $_ }
|
||||
|
||||
# Remove empty strings from array to avoid possible issues
|
||||
$androidPackages = $androidPackages | Where-Object { $_ }
|
||||
|
||||
BeforeAll {
|
||||
$ANDROID_SDK_DIR = Join-Path $env:HOME "Library" "Android" "sdk"
|
||||
|
||||
function Validate-AndroidPackage {
|
||||
param (
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$PackageName
|
||||
)
|
||||
|
||||
# Convert 'm2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1' ->
|
||||
# 'm2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-beta1'
|
||||
$PackageName = $PackageName.Replace(";", "/")
|
||||
$targetPath = Join-Path $ANDROID_SDK_DIR $PackageName
|
||||
$targetPath | Should -Exist
|
||||
}
|
||||
}
|
||||
|
||||
Context "SDKManagers" {
|
||||
$testCases = @(
|
||||
@{
|
||||
PackageName = "Command-line tools"
|
||||
Sdkmanager = "$env:ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager"
|
||||
}
|
||||
)
|
||||
if ($os.IsBigSur -or $os.IsMonterey) {
|
||||
$testCases += @(
|
||||
@{
|
||||
PackageName = "SDK tools"
|
||||
Sdkmanager = "$env:ANDROID_HOME/tools/bin/sdkmanager"
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
It "Sdkmanager from <PackageName> is available" -TestCases $testCases {
|
||||
"$Sdkmanager --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
}
|
||||
|
||||
Context "Packages" {
|
||||
$testCases = $androidPackages | ForEach-Object { @{ PackageName = $_ } }
|
||||
|
||||
It "<PackageName>" -TestCases $testCases {
|
||||
param ([string] $PackageName)
|
||||
Validate-AndroidPackage $PackageName
|
||||
}
|
||||
}
|
||||
}
|
||||
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||
Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking
|
||||
Import-Module "$PSScriptRoot/../software-report/SoftwareReport.Android.psm1" -DisableNameChecking
|
||||
|
||||
$os = Get-OSVersion
|
||||
|
||||
Describe "Android" {
|
||||
$androidSdkManagerPackages = Get-AndroidPackages
|
||||
[int]$platformMinVersion = Get-ToolsetValue "android.platform_min_version"
|
||||
[version]$buildToolsMinVersion = Get-ToolsetValue "android.build_tools_min_version"
|
||||
[array]$ndkVersions = Get-ToolsetValue "android.ndk.versions"
|
||||
$ndkFullVersions = $ndkVersions | ForEach-Object { Get-ChildItem "$env:ANDROID_HOME/ndk/${_}.*" -Name | Select-Object -Last 1 } | ForEach-Object { "ndk/${_}" }
|
||||
# Platforms starting with a letter are the preview versions, which is not installed on the image
|
||||
$platformVersionsList = ($androidSdkManagerPackages | Where-Object { "$_".StartsWith("platforms;") }) -replace 'platforms;android-', '' | Where-Object { $_ -match "^\d" } | Sort-Object -Unique
|
||||
$platformsInstalled = $platformVersionsList | Where-Object { [int]($_.Split("-")[0]) -ge $platformMinVersion } | ForEach-Object { "platforms/android-${_}" }
|
||||
|
||||
$buildToolsList = ($androidSdkManagerPackages | Where-Object { "$_".StartsWith("build-tools;") }) -replace 'build-tools;', ''
|
||||
$buildTools = $buildToolsList | Where-Object { $_ -match "\d+(\.\d+){2,}$" } | Where-Object { [version]$_ -ge $buildToolsMinVersion } | Sort-Object -Unique |
|
||||
ForEach-Object { "build-tools/${_}" }
|
||||
|
||||
$androidPackages = @(
|
||||
"tools",
|
||||
"platform-tools",
|
||||
"cmake",
|
||||
$platformsInstalled,
|
||||
$buildTools,
|
||||
$ndkFullVersions,
|
||||
(Get-ToolsetValue "android.extra-list" | ForEach-Object { "extras/${_}" }),
|
||||
(Get-ToolsetValue "android.addon-list" | ForEach-Object { "add-ons/${_}" }),
|
||||
(Get-ToolsetValue "android.additional-tools")
|
||||
) | ForEach-Object { $_ }
|
||||
|
||||
# Remove empty strings from array to avoid possible issues
|
||||
$androidPackages = $androidPackages | Where-Object { $_ }
|
||||
|
||||
BeforeAll {
|
||||
$ANDROID_SDK_DIR = Join-Path $env:HOME "Library" "Android" "sdk"
|
||||
|
||||
function Validate-AndroidPackage {
|
||||
param (
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$PackageName
|
||||
)
|
||||
|
||||
# Convert 'm2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1' ->
|
||||
# 'm2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-beta1'
|
||||
$PackageName = $PackageName.Replace(";", "/")
|
||||
$targetPath = Join-Path $ANDROID_SDK_DIR $PackageName
|
||||
$targetPath | Should -Exist
|
||||
}
|
||||
}
|
||||
|
||||
Context "SDKManagers" {
|
||||
$testCases = @(
|
||||
@{
|
||||
PackageName = "Command-line tools"
|
||||
Sdkmanager = "$env:ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager"
|
||||
}
|
||||
)
|
||||
if ($os.IsBigSur -or $os.IsMonterey) {
|
||||
$testCases += @(
|
||||
@{
|
||||
PackageName = "SDK tools"
|
||||
Sdkmanager = "$env:ANDROID_HOME/tools/bin/sdkmanager"
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
It "Sdkmanager from <PackageName> is available" -TestCases $testCases {
|
||||
"$Sdkmanager --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
}
|
||||
|
||||
Context "Packages" {
|
||||
$testCases = $androidPackages | ForEach-Object { @{ PackageName = $_ } }
|
||||
|
||||
It "<PackageName>" -TestCases $testCases {
|
||||
param ([string] $PackageName)
|
||||
Validate-AndroidPackage $PackageName
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user