. "$PSScriptRoot/Context.ps1"; function Get-BackupCandidates() { [System.Collections.Generic.List[System.Tuple[string, string, string[]]]]$candidates = @(); $candidates.AddRange( [System.Tuple[string, string, string[]][]]@( [System.Tuple]::Create("Home", "$HOME", @("-i@`"$PSScriptRoot/FileLists/Home.include.txt`"", "-x@`"$PSScriptRoot/FileLists/Home.exclude.txt`"")), [System.Tuple]::Create("Public", "$env:PUBLIC", @("-i@`"$PSScriptRoot/FileLists/Public.include.txt`"", "-x@`"$PSScriptRoot/FileLists/Public.exclude.txt`"")))); return $candidates; } function Invoke-FileBackup([Context] $context) { Write-Host "Backing up Personal Files"; foreach ($candidate in Get-BackupCandidates) { $context.Backup($candidate[1], $context.FileArchivePath($candidate[0]), $candidate[2]); } } function Invoke-FileRestore([Context] $context) { Write-Host "Restoring Personal Files"; foreach ($candidate in Get-BackupCandidates) { $archivePath = $context.FileArchivePath($candidate[0]); if (Test-Path -PathType Leaf $archivePath) { $context.Restore($archivePath, $candidate[1]); } } }