1414using CommunityToolkit . Mvvm . ComponentModel ;
1515using CommunityToolkit . Mvvm . Input ;
1616using FluentAvalonia . UI . Controls ;
17- using NLog ;
17+ using Microsoft . Extensions . Logging ;
1818using StabilityMatrix . Avalonia . Controls ;
19+ using StabilityMatrix . Avalonia . Extensions ;
1920using StabilityMatrix . Avalonia . Languages ;
2021using StabilityMatrix . Avalonia . Services ;
2122using StabilityMatrix . Avalonia . ViewModels . Base ;
2425using StabilityMatrix . Core . Helper . Factory ;
2526using StabilityMatrix . Core . Models ;
2627using StabilityMatrix . Core . Models . Database ;
28+ using StabilityMatrix . Core . Models . FileInterfaces ;
2729using StabilityMatrix . Core . Models . PackageModification ;
2830using StabilityMatrix . Core . Models . Packages ;
2931using StabilityMatrix . Core . Processes ;
@@ -36,14 +38,13 @@ namespace StabilityMatrix.Avalonia.ViewModels.Dialogs;
3638[ Transient ]
3739public partial class InstallerViewModel : ContentDialogViewModelBase
3840{
39- private static readonly Logger Logger = LogManager . GetCurrentClassLogger ( ) ;
40-
4141 private readonly ISettingsManager settingsManager ;
4242 private readonly IPackageFactory packageFactory ;
4343 private readonly IPyRunner pyRunner ;
4444 private readonly IDownloadService downloadService ;
4545 private readonly INotificationService notificationService ;
4646 private readonly IPrerequisiteHelper prerequisiteHelper ;
47+ private readonly ILogger < InstallerViewModel > logger ;
4748
4849 [ ObservableProperty ]
4950 private BasePackage selectedPackage ;
@@ -130,7 +131,8 @@ public InstallerViewModel(
130131 IPyRunner pyRunner ,
131132 IDownloadService downloadService ,
132133 INotificationService notificationService ,
133- IPrerequisiteHelper prerequisiteHelper
134+ IPrerequisiteHelper prerequisiteHelper ,
135+ ILogger < InstallerViewModel > logger
134136 )
135137 {
136138 this . settingsManager = settingsManager ;
@@ -139,6 +141,7 @@ IPrerequisiteHelper prerequisiteHelper
139141 this . downloadService = downloadService ;
140142 this . notificationService = notificationService ;
141143 this . prerequisiteHelper = prerequisiteHelper ;
144+ this . logger = logger ;
142145
143146 var filtered = packageFactory . GetAllAvailablePackages ( ) . Where ( p => p . IsCompatible ) . ToList ( ) ;
144147
@@ -187,7 +190,7 @@ public override async Task OnLoadedAsync()
187190 }
188191 catch ( Exception e )
189192 {
190- Logger . Warn ( "Error getting versions: {Exception}" , e . ToString ( ) ) ;
193+ logger . LogWarning ( "Error getting versions: {Exception}" , e . ToString ( ) ) ;
191194 }
192195 finally
193196 {
@@ -209,7 +212,7 @@ private async Task Install()
209212 else
210213 {
211214 var ex = result . Exception ! ;
212- Logger . Error ( ex , $ "Error installing package: { ex } ") ;
215+ logger . LogError ( ex , $ "Error installing package: { ex } ") ;
213216
214217 var dialog = new BetterContentDialog
215218 {
@@ -221,7 +224,7 @@ private async Task Install()
221224 }
222225 }
223226
224- private Task ActuallyInstall ( )
227+ private async Task ActuallyInstall ( )
225228 {
226229 if ( string . IsNullOrWhiteSpace ( InstallName ) )
227230 {
@@ -232,12 +235,18 @@ private Task ActuallyInstall()
232235 NotificationType . Error
233236 )
234237 ) ;
235- return Task . CompletedTask ;
238+ return ;
236239 }
237240
238241 var setPackageInstallingStep = new SetPackageInstallingStep ( settingsManager , InstallName ) ;
239242
240243 var installLocation = Path . Combine ( settingsManager . LibraryDir , "Packages" , InstallName ) ;
244+ if ( Directory . Exists ( installLocation ) )
245+ {
246+ var installPath = new DirectoryPath ( installLocation ) ;
247+ await installPath . DeleteVerboseAsync ( logger ) ;
248+ }
249+
241250 var prereqStep = new SetupPrerequisitesStep ( prerequisiteHelper , pyRunner ) ;
242251
243252 var downloadOptions = new DownloadPackageVersionOptions ( ) ;
@@ -313,7 +322,6 @@ private Task ActuallyInstall()
313322 } ;
314323
315324 Steps = steps ;
316- return Task . CompletedTask ;
317325 }
318326
319327 public void Cancel ( )
@@ -401,7 +409,7 @@ partial void OnSelectedVersionTypeChanged(PackageVersionType value)
401409 Dispatcher . UIThread
402410 . InvokeAsync ( async ( ) =>
403411 {
404- Logger . Debug ( $ "Release mode: { IsReleaseMode } ") ;
412+ logger . LogDebug ( $ "Release mode: { IsReleaseMode } ") ;
405413 var versionOptions = await SelectedPackage . GetAllVersionOptions ( ) ;
406414
407415 AvailableVersions = IsReleaseMode
@@ -413,7 +421,7 @@ partial void OnSelectedVersionTypeChanged(PackageVersionType value)
413421 return ;
414422
415423 ReleaseNotes = SelectedVersion . ReleaseNotesMarkdown ;
416- Logger . Debug ( $ "Loaded release notes for { ReleaseNotes } ") ;
424+ logger . LogDebug ( $ "Loaded release notes for { ReleaseNotes } ") ;
417425
418426 if ( ! IsReleaseMode )
419427 {
@@ -492,7 +500,7 @@ partial void OnSelectedVersionChanged(PackageVersion? value)
492500 }
493501 catch ( Exception e )
494502 {
495- Logger . Warn ( $ "Error getting commits: { e . Message } ") ;
503+ logger . LogWarning ( e , $ "Error getting commits: { e . Message } ") ;
496504 }
497505 } )
498506 . SafeFireAndForget ( ) ;
0 commit comments