public/FormatTaskName.ps1
function FormatTaskName { <# .SYNOPSIS This function allows you to change how psake renders the task name during a build. .DESCRIPTION This function takes either a string which represents a format string (formats using the -f format operator see "help about_operators") or it can accept a script block that has a single parameter that is the name of the task that will be executed. .PARAMETER Format A format string or a scriptblock to execute .EXAMPLE A sample build script that uses a format string is shown below: Task default -depends TaskA, TaskB, TaskC FormatTaskName "-------- {0} --------" Task TaskA { "TaskA is executing" } Task TaskB { "TaskB is executing" } Task TaskC { "TaskC is executing" ----------- The script above produces the following output: -------- TaskA -------- TaskA is executing -------- TaskB -------- TaskB is executing -------- TaskC -------- TaskC is executing Build Succeeded! .EXAMPLE A sample build script that uses a ScriptBlock is shown below: Task default -depends TaskA, TaskB, TaskC FormatTaskName { param($taskName) write-host "Executing Task: $taskName" -foregroundcolor blue } Task TaskA { "TaskA is executing" } Task TaskB { "TaskB is executing" } Task TaskC { "TaskC is executing" } ----------- The above example uses the scriptblock parameter to the FormatTaskName function to render each task name in the color blue. Note: the $taskName parameter is arbitrary, it could be named anything. .LINK Assert .LINK Exec .LINK Framework .LINK Get-PSakeScriptTasks .LINK Include .LINK Invoke-psake .LINK Properties .LINK Task .LINK TaskSetup .LINK TaskTearDown #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] $Format ) $psake.context.Peek().config.taskNameFormat = $Format } |