Public/Config.ps1
|
# --------------------------------------------------------------------------- # Configuration # --------------------------------------------------------------------------- function Get-TTConfig { <# .SYNOPSIS Get current TerminalTracker configuration. .DESCRIPTION Returns the current TerminalTracker configuration object with all settings including archive retention, monitor interval, auto-start, and sync path. .EXAMPLE Get-TTConfig Returns the full configuration object. .EXAMPLE (Get-TTConfig).MonitorIntervalSeconds Returns just the monitor polling interval. #> [CmdletBinding()] param() Initialize-TTDataStore Read-JsonFile $script:ConfigFile } function Set-TTConfig { <# .SYNOPSIS Update TerminalTracker configuration values. .DESCRIPTION Modifies one or more TerminalTracker configuration settings. Changes are persisted immediately to the config file. Only specified parameters are updated; unspecified settings remain unchanged. .PARAMETER ArchiveRetentionDays Rolling archive retention in days. .PARAMETER MaxArchiveEntries Maximum archived session entries. .PARAMETER MonitorIntervalSeconds Seconds between monitor polls. .PARAMETER AutoStart Enable/disable auto-start with Windows. .PARAMETER AutoReload Enable/disable auto-reload of suspended sessions on startup. .PARAMETER SyncPath Path to sync session data (e.g. OneDrive/Dropbox folder). .EXAMPLE Set-TTConfig -MonitorIntervalSeconds 30 Sets the monitor polling interval to 30 seconds. .EXAMPLE Set-TTConfig -AutoStart $true -AutoReload $true Enables both auto-start and auto-reload of suspended sessions. #> [CmdletBinding(SupportsShouldProcess)] param( [int]$ArchiveRetentionDays, [int]$MaxArchiveEntries, [int]$MonitorIntervalSeconds, [Nullable[bool]]$AutoStart, [Nullable[bool]]$AutoReload, [string]$SyncPath ) Initialize-TTDataStore if (-not $PSCmdlet.ShouldProcess("TerminalTracker configuration", "Update")) { return } $cfg = Get-TTConfig if ($PSBoundParameters.ContainsKey('ArchiveRetentionDays')) { $cfg.ArchiveRetentionDays = $ArchiveRetentionDays } if ($PSBoundParameters.ContainsKey('MaxArchiveEntries')) { $cfg.MaxArchiveEntries = $MaxArchiveEntries } if ($PSBoundParameters.ContainsKey('MonitorIntervalSeconds')) { $cfg.MonitorIntervalSeconds = $MonitorIntervalSeconds } if ($PSBoundParameters.ContainsKey('AutoStart')) { $cfg.AutoStart = $AutoStart } if ($PSBoundParameters.ContainsKey('AutoReload')) { $cfg.AutoReload = $AutoReload } if ($PSBoundParameters.ContainsKey('SyncPath')) { $cfg.SyncPath = $SyncPath } Write-JsonFile $script:ConfigFile $cfg if ($PSBoundParameters.ContainsKey('AutoStart')) { if ($AutoStart) { Install-TTAutoStart } else { Remove-TTAutoStart } } $cfg } |