This commit is contained in:
2022-11-01 15:01:20 +01:00
parent e379f8b83f
commit aa61ef3ce1
33 changed files with 890 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<RootNamespace>Alma</RootNamespace>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,7 @@
namespace Alma.Command;
public interface ICommand
{
public string CommandString { get; }
public Task Run(List<string> parameters);
}

View File

@@ -0,0 +1,17 @@
namespace Alma.Configuration.Module;
public record ModuleConfiguration(string? Target, Dictionary<string, string>? Links)
{
public ModuleConfiguration Merge(ModuleConfiguration merge)
{
var mergedLinks = (Links ?? new Dictionary<string, string>())
.Concat(merge.Links ?? new Dictionary<string, string>());
return new ModuleConfiguration(
merge.Target ?? Target,
new Dictionary<string, string>(mergedLinks)
);
}
public static ModuleConfiguration Empty() =>
new(null, new Dictionary<string, string>());
}

View File

@@ -0,0 +1,5 @@
namespace Alma.Configuration.Module;
public class ModuleConfigurationRoot : Dictionary<string, ModuleConfiguration>
{
}

View File

@@ -0,0 +1,7 @@
namespace Alma.Configuration.Repository;
public interface IRepositoryConfiguration
{
public Task LoadAsync();
RepositoryConfigurationRoot Configuration { get; }
}

View File

@@ -0,0 +1,7 @@
namespace Alma.Configuration.Repository;
public record RepositoryConfigurationEntry(
string Name,
string? RepositoryPath,
string? LinkPath
);

View File

@@ -0,0 +1,3 @@
namespace Alma.Configuration.Repository;
public record RepositoryConfigurationRoot(List<RepositoryConfigurationEntry> Repositories);

View File

@@ -0,0 +1,6 @@
namespace Alma.Data;
public static class Constants
{
public static readonly string ModuleConfigFileStub = ".alma-config";
}

View File

@@ -0,0 +1,3 @@
namespace Alma.Data;
public record ItemToLink(string SourcePath, string TargetPath);

View File

@@ -0,0 +1,6 @@
namespace Alma.Services;
public interface IConfigurationFileReader
{
public Task<(T? Result, string? FileName)> DeserializeAsync<T>(string fileNameWithoutExtension, string? extension = null) where T : class;
}

View File

@@ -0,0 +1,7 @@
namespace Alma.Services;
public interface IFolderService
{
string? ConfigRoot { get; }
string AppData { get; }
}

View File

@@ -0,0 +1,8 @@
using Alma.Data;
namespace Alma.Services;
public interface IMetadataHandler
{
Task SaveLinkedItemsAsync(List<ItemToLink> successfulLinks, DirectoryInfo sourceDirectory, DirectoryInfo targetDirectory);
}

View File

@@ -0,0 +1,8 @@
using Alma.Configuration.Module;
namespace Alma.Services;
public interface IModuleConfigurationResolver
{
Task<(ModuleConfiguration? mergedModuleConfig, string? moduleConfigFileName)> ResolveModuleConfiguration(string moduleConfigStub);
}

View File

@@ -0,0 +1,7 @@
namespace Alma.Services;
public interface IOsInformation
{
string GetOsIdentifier();
bool IsOnPlatform(string platform);
}