- Update all Bash scripts (sf-check, sf-org-info, sf-data-export, sf-data-import, sf-logs-tail) to use -ve instead of -vb - Update all PowerShell scripts (sf-org-info.ps1, sf-apex-run.ps1, sf-check.ps1, sf-data-export.ps1, sf-data-import.ps1) to use -ve instead of -vb - Fix PowerShell parameter conflicts with built-in -Verbose parameter - Update README.md, TESTING.md, and OPTION_CONSISTENCY.md documentation to reflect -ve parameter - Update test scripts (test-wrapper-suite.sh, test-wrapper-suite.ps1, test-all-wrappers.sh) to use -ve - Maintain cross-platform consistency with two-character option scheme - Fix Unicode display issues in PowerShell output with UTF-8 encoding
338 lines
8.9 KiB
PowerShell
338 lines
8.9 KiB
PowerShell
param(
|
|
[switch]$vb,
|
|
[switch]$hp
|
|
)
|
|
|
|
function Show-Help {
|
|
@"
|
|
sf-check.ps1 — verify Salesforce CLI environment and configuration
|
|
|
|
USAGE:
|
|
sf-check.ps1 [-ve] [-hp]
|
|
|
|
OPTIONS:
|
|
-ve Verbose output (show detailed information)
|
|
-hp Help - show this help
|
|
|
|
DESCRIPTION:
|
|
This script verifies that the Salesforce CLI is properly installed and configured.
|
|
It checks for:
|
|
- SF CLI installation and version
|
|
- Available orgs and authentication status
|
|
- Basic configuration settings
|
|
- Common issues and recommendations
|
|
|
|
EXAMPLES:
|
|
sf-check.ps1 # Basic environment check
|
|
sf-check.ps1 -ve # Verbose output with detailed information
|
|
"@
|
|
}
|
|
|
|
# Function to print status messages with colors
|
|
function Write-Status {
|
|
param(
|
|
[string]$Status,
|
|
[string]$Message
|
|
)
|
|
|
|
switch ($Status) {
|
|
"OK" {
|
|
Write-Host "[" -NoNewline
|
|
Write-Host "✓" -ForegroundColor Green -NoNewline
|
|
Write-Host "] $Message"
|
|
}
|
|
"WARN" {
|
|
Write-Host "[" -NoNewline
|
|
Write-Host "!" -ForegroundColor Yellow -NoNewline
|
|
Write-Host "] $Message"
|
|
}
|
|
"ERROR" {
|
|
Write-Host "[" -NoNewline
|
|
Write-Host "✗" -ForegroundColor Red -NoNewline
|
|
Write-Host "] $Message"
|
|
}
|
|
"INFO" {
|
|
Write-Host "[" -NoNewline
|
|
Write-Host "i" -ForegroundColor Blue -NoNewline
|
|
Write-Host "] $Message"
|
|
}
|
|
}
|
|
}
|
|
|
|
# Function to check if a command exists
|
|
function Test-Command {
|
|
param([string]$CommandName)
|
|
try {
|
|
Get-Command $CommandName -ErrorAction Stop | Out-Null
|
|
return $true
|
|
}
|
|
catch {
|
|
return $false
|
|
}
|
|
}
|
|
|
|
# Function to check SF CLI installation
|
|
function Test-SfInstallation {
|
|
Write-Status "INFO" "Checking Salesforce CLI installation..."
|
|
|
|
if (Test-Command "sf") {
|
|
try {
|
|
$sfVersion = & sf --version 2>$null | Select-Object -First 1
|
|
if ([string]::IsNullOrEmpty($sfVersion)) {
|
|
$sfVersion = "unknown"
|
|
}
|
|
Write-Status "OK" "Salesforce CLI found: $sfVersion"
|
|
|
|
if ($Verbose) {
|
|
$sfPath = (Get-Command sf).Source
|
|
Write-Host " Location: $sfPath"
|
|
}
|
|
return $true
|
|
}
|
|
catch {
|
|
Write-Status "ERROR" "Salesforce CLI found but unable to get version"
|
|
return $false
|
|
}
|
|
}
|
|
else {
|
|
Write-Status "ERROR" "Salesforce CLI (sf) not found in PATH"
|
|
Write-Host " Please install the Salesforce CLI from: https://developer.salesforce.com/tools/sfdxcli"
|
|
return $false
|
|
}
|
|
}
|
|
|
|
# Function to check authenticated orgs
|
|
function Test-Orgs {
|
|
Write-Status "INFO" "Checking authenticated orgs..."
|
|
|
|
if (-not (Test-Command "sf")) {
|
|
return $false
|
|
}
|
|
|
|
try {
|
|
$orgListJson = & sf org list --json 2>$null
|
|
if ($LASTEXITCODE -eq 0) {
|
|
$orgList = $orgListJson | ConvertFrom-Json
|
|
$orgCount = $orgList.result.Count
|
|
|
|
if ($orgCount -gt 0) {
|
|
Write-Status "OK" "Found $orgCount authenticated org(s)"
|
|
|
|
if ($Verbose) {
|
|
foreach ($org in $orgList.result) {
|
|
$displayName = if ($org.alias) { $org.alias } else { $org.username }
|
|
$orgIdShort = $org.orgId.Substring(0, 15)
|
|
Write-Host " - $displayName ($orgIdShort...)"
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
Write-Status "WARN" "No authenticated orgs found"
|
|
Write-Host " Run 'sf org login web' or 'sf org login jwt' to authenticate"
|
|
}
|
|
return $true
|
|
}
|
|
else {
|
|
Write-Status "ERROR" "Unable to list orgs (sf org list failed)"
|
|
return $false
|
|
}
|
|
}
|
|
catch {
|
|
Write-Status "ERROR" "Error checking authenticated orgs: $($_.Exception.Message)"
|
|
return $false
|
|
}
|
|
}
|
|
|
|
# Function to check default org
|
|
function Test-DefaultOrg {
|
|
Write-Status "INFO" "Checking default org configuration..."
|
|
|
|
if (-not (Test-Command "sf")) {
|
|
return $false
|
|
}
|
|
|
|
try {
|
|
$configJson = & sf config get target-org --json 2>$null
|
|
if ($LASTEXITCODE -eq 0) {
|
|
$config = $configJson | ConvertFrom-Json
|
|
$defaultOrg = $config.result[0].value
|
|
|
|
if ($defaultOrg -and $defaultOrg -ne "null") {
|
|
Write-Status "OK" "Default org set: $defaultOrg"
|
|
}
|
|
else {
|
|
Write-Status "WARN" "No default org configured"
|
|
Write-Host " Set with: sf config set target-org <org-alias>"
|
|
}
|
|
}
|
|
else {
|
|
Write-Status "WARN" "Unable to check default org configuration"
|
|
}
|
|
}
|
|
catch {
|
|
Write-Status "WARN" "Unable to check default org configuration"
|
|
}
|
|
}
|
|
|
|
# Function to check plugins
|
|
function Test-Plugins {
|
|
if (-not $Verbose) {
|
|
return
|
|
}
|
|
|
|
Write-Status "INFO" "Checking installed plugins..."
|
|
|
|
if (-not (Test-Command "sf")) {
|
|
return
|
|
}
|
|
|
|
try {
|
|
$pluginsJson = & sf plugins --json 2>$null
|
|
if ($LASTEXITCODE -eq 0) {
|
|
$plugins = $pluginsJson | ConvertFrom-Json
|
|
if ($plugins.result.Count -gt 0) {
|
|
foreach ($plugin in $plugins.result) {
|
|
Write-Host " - $($plugin.name)"
|
|
}
|
|
}
|
|
else {
|
|
Write-Host " No additional plugins installed"
|
|
}
|
|
}
|
|
else {
|
|
Write-Host " Unable to list plugins"
|
|
}
|
|
}
|
|
catch {
|
|
Write-Host " Unable to list plugins"
|
|
}
|
|
}
|
|
|
|
# Function to check system requirements
|
|
function Test-System {
|
|
if (-not $Verbose) {
|
|
return
|
|
}
|
|
|
|
Write-Status "INFO" "System information..."
|
|
|
|
$osInfo = Get-CimInstance -ClassName Win32_OperatingSystem
|
|
Write-Host " OS: $($osInfo.Caption) $($osInfo.Version)"
|
|
Write-Host " PowerShell: $($PSVersionTable.PSVersion)"
|
|
|
|
if (Test-Command "node") {
|
|
try {
|
|
$nodeVersion = & node --version 2>$null
|
|
Write-Host " Node.js: $nodeVersion"
|
|
}
|
|
catch {
|
|
Write-Status "WARN" "Node.js found but unable to get version"
|
|
}
|
|
}
|
|
else {
|
|
Write-Status "WARN" "Node.js not found (required for some SF CLI features)"
|
|
}
|
|
|
|
if (Test-Command "git") {
|
|
try {
|
|
$gitVersion = & git --version 2>$null
|
|
Write-Host " Git: $gitVersion"
|
|
}
|
|
catch {
|
|
Write-Status "WARN" "Git found but unable to get version"
|
|
}
|
|
}
|
|
else {
|
|
Write-Status "WARN" "Git not found (recommended for source control)"
|
|
}
|
|
}
|
|
|
|
# Function to run diagnostics
|
|
function Test-Diagnostics {
|
|
Write-Status "INFO" "Running SF CLI diagnostics..."
|
|
|
|
if (-not (Test-Command "sf")) {
|
|
return
|
|
}
|
|
|
|
try {
|
|
$null = & sf doctor --json 2>$null
|
|
if ($LASTEXITCODE -eq 0) {
|
|
Write-Status "OK" "SF CLI doctor check passed"
|
|
}
|
|
else {
|
|
Write-Status "WARN" "SF CLI doctor check had issues"
|
|
if ($Verbose) {
|
|
Write-Host " Run 'sf doctor' for detailed diagnostics"
|
|
}
|
|
}
|
|
}
|
|
catch {
|
|
Write-Status "WARN" "SF CLI doctor check had issues"
|
|
if ($Verbose) {
|
|
Write-Host " Run 'sf doctor' for detailed diagnostics"
|
|
}
|
|
}
|
|
}
|
|
|
|
# Show help if requested
|
|
if ($hp) {
|
|
Show-Help
|
|
exit 0
|
|
}
|
|
|
|
# Set verbose flag
|
|
$Verbose = $vb
|
|
|
|
# Main execution
|
|
function Main {
|
|
Write-Host "🔍 Salesforce CLI Environment Check" -ForegroundColor Cyan
|
|
Write-Host "==================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
|
|
$hasErrors = $false
|
|
|
|
# Core checks
|
|
if (-not (Test-SfInstallation)) {
|
|
$hasErrors = $true
|
|
}
|
|
|
|
if (-not (Test-Orgs)) {
|
|
$hasErrors = $true
|
|
}
|
|
|
|
Test-DefaultOrg
|
|
|
|
# Additional checks for verbose mode
|
|
if ($Verbose) {
|
|
Write-Host ""
|
|
Test-Plugins
|
|
Write-Host ""
|
|
Test-System
|
|
Write-Host ""
|
|
Test-Diagnostics
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "==================================" -ForegroundColor Cyan
|
|
|
|
if ($hasErrors) {
|
|
Write-Status "ERROR" "Some critical issues found. Please address them before using the SF CLI wrappers."
|
|
exit 1
|
|
}
|
|
else {
|
|
Write-Status "OK" "Environment check completed successfully!"
|
|
Write-Host ""
|
|
Write-Host "Your Salesforce CLI environment is ready to use with sf-cli-wrapper scripts."
|
|
Write-Host "Available commands: sf-deploy.ps1, sf-dry-run.ps1, sf-web-open.ps1"
|
|
|
|
if (-not $Verbose) {
|
|
Write-Host ""
|
|
Write-Host "Run 'sf-check.ps1 -ve' for detailed system information."
|
|
}
|
|
}
|
|
}
|
|
|
|
# Run main function
|
|
Main
|