ProfileFever.psm1
<#
.SYNOPSIS Root module file. .DESCRIPTION The root module file loads all classes, helpers and functions into the module context. #> # Use namespaces for PSReadLine extension using namespace System.Management.Automation using namespace System.Management.Automation.Language # Meta: Module metadata. $Script:PSModulePath = [System.IO.Path]::GetDirectoryName($PSCommandPath) $Script:PSModuleName = [System.IO.Path]::GetFileName($PSCommandPath).Split('.')[0] $Script:PSModuleVersion = (Import-PowerShellDataFile -Path "$Script:PSModulePath\$Script:PSModuleName.psd1")['ModuleVersion'] <# .SYNOPSIS Root module file to bootstrap the module features. .DESCRIPTION The root module file loads all classes, helpers and functions into the module context. It will enable best practices #> # # Behaviour: Best practices with strict mode. # $ErrorActionPreference = 'Stop' # $ProgressPreference = 'SilentlyContinue' # Set-StrictMode -Version 'latest' # # Classes: Get and dot source all internal model classes. # Split-Path -Path $PSCommandPath | # Get-ChildItem -Filter 'Classes' -Directory | # Get-ChildItem -Include '*.ps1' -File -Recurse | # ForEach-Object { . $_.FullName } # # Helpers: Get and dot source all internal helper functions. # Split-Path -Path $PSCommandPath | # Get-ChildItem -Filter 'Helpers' -Directory | # Get-ChildItem -Include '*.ps1' -File -Recurse | # ForEach-Object { . $_.FullName } # # Functions: Get and dot source all public functions. # Split-Path -Path $PSCommandPath | # Get-ChildItem -Filter 'Functions' -Directory | # Get-ChildItem -Include '*.ps1' -File -Recurse | # ForEach-Object { . $_.FullName } # # Meta: Module metadata. # $Script:PSModulePath = [System.IO.Path]::GetDirectoryName($PSCommandPath) # $Script:PSModuleName = [System.IO.Path]::GetFileName($PSCommandPath).Split('.')[0] # $Script:PSModuleVersion = (Import-PowerShellDataFile -Path "$Script:PSModulePath\$Script:PSModuleName.psd1")['ModuleVersion'] # # Jira Insight session. # $Script:Session = $null # Get and dot source all classes (internal) Split-Path -Path $PSCommandPath | Get-ChildItem -Filter 'Classes' -Directory | Get-ChildItem -Include '*.ps1' -File -Recurse | ForEach-Object { . $_.FullName } # Get and dot source all helper functions (internal) Split-Path -Path $PSCommandPath | Get-ChildItem -Filter 'Helpers' -Directory | Get-ChildItem -Include '*.ps1' -File -Recurse | ForEach-Object { . $_.FullName } # Get and dot source all external functions (public) Split-Path -Path $PSCommandPath | Get-ChildItem -Filter 'Functions' -Directory | Get-ChildItem -Include '*.ps1' -File -Recurse | ForEach-Object { . $_.FullName } # Module-wide settings for prompt configuration $Script:PromptHistory = 0 $Script:PromptColor = 'Yellow' $Script:PromptInfo = 'PS {0}.{1}' -f $PSVersionTable.PSVersion.Major, $PSVersionTable.PSVersion.Minor $Script:PromptAlias = $false $Script:PromptTimeSpan = $false $Script:PromptGit = $false $Script:PromptDefault = Get-Command -Name 'prompt' | Select-Object -ExpandProperty 'Definition' $Script:PromptTitle = $null $Script:PromptIsAdmin = [System.Environment]::OSVersion.Platform -eq 'Win32NT' -and ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) $Script:PromptIsRoot = [System.Environment]::OSVersion.Platform -eq 'Unix' -and (whoami) -eq 'root' # Global prompt configuration $Global:ProfileFeverPromptConfig = [PSCustomObject] [Ordered] @{ # Debug indicator DebugText = ' DBG ' DebugSeperator = [System.Char] 57544 DebugForeground = 0xF2, 0xF2, 0xF2 # White DebugBackground = 0x88, 0x17, 0x98 # Dark Magenta # Admin/Root indiator AdminText = ' ADM ' AdminSeperator = [System.Char] 57544 AdminForeground = 0xF2, 0xF2, 0xF2 # White AdminBackground = 0xAA, 0x00, 0x00 # Red # Prompt info (PoerShell version) InfoText = " $Script:PromptInfo " InfoSeperator = [System.Char] 57520 InfoForeground = 0xF2, 0xF2, 0xF2 # White InfoBackground = 0x17, 0x3C, 0x58 # Cyan 1 # Current shell location (pwd) LocationSeperator = [System.Char] 57520 LocationForeground = 0xF2, 0xF2, 0xF2 # White LocationBackground = 0x28, 0x69, 0x9A # Cyan 2 # Git branch GitBranchIcon = [System.Char] 57504 GitBranchSeperator = [System.Char] 57520 GitBranchForeground = 0xF2, 0xF2, 0xF2 # White GitBranchBackgroundDefault = 0x3A, 0x96, 0xDD # Cyan 3 GitBranchBackgroundAhead = 0x13, 0x90, 0x0E # DarkGreen, darker than console color GitBranchBackgroundMixed = 0xC1, 0x9C, 0x00 # Yellow GitBranchBackgroundBehind = 0xC5, 0x0F, 0x1F # DarkRed # Git details for index/working/stash GitDetailTextSplit = [System.Char] 57521 GitDetailTextIndex = 'idx' GitDetailTextWorking = 'wrk' GitDetailTextStash = 'sth' GitDetailSeperator = [System.Char] 57520 GitDetailForegroundSplit = 0x3A, 0x96, 0xDD GitDetailForegroundIndex = 0x00, 0x60, 0x00 # Green(?) GitDetailForegroundWorking = 0x60, 0x00, 0x00 # ? GitDetailForegroundStash = 0x00, 0x00, 0x60 # ? GitDetailBackground = 0x75, 0xB5, 0xE7 # Cyan 4 } # Module command not found action variables $Script:CommandNotFoundEnabled = $false # Initialize all relevant launcher vairables $Script:LauncherPath = "$Env:AppData\PowerShell\ProfileFever" $Script:LauncherCredentialFormat = 'PowerShell ProfileFever {0} {1}' $Script:LauncherSqlServer = $null |