added addl wrappers

This commit is contained in:
reynold
2025-08-29 15:37:05 +08:00
parent 4fcff2014d
commit 01de33ccc1
5 changed files with 621 additions and 1 deletions

View File

@@ -14,6 +14,10 @@ Core:
- **[`sf-web-open`](#sf-web-open)** - Quick org browser opener for `sf org open`
- **[`sf-check`](#sf-check)** - Environment verification tool to check SF CLI installation and configuration
Authentication:
- **[`sf-web-login` / `sf-web-login.ps1`](#sf-web-login--sf-web-loginps1)** - Web-based org authentication for `sf org login web`
- **[`sf-web-logout` / `sf-web-logout.ps1`](#sf-web-logout--sf-web-logoutps1)** - Org logout wrapper for `sf org logout`
Org and metadata:
- **[`sf-org-create` / `sf-org-create.ps1`](#sf-org-create)** - Smart scratch org creation
- **[`sf-org-info` / `sf-org-info.ps1`](#sf-org-info--sf-org-infops1)** - Quick org info, limits, and context
@@ -78,7 +82,7 @@ sf-data-export -qy "SELECT Id FROM Account" -to myorg -fm csv
2. Make the scripts executable:
```bash
chmod +x \
sf-deploy sf-dry-run sf-web-open sf-check \
sf-deploy sf-dry-run sf-web-open sf-web-login sf-web-logout sf-check \
sf-org-create sf-org-info sf-retrieve sf-test-run sf-apex-run \
sf-data-export sf-data-import sf-logs-tail
```
@@ -91,6 +95,8 @@ sf-data-export -qy "SELECT Id FROM Account" -to myorg -fm csv
ln -s /path/to/sf-cli-wrapper/sf-deploy /usr/local/bin/sf-deploy
ln -s /path/to/sf-cli-wrapper/sf-dry-run /usr/local/bin/sf-dry-run
ln -s /path/to/sf-cli-wrapper/sf-web-open /usr/local/bin/sf-web-open
ln -s /path/to/sf-cli-wrapper/sf-web-login /usr/local/bin/sf-web-login
ln -s /path/to/sf-cli-wrapper/sf-web-logout /usr/local/bin/sf-web-logout
ln -s /path/to/sf-cli-wrapper/sf-check /usr/local/bin/sf-check
ln -s /path/to/sf-cli-wrapper/sf-org-create /usr/local/bin/sf-org-create
ln -s /path/to/sf-cli-wrapper/sf-org-info /usr/local/bin/sf-org-info
@@ -118,6 +124,8 @@ ln -s /path/to/sf-cli-wrapper/sf-logs-tail /usr/local/bin/sf-logs-tail
Set-Alias sf-deploy "C:\\path\\to\\sf-cli-wrapper\\sf-deploy.ps1"
Set-Alias sf-dry-run "C:\\path\\to\\sf-cli-wrapper\\sf-dry-run.ps1"
Set-Alias sf-web-open "C:\\path\\to\\sf-cli-wrapper\\sf-web-open.ps1"
Set-Alias sf-web-login "C:\\path\\to\\sf-cli-wrapper\\sf-web-login.ps1"
Set-Alias sf-web-logout "C:\\path\\to\\sf-cli-wrapper\\sf-web-logout.ps1"
Set-Alias sf-check "C:\\path\\to\\sf-cli-wrapper\\sf-check.ps1"
Set-Alias sf-org-create "C:\\path\\to\\sf-cli-wrapper\\sf-org-create.ps1"
Set-Alias sf-org-info "C:\\path\\to\\sf-cli-wrapper\\sf-org-info.ps1"
@@ -527,6 +535,71 @@ sf-web-open -to NUSHUB-DR2 -ur
---
### <a id="sf-web-login--sf-web-loginps1"></a>[🏠](#salesforce-cli-wrapper-scripts) sf-web-login / sf-web-login.ps1
Web-based org authentication wrapper for `sf org login web`.
**Usage:**
```bash
sf-web-login [-al ALIAS] [-in INSTANCE_URL] [-ud] [-ve] [-hp]
```
```powershell
sf-web-login.ps1 -al "NUSHUB-PROD" -ve
```
**Options:**
- `-al` - Alias for the authenticated org (passes --alias)
- `-in` - Instance URL to authenticate against (passes --instance-url)
- `-ud` - Update default org after login (passes --set-default)
- `-ve` - Enable verbose output showing login details
- `-hp` - Show help
**Examples:**
```bash
# Login to production with alias
sf-web-login -al NUSHUB-PROD
# Login to specific instance with alias and set as default
sf-web-login -al MySandbox -in https://test.my-domain.my.salesforce.com -ud
# Login with verbose output
sf-web-login -al TestOrg -ve
```
---
### <a id="sf-web-logout--sf-web-logoutps1"></a>[🏠](#salesforce-cli-wrapper-scripts) sf-web-logout / sf-web-logout.ps1
Org logout wrapper for `sf org logout`.
**Usage:**
```bash
sf-web-logout [-to ORG_ALIAS_OR_USERNAME] [-al] [-ve] [-hp]
```
```powershell
sf-web-logout.ps1 -to "DEMO" -ve
```
**Options:**
- `-to` - Org alias or username to logout from (passes --target-org)
- `-al` - Logout from all authenticated orgs (passes --all)
- `-ve` - Enable verbose output showing logout details
- `-hp` - Show help
**Examples:**
```bash
# Logout from specific org
sf-web-logout -to DEMO
# Logout from all orgs
sf-web-logout -al
# Logout with verbose output
sf-web-logout -to NUSHUB-PROD -ve
```
---
### <a id="sf-check"></a>[🏠](#salesforce-cli-wrapper-scripts) sf-check
Environment verification tool that checks if the Salesforce CLI is properly installed and configured.

109
sf-web-login Executable file
View File

@@ -0,0 +1,109 @@
#!/usr/bin/env bash
set -euo pipefail
show_help() {
cat <<'EOF'
sf-web-login — wrapper for `sf org login web`
USAGE:
sf-web-login [-al <ALIAS>] [-in <INSTANCE_URL>] [-ud] [-hp] [-ve]
OPTIONS:
-al Alias for the authenticated org (passes --alias)
-in Instance URL to authenticate against (passes --instance-url)
-ud Update default org after login (passes --set-default)
-ve Enable verbose output
-hp Show this help
EXAMPLES:
1) Login to production with alias:
sf-web-login -al NUSHUB-PROD
2) Login to specific instance with alias and set as default:
sf-web-login -al MySandbox -in https://test.my-domain.my.salesforce.com -ud
3) Simple login (will prompt for alias):
sf-web-login
EOF
}
ALIAS=""
INSTANCE_URL=""
SET_DEFAULT=0
VERBOSE=0
# If no args → show help + examples and exit without error
if [[ $# -eq 0 ]]; then
show_help
exit 0
fi
# Parse command line arguments using manual parsing for two-character options
while [[ $# -gt 0 ]]; do
case $1 in
-al)
ALIAS="$2"
shift 2
;;
-in)
INSTANCE_URL="$2"
shift 2
;;
-ud)
SET_DEFAULT=1
shift
;;
-ve)
VERBOSE=1
shift
;;
-hp)
show_help
exit 0
;;
*)
echo "Unknown option: $1" >&2
echo
show_help
exit 1
;;
esac
done
# Silent environment check - verify SF CLI is available
if ! command -v sf >/dev/null 2>&1; then
echo "❌ Salesforce CLI (sf) not found!"
echo
echo "Running environment check to help you get started..."
echo
# Try to find and run sf-check in the same directory as this script
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [[ -x "$SCRIPT_DIR/sf-check" ]]; then
"$SCRIPT_DIR/sf-check"
elif command -v sf-check >/dev/null 2>&1; then
sf-check
else
echo "sf-check not found. Please install the Salesforce CLI from:"
echo "https://developer.salesforce.com/tools/sfdxcli"
fi
exit 1
fi
CMD=(sf org login web)
[[ -n "$ALIAS" ]] && CMD+=(--alias "$ALIAS")
[[ -n "$INSTANCE_URL" ]] && CMD+=(--instance-url "$INSTANCE_URL")
[[ $SET_DEFAULT -eq 1 ]] && CMD+=(--set-default)
if [[ $VERBOSE -eq 1 ]]; then
echo "🔐 Starting Web Login"
echo "===================="
[[ -n "$ALIAS" ]] && echo "Alias: $ALIAS"
[[ -n "$INSTANCE_URL" ]] && echo "Instance URL: $INSTANCE_URL"
[[ $SET_DEFAULT -eq 1 ]] && echo "Will set as default org: Yes"
echo
fi
echo ">>> Running: ${CMD[*]}"
exec "${CMD[@]}"

170
sf-web-login.ps1 Normal file
View File

@@ -0,0 +1,170 @@
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Web login wrapper for Salesforce CLI
.DESCRIPTION
A user-friendly wrapper around 'sf org login web' that simplifies
authenticating to Salesforce orgs via web browser with better formatting
and error handling.
.PARAMETER al
Alias for the authenticated org
.PARAMETER in
Instance URL to authenticate against
.PARAMETER ud
Update default org after login (sets --set-default)
.PARAMETER ve
Enable verbose output showing login details
.PARAMETER hp
Show this help message
.EXAMPLE
.\sf-web-login.ps1 -al "NUSHUB-PROD"
.\sf-web-login.ps1 -al "MySandbox" -in "https://test.my-domain.my.salesforce.com" -ud
.\sf-web-login.ps1 -ve
.NOTES
This script automatically checks for Salesforce CLI installation and runs
diagnostics if the CLI is not found.
#>
param(
[string]$al,
[string]$in,
[switch]$ud,
[switch]$ve,
[switch]$hp
)
# Show help if requested
if ($hp) {
Get-Help $MyInvocation.MyCommand.Path -Detailed
exit 0
}
# Function to check if Salesforce CLI is installed
function Test-SalesforceCLI {
try {
$null = Get-Command sf -ErrorAction Stop
return $true
} catch {
return $false
}
}
# Function to run sf-check diagnostics
function Invoke-SalesforceCheck {
Write-Host "❌ Salesforce CLI (sf) not found!" -ForegroundColor Red
Write-Host ""
Write-Host "Running environment check to help you get started..." -ForegroundColor Yellow
Write-Host ""
$checkScript = if (Test-Path "sf-check.ps1") {
".\sf-check.ps1"
} elseif (Test-Path "sf-check") {
"./sf-check"
} else {
$null
}
if ($checkScript) {
try {
Invoke-Expression $checkScript
} catch {
Write-Host "Error running diagnostics: $($_.Exception.Message)" -ForegroundColor Red
}
} else {
Write-Host "sf-check not found. Please install the Salesforce CLI from:" -ForegroundColor Red
Write-Host "https://developer.salesforce.com/tools/sfdxcli" -ForegroundColor Red
}
}
# Silently check for Salesforce CLI
if (-not (Test-SalesforceCLI)) {
Invoke-SalesforceCheck
exit 1
}
# Build the sf command
$sfArgs = @("org", "login", "web")
# Add parameters based on input
if ($al) {
$sfArgs += "--alias"
$sfArgs += $al
}
if ($in) {
$sfArgs += "--instance-url"
$sfArgs += $in
}
if ($ud) {
$sfArgs += "--set-default"
}
# Display verbose information if requested
if ($ve) {
Write-Host "🔐 Starting Web Login" -ForegroundColor Blue
Write-Host "====================" -ForegroundColor Blue
if ($al) {
Write-Host "Alias: $al" -ForegroundColor Cyan
}
if ($in) {
Write-Host "Instance URL: $in" -ForegroundColor Cyan
}
if ($ud) {
Write-Host "Will set as default org: Yes" -ForegroundColor Cyan
}
Write-Host ""
}
# Display the command being run
Write-Host ">>> Running: sf $($sfArgs -join ' ')" -ForegroundColor Gray
# Execute the command
try {
$startTime = Get-Date
& sf @sfArgs
$exitCode = $LASTEXITCODE
$endTime = Get-Date
$duration = $endTime - $startTime
if ($ve) {
Write-Host ""
Write-Host "⏱️ Login completed in $($duration.TotalSeconds) seconds" -ForegroundColor Green
}
if ($exitCode -eq 0) {
Write-Host ""
Write-Host "✅ Web login completed successfully!" -ForegroundColor Green
if ($al) {
Write-Host "🏷️ Org authenticated with alias: $al" -ForegroundColor Cyan
}
if ($ud) {
Write-Host "⚡ Set as default org" -ForegroundColor Yellow
}
} else {
Write-Host ""
Write-Host "❌ Web login failed with exit code: $exitCode" -ForegroundColor Red
Write-Host "💡 Check your browser and try again" -ForegroundColor Yellow
}
exit $exitCode
} catch {
Write-Host "Error executing sf command: $($_.Exception.Message)" -ForegroundColor Red
exit 1
}

107
sf-web-logout Executable file
View File

@@ -0,0 +1,107 @@
#!/usr/bin/env bash
set -euo pipefail
show_help() {
cat <<'EOF'
sf-web-logout — wrapper for `sf org logout`
USAGE:
sf-web-logout [-to <ORG_ALIAS_OR_USERNAME>] [-al] [-hp] [-ve]
OPTIONS:
-to Org alias or username to logout from (passes --target-org)
-al Logout from all authenticated orgs (passes --all)
-ve Enable verbose output
-hp Show this help
EXAMPLES:
1) Logout from specific org:
sf-web-logout -to DEMO
2) Logout from all orgs:
sf-web-logout -al
3) Logout with verbose output:
sf-web-logout -to NUSHUB-PROD -ve
EOF
}
TARGET_ORG=""
LOGOUT_ALL=0
VERBOSE=0
# If no args → show help + examples and exit without error
if [[ $# -eq 0 ]]; then
show_help
exit 0
fi
# Parse command line arguments using manual parsing for two-character options
while [[ $# -gt 0 ]]; do
case $1 in
-to)
TARGET_ORG="$2"
shift 2
;;
-al)
LOGOUT_ALL=1
shift
;;
-ve)
VERBOSE=1
shift
;;
-hp)
show_help
exit 0
;;
*)
echo "Unknown option: $1" >&2
echo
show_help
exit 1
;;
esac
done
# Validate that both target org and all aren't specified
if [[ -n "$TARGET_ORG" && $LOGOUT_ALL -eq 1 ]]; then
echo "Error: Cannot specify both -to and -al options" >&2
exit 1
fi
# Silent environment check - verify SF CLI is available
if ! command -v sf >/dev/null 2>&1; then
echo "❌ Salesforce CLI (sf) not found!"
echo
echo "Running environment check to help you get started..."
echo
# Try to find and run sf-check in the same directory as this script
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [[ -x "$SCRIPT_DIR/sf-check" ]]; then
"$SCRIPT_DIR/sf-check"
elif command -v sf-check >/dev/null 2>&1; then
sf-check
else
echo "sf-check not found. Please install the Salesforce CLI from:"
echo "https://developer.salesforce.com/tools/sfdxcli"
fi
exit 1
fi
CMD=(sf org logout)
[[ -n "$TARGET_ORG" ]] && CMD+=(--target-org "$TARGET_ORG")
[[ $LOGOUT_ALL -eq 1 ]] && CMD+=(--all)
if [[ $VERBOSE -eq 1 ]]; then
echo "🚪 Starting Logout Process"
echo "========================="
[[ -n "$TARGET_ORG" ]] && echo "Target org: $TARGET_ORG"
[[ $LOGOUT_ALL -eq 1 ]] && echo "Logout from: All authenticated orgs"
echo
fi
echo ">>> Running: ${CMD[*]}"
exec "${CMD[@]}"

