Private/Initialize-Escovar.ps1
|
function Initialize-Escovar { # Initialize global state variables $script:Escovar_LoadedFile = $null $script:Escovar_TrackedVars = @{} $script:Escovar_LastPath = $null # Cross-platform path formatting $script:Escovar_LedgerPath = "$HOME/.config/escovar/ledger.txt" $script:Escovar_AllowedDb = @{} # Init allowed folders db $ledgerDir = Split-Path $script:Escovar_LedgerPath if (-not (Test-Path $ledgerDir)) { New-Item -ItemType Directory -Path $ledgerDir -Force | Out-Null } elseif (Test-Path $script:Escovar_LedgerPath) { foreach ($line in (Get-Content $script:Escovar_LedgerPath -ErrorAction SilentlyContinue)) { $parts = $line -split '\|', 2 if ($parts.Count -eq 2) { $dir = Split-Path $parts[0] $script:Escovar_AllowedDb[$dir] = @{ File = $parts[0]; Hash = $parts[1] } } } } # Hook Prompt if (-not (Get-Command Escovar_OldPrompt -ErrorAction SilentlyContinue)) { # 1. Catturiamo la funzione prompt originale $originalPrompt = Get-Command prompt -CommandType Function -ErrorAction SilentlyContinue if ($originalPrompt) { # 2. Ne iniettiamo il codice in una nuova funzione globale Set-Item -Path Function:\global:Escovar_OldPrompt -Value $originalPrompt.ScriptBlock } else { # Fallback robusto se il sistema non ha un prompt function global:Escovar_OldPrompt { "PS $($PWD.ProviderPath)> " } } # 3. Creiamo la nostra vedetta globale function global:prompt { Invoke-Escovar Escovar_OldPrompt } } } |