public/TaskTearDown.ps1
|
function TaskTearDown { <# .SYNOPSIS Adds a scriptblock to the build that will be executed after each task .DESCRIPTION This function will accept a scriptblock that will be executed after each task in the build script. The scriptblock accepts an optional parameter which describes the Task being torn down. .PARAMETER TearDown A scriptblock to execute .EXAMPLE Task default -Depends Test Task Test -Depends Compile, Clean { } Task Compile -Depends Clean { } Task Clean { } TaskTearDown { "Running 'TaskTearDown' for task $context.Peek().currentTaskName" } The script above produces the following output: Executing task, Clean... Running 'TaskTearDown' for task Clean Executing task, Compile... Running 'TaskTearDown' for task Compile Executing task, Test... Running 'TaskTearDown' for task Test Build Succeeded .EXAMPLE Task default -Depends Test Task Test -Depends Compile, Clean { } Task Compile -Depends Clean { } Task Clean { } TaskTearDown { param($task) if ($task.Success) { "Running 'TaskTearDown' for task $($task.Name) - success!" } else { "Running 'TaskTearDown' for task $($task.Name) - failed: $($task.ErrorMessage)" } } The script above produces the following output: Executing task, Clean... Running 'TaskTearDown' for task Clean - success! Executing task, Compile... Running 'TaskTearDown' for task Compile - success! Executing task, Test... Running 'TaskTearDown' for task Test - success! Build Succeeded #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [scriptblock]$TearDown ) Write-Debug "Registering TaskTearDown scriptblock" $psake.Context.Peek().taskTearDownScriptBlock = $TearDown } |