functions/AutoUpdate.ps1
|
function Enable-EmojiAutoUpdate { <# .SYNOPSIS Enables automatic emoji dataset updates. .DESCRIPTION Configures the module to automatically check for and download emoji dataset updates from Unicode CLDR on a scheduled basis. .PARAMETER Interval Update check interval in days (default: 7) .PARAMETER CreateScheduledTask Create a Windows scheduled task for automatic updates (requires admin) .EXAMPLE Enable-EmojiAutoUpdate Enables auto-update checks every 7 days .EXAMPLE Enable-EmojiAutoUpdate -Interval 14 -CreateScheduledTask Enables auto-update every 14 days and creates a scheduled task #> [CmdletBinding()] param( [Parameter(Mandatory = $false)] [int]$Interval = 7, [Parameter(Mandatory = $false)] [switch]$CreateScheduledTask ) # Update module configuration $Script:EmojiToolsConfig.AutoUpdateCheck = $true $Script:EmojiToolsConfig.UpdateInterval = $Interval Write-Information "✅ Auto-update enabled" -InformationAction Continue Write-Information " Update checks will occur every $Interval days" -InformationAction Continue Write-Information " Source: Unicode CLDR (official)" -InformationAction Continue if ($CreateScheduledTask) { try { # Create scheduled task (Windows only) if ($PSVersionTable.PSVersion.Major -ge 5 -and $IsWindows -ne $false) { $taskName = "EmojiTools-AutoUpdate" $taskDescription = "Automatically updates emoji dataset from Unicode CLDR" $action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument ` "-NoProfile -WindowStyle Hidden -Command `"Import-Module EmojiTools; Update-EmojiDataset -Source Unicode -Silent`"" $trigger = New-ScheduledTaskTrigger -Daily -At "03:00AM" -DaysInterval $Interval $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries ` -StartWhenAvailable -RunOnlyIfNetworkAvailable Register-ScheduledTask -TaskName $taskName -Description $taskDescription ` -Action $action -Trigger $trigger -Settings $settings -Force | Out-Null Write-Information "`n✅ Scheduled task created: $taskName" -InformationAction Continue Write-Information " Runs daily at 3:00 AM (every $Interval days)" -InformationAction Continue Write-Information " View with: Get-ScheduledTask -TaskName '$taskName'" -InformationAction Continue } else { Write-Warning "Scheduled tasks are only supported on Windows" } } catch { Write-Warning "Failed to create scheduled task: $_" Write-Warning "You can manually run Update-EmojiDataset periodically" } } else { Write-Information "`n💡 Tip: Use -CreateScheduledTask to set up automatic background updates" -InformationAction Continue } } function Disable-EmojiAutoUpdate { <# .SYNOPSIS Disables automatic emoji dataset update checks. .DESCRIPTION Disables automatic update checks when loading the module. Does not remove scheduled tasks if created. .PARAMETER RemoveScheduledTask Also remove the Windows scheduled task if it exists .EXAMPLE Disable-EmojiAutoUpdate Disables auto-update checks .EXAMPLE Disable-EmojiAutoUpdate -RemoveScheduledTask Disables auto-update and removes scheduled task #> [CmdletBinding()] param( [Parameter(Mandatory = $false)] [switch]$RemoveScheduledTask ) $Script:EmojiToolsConfig.AutoUpdateCheck = $false Write-Information "✅ Auto-update disabled" -InformationAction Continue Write-Information " No automatic update checks will be performed" -InformationAction Continue if ($RemoveScheduledTask) { try { $taskName = "EmojiTools-AutoUpdate" if (Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue) { Unregister-ScheduledTask -TaskName $taskName -Confirm:$false Write-Information "✅ Removed scheduled task: $taskName" -InformationAction Continue } else { Write-Information "ℹ️ No scheduled task found" -InformationAction Continue } } catch { Write-Warning "Could not remove scheduled task: $_" } } } |