InfraSettingReader.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System.Drawing.Drawing2D;
  2. using SinMaiLauncher.ChildProcessHolder;
  3. namespace SinMaiLauncher.Models
  4. {
  5. public class InfraSettingReader
  6. {
  7. public readonly string BaseDir = Environment.CurrentDirectory;
  8. public readonly string InfraDir;
  9. public IProcessStartInfo Maria;
  10. public IProcessStartInfo AquaDx;
  11. public IProcessStartInfo Injector;
  12. public IProcessStartInfo SinMai;
  13. public InfraSettings Settings { get; }
  14. public InfraSettingReader(InfraSettings settings)
  15. {
  16. Settings = settings;
  17. InfraDir = Path.GetFullPath(Path.Combine(BaseDir, settings.InfraPath));
  18. var mariaDir = Path.GetFullPath(Path.Combine(InfraDir, settings.MariaDb.WorkingDir));
  19. var mariaExe = Path.GetFullPath(Path.Combine(mariaDir, settings.MariaDb.MySqlServerExe));
  20. var mariaArg = settings.MariaDb.MySqlServerArgs;
  21. Maria = new ProcessStartInfoImpl(mariaDir, mariaExe, mariaArg);
  22. var aquaDxDir = Path.GetFullPath(Path.Combine(InfraDir, settings.AquaDx.WorkingDir));
  23. var aquaDxJavaExe = Path.GetFullPath(Path.Combine(aquaDxDir, settings.AquaDx.JavaPath));
  24. var aquaDxJavaArg = settings.AquaDx.JavaArgs;
  25. AquaDx = new ProcessStartInfoImpl(aquaDxDir, aquaDxJavaExe, aquaDxJavaArg);
  26. var sinMaiDir = Path.GetFullPath(Path.Combine(InfraDir, settings.SinMai.WorkingDir));
  27. var injectorExe = Path.GetFullPath(Path.Combine(sinMaiDir, settings.SinMai.InjectExe));
  28. var injectorArg = settings.SinMai.InjectArgs;
  29. Injector = new ProcessStartInfoImpl(sinMaiDir, injectorExe, injectorArg);
  30. var sinMaiExe = Path.GetFullPath(Path.Combine(sinMaiDir, settings.SinMai.SinMaiExe));
  31. var sinMaiArg = settings.SinMai.SinMaiArgs;
  32. SinMai = new ProcessStartInfoImpl(sinMaiDir, sinMaiExe, sinMaiArg);
  33. }
  34. private class ProcessStartInfoImpl(string workingDir, string exe, string arg) : IProcessStartInfo
  35. {
  36. public string WorkingDir { get; } = workingDir;
  37. public string Exe { get; } = exe;
  38. public string Arg { get; } = arg;
  39. }
  40. }
  41. }