Multi-Platform Package Manager for Stable Diffusion
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.

51 lines
1.6 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 SharedFolderMethod selectedSharedFolderMethod;
private readonly DownloadPackageVersionOptions versionOptions;
private readonly string installPath;
public InstallPackageStep(
BasePackage package,
TorchVersion torchVersion,
SharedFolderMethod selectedSharedFolderMethod,
DownloadPackageVersionOptions versionOptions,
string installPath
)
{
this.package = package;
this.torchVersion = torchVersion;
this.selectedSharedFolderMethod = selectedSharedFolderMethod;
this.versionOptions = versionOptions;
this.installPath = installPath;
}
public async Task ExecuteAsync(IProgress<ProgressReport>? progress = null)
{
void OnConsoleOutput(ProcessOutput output)
{
1 year ago
progress?.Report(new ProgressReport { IsIndeterminate = true, Message = output.Text });
}
await package
.InstallPackage(
installPath,
torchVersion,
selectedSharedFolderMethod,
versionOptions,
progress,
OnConsoleOutput
)
.ConfigureAwait(false);
}
public string ProgressTitle => $"Installing {package.DisplayName}...";
}