updated scripts
This commit is contained in:
146
sf-deploy.ps1
Normal file
146
sf-deploy.ps1
Normal file
@@ -0,0 +1,146 @@
|
||||
param(
|
||||
[string]$o = "",
|
||||
[string]$s = "",
|
||||
[string]$d = "",
|
||||
[string]$t = "",
|
||||
[switch]$h
|
||||
)
|
||||
|
||||
function Show-Help {
|
||||
@"
|
||||
sf-deploy.ps1 — PowerShell wrapper for ``sf project deploy start``
|
||||
|
||||
USAGE:
|
||||
sf-deploy.ps1 -o <ORG_ALIAS_OR_USERNAME> (-s "<src1>,<src2>[,...]" | -d <DIRECTORY>) [-t "<Test1>,<Test2>[,...]"]
|
||||
sf-deploy.ps1 -h
|
||||
|
||||
OPTIONS:
|
||||
-o Org alias or username for --target-org
|
||||
-s Comma-separated list of --source-dir paths
|
||||
-d Single directory path to deploy (alternative to -s)
|
||||
-t Comma-separated list of --tests (enables --test-level RunSpecifiedTests)
|
||||
-h Show this help
|
||||
|
||||
EXAMPLES:
|
||||
1) Real deploy with multiple flexipages (specific files):
|
||||
sf-deploy.ps1 -o "DEMO-ORG" ``
|
||||
-s "force-app/main/default/flexipages/Sample_Page.flexipage-meta.xml,force-app/main/default/flexipages/Sample_Page_Backup_With_SalesNavigator.flexipage-meta.xml,force-app/main/default/flexipages/Sample_Role_Record_Page.flexipage-meta.xml"
|
||||
|
||||
2) Real deploy with entire directory:
|
||||
sf-deploy.ps1 -o "DEMO-ORG" -d "force-app/main/default/classes"
|
||||
|
||||
3) Real deploy with specified tests:
|
||||
sf-deploy.ps1 -o "DEMO-ORG" ``
|
||||
-s "force-app/main/default/flexipages/Demo_Page.flexipage-meta.xml,force-app/main/default/flexipages/Demo_Page_Backup_With_SalesNavigator.flexipage-meta.xml" ``
|
||||
-t "SelectorOpportunity_Test,SelectorOpportunity2_Test"
|
||||
|
||||
Notes:
|
||||
- Use -s for specific files (comma-separated) OR -d for entire directories (not both).
|
||||
- Pass absolute or repo-relative paths.
|
||||
- Multiple tests are comma-separated in -t; they will be expanded to multiple --tests flags.
|
||||
"@
|
||||
}
|
||||
|
||||
# Show help if requested or no parameters provided
|
||||
if ($h -or ($o -eq "" -and $s -eq "" -and $d -eq "" -and $t -eq "")) {
|
||||
Show-Help
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Validate that either -s or -d is provided, but not both
|
||||
if ($s -ne "" -and $d -ne "") {
|
||||
Write-Error "Cannot use both -s and -d options. Use -s for specific files or -d for directories."
|
||||
Write-Host ""
|
||||
Show-Help
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Validate required parameters
|
||||
if ($o -eq "" -or ($s -eq "" -and $d -eq "")) {
|
||||
Write-Error "Must provide -o (org) and either -s (specific files) or -d (directory path)."
|
||||
Write-Host ""
|
||||
Show-Help
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Silent environment check - verify SF CLI is available
|
||||
try {
|
||||
Get-Command sf -ErrorAction Stop | Out-Null
|
||||
}
|
||||
catch {
|
||||
Write-Host "❌ Salesforce CLI (sf) not found!" -ForegroundColor Red
|
||||
Write-Host ""
|
||||
Write-Host "Running environment check to help you get started..."
|
||||
Write-Host ""
|
||||
|
||||
# Try to find and run sf-check.ps1 in the same directory as this script
|
||||
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$sfCheckPath = Join-Path $scriptDir "sf-check.ps1"
|
||||
|
||||
if (Test-Path $sfCheckPath) {
|
||||
& $sfCheckPath
|
||||
}
|
||||
elseif (Get-Command sf-check.ps1 -ErrorAction SilentlyContinue) {
|
||||
sf-check.ps1
|
||||
}
|
||||
else {
|
||||
Write-Host "sf-check.ps1 not found. Please install the Salesforce CLI from:"
|
||||
Write-Host "https://developer.salesforce.com/tools/sfdxcli"
|
||||
}
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Build the command array
|
||||
$cmd = @("sf", "project", "deploy", "start")
|
||||
|
||||
# Add source directories (specific files)
|
||||
if ($s -ne "") {
|
||||
$sourcesArray = $s -split ","
|
||||
foreach ($src in $sourcesArray) {
|
||||
$src = $src.Trim()
|
||||
if ($src -ne "") {
|
||||
$cmd += "--source-dir"
|
||||
$cmd += $src
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Add directory path
|
||||
if ($d -ne "") {
|
||||
$cmd += "--source-dir"
|
||||
$cmd += $d
|
||||
}
|
||||
|
||||
# Add target org
|
||||
if ($o -ne "") {
|
||||
$cmd += "--target-org"
|
||||
$cmd += $o
|
||||
}
|
||||
|
||||
# Add tests if specified
|
||||
if ($t -ne "") {
|
||||
$testsArray = $t -split ","
|
||||
$cmd += "--test-level"
|
||||
$cmd += "RunSpecifiedTests"
|
||||
|
||||
foreach ($test in $testsArray) {
|
||||
$test = $test.Trim()
|
||||
if ($test -ne "") {
|
||||
$cmd += "--tests"
|
||||
$cmd += $test
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Display the command being executed
|
||||
Write-Host ">>> Running: $($cmd -join ' ')" -ForegroundColor Yellow
|
||||
|
||||
# Execute the command
|
||||
try {
|
||||
& $cmd[0] $cmd[1..($cmd.Length-1)]
|
||||
exit $LASTEXITCODE
|
||||
}
|
||||
catch {
|
||||
Write-Error "Failed to execute sf command: $_"
|
||||
exit 1
|
||||
}
|
||||
Reference in New Issue
Block a user