demo/core/steps/prereq.ps1
class Prerequisites : Step { static [string] hidden $description = @' Your system must meet these prerequisites: - PowerShell Core (v7+) - helm v3.1+ (https://github.com/helm/helm/releases/tag/v3.2.4) - kubectl (https://kubernetes.io/docs/tasks/tools/install-kubectl/) '@ Prerequisites([ConfigInput] $config) : base( [Prerequisites].Name, $config, '', '', '') {} [bool]Run() { Write-HostSection 'Prerequisites' ([Prerequisites]::description) Write-Host 'Checking prerequisites...'; ([Step]$this).Delay() $prereqMessages = @() $this.config.prereqsSatisified = Test-SetupPreqs ([ref]$prereqMessages) -checkKubectlVersion:$false if (-not $this.config.prereqsSatisified) { $this.config.missingPrereqs = $prereqMessages Read-HostEnter "`nPress Enter to view missing prerequisites..." return $true } Write-Host 'Done' return $this.ShouldProceed() } [bool]ShouldProceed() { $response = Read-HostChoice ` "`nYour system meets the prerequisites. Do you want to continue?" ` ([tuple]::Create('Yes', 'Yes, continue running setup'),[tuple]::Create([question]::previousStepLabel, 'Go back to the previous step')) 0 return $response -eq 0 } } class PrequisitesNotMet : Step { static [string] hidden $description = @' Your system does not meet the prerequisites. Rerun this script after updating your system/environment. '@ PrequisitesNotMet([ConfigInput] $config) : base( [PrequisitesNotMet].Name, $config, '', '', '') {} [bool]Run() { Write-HostSection 'Prequisites Not Met' ([PrequisitesNotMet]::description) Write-Host "The following issues were detected:`n" foreach ($prereqMessage in $this.config.missingPrereqs) { Write-Host $prereqMessage } Read-HostEnter "`nPress Enter to abort..." return $true } [bool]CanRun() { return -not $this.config.prereqsSatisified } } |