161
sf-web-logout.ps1 Normal file
View File

@@ -0,0 +1,161 @@
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Web logout wrapper for Salesforce CLI
.DESCRIPTION
A user-friendly wrapper around 'sf org logout' that simplifies
logging out from Salesforce orgs with better formatting
and error handling.
.PARAMETER to
Org alias or username to logout from
.PARAMETER al
Logout from all authenticated orgs (sets --all)
.PARAMETER ve
Enable verbose output showing logout details
.PARAMETER hp
Show this help message
.EXAMPLE
.\sf-web-logout.ps1 -to "DEMO"
.\sf-web-logout.ps1 -al
.\sf-web-logout.ps1 -to "NUSHUB-PROD" -ve
.NOTES
This script automatically checks for Salesforce CLI installation and runs
diagnostics if the CLI is not found.
#>
param(
[string]$to,
[switch]$al,
[switch]$ve,
[switch]$hp
)
# Show help if requested
if ($hp) {
Get-Help $MyInvocation.MyCommand.Path -Detailed
exit 0
}
# Function to check if Salesforce CLI is installed
function Test-SalesforceCLI {
try {
$null = Get-Command sf -ErrorAction Stop
return $true
} catch {
return $false
}
}
# Function to run sf-check diagnostics
function Invoke-SalesforceCheck {
Write-Host "❌ Salesforce CLI (sf) not found!" -ForegroundColor Red
Write-Host ""
Write-Host "Running environment check to help you get started..." -ForegroundColor Yellow
Write-Host ""
$checkScript = if (Test-Path "sf-check.ps1") {
".\sf-check.ps1"
} elseif (Test-Path "sf-check") {
"./sf-check"
} else {
$null
}
if ($checkScript) {
try {
Invoke-Expression $checkScript
} catch {
Write-Host "Error running diagnostics: $($_.Exception.Message)" -ForegroundColor Red
}
} else {
Write-Host "sf-check not found. Please install the Salesforce CLI from:" -ForegroundColor Red
Write-Host "https://developer.salesforce.com/tools/sfdxcli" -ForegroundColor Red
}
}
# Validate that both target org and all aren't specified
if ($to -and $al) {
Write-Host "Error: Cannot specify both -to and -al parameters" -ForegroundColor Red
exit 1
}
# Silently check for Salesforce CLI
if (-not (Test-SalesforceCLI)) {
Invoke-SalesforceCheck
exit 1
}
# Build the sf command
$sfArgs = @("org", "logout")
# Add parameters based on input
if ($to) {
$sfArgs += "--target-org"
$sfArgs += $to
}
if ($al) {
$sfArgs += "--all"
}
# Display verbose information if requested
if ($ve) {
Write-Host "🚪 Starting Logout Process" -ForegroundColor Blue
Write-Host "=========================" -ForegroundColor Blue
if ($to) {
Write-Host "Target org: $to" -ForegroundColor Cyan
}
if ($al) {
Write-Host "Logout from: All authenticated orgs" -ForegroundColor Cyan
}
Write-Host ""
}
# Display the command being run
Write-Host ">>> Running: sf $($sfArgs -join ' ')" -ForegroundColor Gray
# Execute the command
try {
$startTime = Get-Date
& sf @sfArgs
$exitCode = $LASTEXITCODE
$endTime = Get-Date
$duration = $endTime - $startTime
if ($ve) {
Write-Host ""
Write-Host "⏱️ Logout completed in $($duration.TotalSeconds) seconds" -ForegroundColor Green
}
if ($exitCode -eq 0) {
Write-Host ""
Write-Host "✅ Logout completed successfully!" -ForegroundColor Green
if ($to) {
Write-Host "🚪 Logged out from org: $to" -ForegroundColor Yellow
} elseif ($al) {
Write-Host "🚪 Logged out from all authenticated orgs" -ForegroundColor Yellow
}
} else {
Write-Host ""
Write-Host "❌ Logout failed with exit code: $exitCode" -ForegroundColor Red
Write-Host "💡 Check the org alias/username and try again" -ForegroundColor Yellow
}
exit $exitCode
} catch {
Write-Host "Error executing sf command: $($_.Exception.Message)" -ForegroundColor Red
exit 1
}