some background code for manager workspaces

This commit is contained in:
2024-09-06 15:16:19 +02:00
parent ebc57e05d5
commit 9bfd83ee4a
23 changed files with 497 additions and 52 deletions

View File

@@ -0,0 +1,6 @@
namespace ModpackUpdater.Apps.Manager.Api.Model;
public interface IMainApi
{
public IWorkspace? Workspace { get; }
}

View File

@@ -1,5 +1,17 @@
namespace ModpackUpdater.Apps.Manager.Api.Model;
using System.Diagnostics.CodeAnalysis;
namespace ModpackUpdater.Apps.Manager.Api.Model;
public interface IWorkspace
{
WorkspaceConfig Config { get; }
InstallInfos? InstallInfos { get; }
UpdateInfos? UpdateInfos { get; }
[MemberNotNullWhen(true, nameof(InstallInfos), nameof(UpdateInfos))]
Task<bool> Load();
Task<bool> Save();
}

View File

@@ -0,0 +1,8 @@
namespace ModpackUpdater.Apps.Manager.Api.Model;
public class WorkspaceConfig
{
public string ProviderId { get; internal set; } = "origin.unknown";
public string FileLocationInstallJson { get; set; } = "install.json";
public string FileLocationUpdateJson { get; set; } = "update.json";
}

View File

@@ -0,0 +1,26 @@
using ModpackUpdater.Apps.Manager.Api.Model;
using Pilz.Plugins.Advanced;
namespace ModpackUpdater.Apps.Manager.Api.Plugins.Features;
public abstract class WorkspaceFeature(string identifier, string name) : PluginFeature(FeatureTypes.Workspace, identifier, name)
{
public virtual bool CanConfigure(IWorkspace workspace)
{
return workspace?.Config == null || workspace.Config.ProviderId == Identifier;
}
public virtual bool Configure(ref IWorkspace workspace)
{
OnConfigure(ref workspace);
if (workspace?.Config == null)
return false;
workspace.Config.ProviderId = Identifier;
return true;
}
protected abstract bool OnConfigure(ref IWorkspace workspace);
}

View File

@@ -0,0 +1,9 @@
using ModpackUpdater.Apps.Manager.Api.Model;
using Pilz.Plugins.Advanced;
namespace ModpackUpdater.Apps.Manager.Api.Plugins.Params;
public class MainApiParameters(IMainApi api) : PluginFunctionParameter
{
public IMainApi Api { get; } = api;
}

View File

@@ -1,7 +0,0 @@
using Pilz.Plugins.Advanced;
namespace ModpackUpdater.Apps.Manager.Api.Plugins.Params;
public class WorkspaceInitParameters : PluginFunctionParameter
{
}