scripts/skel.ps1

<#
 
    .SYNOPSIS
    Skeleton script for my tiny powershell framework
 
    .DESCRIPTION
    Tiny powershell framework.
 
    To ease programming here is debugging levels :
        -v : display VERBOSE level messages
        -d : display DEBUG level messages
        -dev : display DEVEL level messages (including DEBUG ones)
        -trace : display the line of script currently executed as well as DEVEL and DEBUG level messages
        -ask : ask user before each execution
        -q : silence all displays
 
    .PARAMETER h
    display help screen. Use Get-Help instead.
 
    .PARAMETER v
    enable verbose mode
 
    .PARAMETER d
    enable debug mode
 
    .PARAMETER dev
    enable devel mode
 
    .PARAMETER trace
    .enable trace mode. With this mode on you can trace entering and leaving every single function that use the Write-EnterFunction and Write-LeaveFunction calls.
    Very useful while developing a new script.
 
    .PARAMETER ask
    ask for each action
 
    .PARAMETER quiet
    quiet output completely
 
    .PARAMETER log
    log calls to e*() functions into specified logfile.
    If used in conjunction with -trace, it will use PowerShell Start-Transcript to log everything, including output of commands.
    Useful if you can't see the output of script for whatever reason. In this case, Write-ToLog() is deactivated.
 
    .NOTES
    Author: Charles-Antoine Degennes <cadegenn@gmail.com>
 
    .LINK
        https://github.com/cadegenn/pwsh_fw
#>


[CmdletBinding()]Param(
    [switch]$i,
    [switch]$v,
    [switch]$d,
    [switch]$dev,
    [switch]$trace,
    [switch]$ask,
    [switch]$quiet,
    [switch]$Force
)

$Global:BASENAME = Split-Path -Leaf $MyInvocation.MyCommand.Definition
Import-Module PwSh.Fw.Core -ErrorAction Stop -DisableNameChecking -Force:$Force
Set-PwShFwConfiguration -i:$i -v:$v -d:$d -dev:$dev -trace:$trace -ask:$ask -quiet:$quiet
Set-PwShFwDisplayConfiguration -MessageDisplayFormat "[{0,4}]:{1,1}{2}"

#############################
## YOUR SCRIPT BEGINS HERE ##
#############################

<#
 
  ###### ######## ### ######## ########
 ## ## ## ## ## ## ## ##
 ## ## ## ## ## ## ##
  ###### ## ## ## ######## ##
       ## ## ######### ## ## ##
 ## ## ## ## ## ## ## ##
  ###### ## ## ## ## ## ##
 
#>


function Write-Test {
    begin {
        Write-EnterFunction
    }
    process {
        Write-Info "Where are we ?"
        Write-Debug "where does this piece of code comes from ?"
        Write-Debug "to know it, run $BASENAME with -dev parameter..."
    }
    end {
        Write-LeaveFunction
    }
}
Write-Title ("$Global:BASENAME")
Write-Devel "INFO = $Global:INFO"
Write-Devel "VERBOSE = $Global:VERBOSE"
Write-Devel "DEBUG = $Global:DEBUG"
Write-Devel "DEVEL = $Global:DEVEL"
Write-Devel "QUIET = $Global:QUIET"
Write-Info "This is an info message"
Write-Info "Try launching this script with various parameters like -v -d -dev"
Write-Verbose "This is a verbose message"
Write-Debug "This is a debug message"
Write-Devel "This is a message for developer"
Write-Todo "This is a TODO"
Write-Begin "Start an action"
Write-End $true
Write-Test
Write-Enter "Enter a loop"
1..5 | ForEach-Object { Write-Verbose $_ }
Write-Leave "Leaving the loop"
Write-Warning "This is a warning"
Write-Error "This is an error"
Write-Info "you can execute commands (try it with -d and -dev)"
$rc = Execute-Command "hostname"
Write-End $true
Write-Question -Prompt "Was this helpful ?" -DefaultValue "n" -DefaultAnswer "y"

<#
 
 ######## ## ## ########
 ## ### ## ## ##
 ## #### ## ## ##
 ###### ## ## ## ## ##
 ## ## #### ## ##
 ## ## ### ## ##
 ######## ## ## ########
 
#>


#############################
## YOUR SCRIPT ENDS HERE ##
#############################

if ($log) {
    if ($TRACE) {
        Stop-Transcript
    } else {
        Write-ToLogFile -Message "------------------------------------------"
    }
}

Set-PSDebug -Off