You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.3 KiB
40 lines
1.3 KiB
using StabilityMatrix.Core.Models.Packages; |
|
using StabilityMatrix.Core.Models.Progress; |
|
using StabilityMatrix.Core.Processes; |
|
|
|
namespace StabilityMatrix.Core.Models.PackageModification; |
|
|
|
public class InstallPackageStep : IPackageStep |
|
{ |
|
private readonly BasePackage package; |
|
private readonly TorchVersion torchVersion; |
|
private readonly DownloadPackageVersionOptions versionOptions; |
|
private readonly string installPath; |
|
|
|
public InstallPackageStep( |
|
BasePackage package, |
|
TorchVersion torchVersion, |
|
DownloadPackageVersionOptions versionOptions, |
|
string installPath |
|
) |
|
{ |
|
this.package = package; |
|
this.torchVersion = torchVersion; |
|
this.versionOptions = versionOptions; |
|
this.installPath = installPath; |
|
} |
|
|
|
public async Task ExecuteAsync(IProgress<ProgressReport>? progress = null) |
|
{ |
|
void OnConsoleOutput(ProcessOutput output) |
|
{ |
|
progress?.Report(new ProgressReport { IsIndeterminate = true, Message = output.Text }); |
|
} |
|
|
|
await package |
|
.InstallPackage(installPath, torchVersion, versionOptions, progress, OnConsoleOutput) |
|
.ConfigureAwait(false); |
|
} |
|
|
|
public string ProgressTitle => $"Installing {package.DisplayName}..."; |
|
}
|
|
|