ps/Modules/Cole.PowerShell.Developer/Public/Write-ProgressHelper.ps1
2023-05-30 22:51:22 -07:00

55 lines
1.5 KiB
PowerShell

function Write-ProgressHelper {
param (
[int]$StepNumber = 1,
[string]$Status = "Progress",
[string]$Activity,
[string]$CurrentOperation,
[int]$PercentComplete = 0
)
$activityId = 0
$parentId = 0
$callstackFunctions = (Get-CallstackParentFunctionNames)
# Don't worry about this function or the one we just called to get the stack, or the parent of this one, we handle that next
for($i = 0; $i -lt ($callstackFunctions.Count - 1); $i++) {
# this will always be one less than our current depth
$function = $callstackFunctions[$i]
if ((Get-FunctionWriteProgressHelperCalls $function) -gt 0) {
$parentId = $activityId
$activityId++
}
}
$PercentNotSpecified = $false
if ($PercentComplete -eq 0) {
$PercentNotSpecified = $true
$stepCounter = (Get-FunctionWriteProgressHelperCalls (Get-GrandParentFunctionName))
$PercentComplete = (($StepNumber / $stepCounter) * 100)
}
$paramSplat = @{
Id = $activityId
Status = $Status
PercentComplete = $PercentComplete
}
if (![string]::IsNullOrWhiteSpace($Activity)) {
$paramSplat["Activity"] = $Activity
}
if (![string]::IsNullOrWhiteSpace($CurrentOperation)) {
$paramSplat["CurrentOperation"] = $CurrentOperation
}
if ($parentId -gt 0) {
$paramSplat["ParentId"] = $parentId
}
Write-Progress @paramSplat
if ($PercentNotSpecified) {
return $StepNumber++
}
}