Private/Functions/Show-FunctionStatus.ps1
# Module: TeamsFunctions # Function: Assertion # Author: David Eberhardt # Updated: 15-DEC-2020 # Status: Live function Show-FunctionStatus { <# .SYNOPSIS Gives Feedback of FunctionStatus .DESCRIPTION On-Screen Output depends on Parameter Level .PARAMETER Level Level of Detail .EXAMPLE Show-FunctionStatus -Level Deprecated Indicates that the Function is deprecated. .NOTES This will only ever show the status of the first Command in the Stack (i.E. when called from a function). It will not display the same information for any nested commands. Available options are: Alpha: Function in development. No guarantee of functionality. Here be dragons. Beta: Function in development. No guarantee of functionality RC: Release Candidate. Functionality is built Prelive: Live function that is only lacking Pester tests. Live: Live function that has proven with tests or without that it delivers. Unmanaged: Legacy Function from SkypeFunctions, not managed Deprecated: Function flagged for removal/replacement Archived: Function is archived #> [CmdletBinding()] param( [Validateset("Alpha", "Beta", "RC", "PreLive", "Live", "Unmanaged", "Deprecated", "Archived")] $Level ) #param # Setting Preference Variables according to Upstream settings if (-not $PSBoundParameters.ContainsKey('Verbose')) { $VerbosePreference = $PSCmdlet.SessionState.PSVariable.GetValue('VerbosePreference') } if (-not $PSBoundParameters.ContainsKey('Debug')) { $DebugPreference = $PSCmdlet.SessionState.PSVariable.GetValue('DebugPreference') } else { $DebugPreference = 'Continue' } if ( $PSBoundParameters.ContainsKey('InformationAction')) { $InformationPreference = $PSCmdlet.SessionState.PSVariable.GetValue('InformationAction') } else { $InformationPreference = 'Continue' } $Stack = Get-PSCallStack if ($stack.length -gt 3) { return } else { $Function = ($Stack | Select-Object -First 2).Command[1] switch ($Level) { "Alpha" { $DebugPreference = "Inquire" $VerbosePreference = "Continue" Write-Debug -Message "$Function has [ALPHA] Status: It may not work as intended or contain serious gaps in functionality. Please handle with care" -Debug } "Beta" { $DebugPreference = "Continue" $VerbosePreference = "Continue" Write-Debug -Message "$Function has [BETA] Status: Build is not completed, functionality may be missing. Please report issues via GitHub" } "RC" { Write-Verbose -Message "$Function has [RC] Status: Testing still commences. Please report issues via GitHub" -Verbose } "Live" { Write-Verbose -Message "$Function is [LIVE]. Please report issues via GitHub or 'TeamsFunctions@outlook.com'" } "Unmanaged" { Write-Verbose -Message "$Function is [LIVE] but [UNMANAGED] and comes as-is." } "Deprecated" { Write-Information "$Function is [LIVE] but [DEPRECATED]!" } "Archived" { Write-Information "$Function is [ARCHIVED]!" } } } } #Show-FunctionStatus |