Public/Archive.ps1
|
# --------------------------------------------------------------------------- # Archive - view and manage closed session history # --------------------------------------------------------------------------- function Get-TTArchive { <# .SYNOPSIS View archived (closed) sessions. .DESCRIPTION Returns archived session records for terminals that have been closed, suspended, or manually removed. Supports filtering by count and directory. .PARAMETER Last Show only the last N entries (default: 50). .PARAMETER Directory Filter by directory pattern (wildcard match). .EXAMPLE Get-TTArchive Returns the last 50 archived sessions. .EXAMPLE Get-TTArchive -Last 10 Returns the 10 most recent archived sessions. .EXAMPLE Get-TTArchive -Directory 'my-project' Returns archived sessions whose directory contains 'my-project'. #> [CmdletBinding()] param( [int]$Last = 50, [string]$Directory ) Initialize-TTDataStore $archive = @(Read-JsonFile $script:ArchiveFile) if ($Directory) { $archive = $archive | Where-Object { $_.WorkingDirectory -like "*$Directory*" } } if ($archive.Count -gt $Last) { $archive = $archive[-$Last..-1] } $archive } function Clear-TTArchive { <# .SYNOPSIS Clear archived sessions. .DESCRIPTION Removes archived session records. Can clear all entries or only those older than a specified number of days. .PARAMETER OlderThanDays Remove entries older than N days. If omitted, clears all entries. .EXAMPLE Clear-TTArchive Clears all archived sessions. .EXAMPLE Clear-TTArchive -OlderThanDays 7 Clears archived sessions older than 7 days. #> [CmdletBinding(SupportsShouldProcess)] param( [int]$OlderThanDays ) Initialize-TTDataStore if ($OlderThanDays) { $cutoff = [datetime]::UtcNow.AddDays(-$OlderThanDays).ToString('o') $archive = @(Read-JsonFile $script:ArchiveFile) $archive = @($archive | Where-Object { $_.ClosedTime -gt $cutoff }) if ($PSCmdlet.ShouldProcess("Archive entries older than $OlderThanDays days", "Clear")) { Write-JsonFile $script:ArchiveFile $archive } } else { if ($PSCmdlet.ShouldProcess("All archive entries", "Clear")) { Write-JsonFile $script:ArchiveFile @() } } } |