From d23081f52e3756e70c6b17901fe308f49fa7ae1d Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Wed, 28 Aug 2024 12:47:07 +0200 Subject: [PATCH] Add scripts for backing up osu! --- scripts/Windows/Software/osu!/Manage.ps1 | 47 ++++++++++++++++--- scripts/Windows/Software/osu!lazer/Manage.ps1 | 35 ++++++++++---- 2 files changed, 67 insertions(+), 15 deletions(-) diff --git a/scripts/Windows/Software/osu!/Manage.ps1 b/scripts/Windows/Software/osu!/Manage.ps1 index d3ad1af7..5b5125a0 100644 --- a/scripts/Windows/Software/osu!/Manage.ps1 +++ b/scripts/Windows/Software/osu!/Manage.ps1 @@ -5,10 +5,45 @@ param( . "$PSScriptRoot/../../../Common/Scripts/Software.ps1"; -Start-SoftwareInstaller @PSBoundParameters ` - -Installer { - Install-ChocoPackage osu; - Remove-DesktopIcon "*osu*"; - }; +$null = New-Module { + param($Parameters) + . "$PSScriptRoot/../../Scripts/Restoration.ps1"; + Export-ModuleMember -Function @(); -# ToDo: Add restoration + <# + .SYNOPSIS + Gets the path to the installation directory of osu!. + #> + function Get-InstallPath { + return "$((Get-KnownFolder -SpecialFolder ProgramFilesX86).Path)/osu!"; + } + + Start-SoftwareInstaller @Parameters ` + -Installer { + Install-ChocoPackage osu; + Remove-DesktopIcon "*osu*"; + } ` + -Backup { + Add-BackupArtifacts -Source (Get-InstallPath) -Path "osu!" ` + -Include @( + "Screenshots", + "Skins", + "Songs", + "osu!.cfg", + "scores.db" + ); + } ` + -Configurator { + Expand-BackupArtifacts -Path "osu!" -Target (Get-InstallPath); + } ` + -UserBackup { + param([hashtable] $Arguments) + $name = $Arguments.Name; + Add-BackupArtifacts -Source "$(Get-InstallPath)/osu!.$name.cfg" -User $name -Path "osu!/osu!.cfg"; + } ` + -UserConfigurator { + param([hashtable] $Arguments) + $name = $Arguments.Name; + Expand-BackupArtifacts -User $name -Path "osu!/osu!.cfg" -Target "$(Get-InstallPath)/osu!.$name.cfg"; + }; +} $PSBoundParameters; diff --git a/scripts/Windows/Software/osu!lazer/Manage.ps1 b/scripts/Windows/Software/osu!lazer/Manage.ps1 index 2951e121..4f531c9b 100644 --- a/scripts/Windows/Software/osu!lazer/Manage.ps1 +++ b/scripts/Windows/Software/osu!lazer/Manage.ps1 @@ -3,13 +3,30 @@ param( [hashtable] $Arguments ) -. "$PSScriptRoot/../../../Common/Scripts/Software.ps1"; -. "$PSScriptRoot/../../../Common/Scripts/System.ps1"; +& { + param($Parameters) + . "$PSScriptRoot/../../Scripts/Restoration.ps1"; + . "$PSScriptRoot/../../../Common/Scripts/Software.ps1"; + . "$PSScriptRoot/../../../Common/Scripts/System.ps1"; + $path = "$env:AppData/osu"; -Start-SoftwareInstaller @PSBoundParameters ` - -UserConfigurator { - Install-WingetPackage "ppy.osu"; - Remove-DesktopIcon "*osu*"; - }; - -# ToDo: Add restoration + Start-SoftwareInstaller @Parameters ` + -UserBackup { + param([hashtable] $Arguments) + Add-BackupArtifacts -User $Arguments.Name -Source $path -Path "osu!lazer" ` + -Include @( + "files", + "rulesets", + "screenshots", + "framework.ini", + "game.ini", + "input.json" + ); + } ` + -UserConfigurator { + param([hashtable] $Arguments) + Install-WingetPackage "ppy.osu" -ArgumentList "--scope","user"; + Remove-DesktopIcon "*osu*"; + Expand-BackupArtifacts -User $Arguments.Name -Path "osu!lazer" -Target $path; + }; +} $PSBoundParameters;