Gather all of the under construction flags into one class

This commit is contained in:
Saeed Noursalehi 2018-12-06 15:18:35 -08:00
Родитель 81341f1518
Коммит cd12c2b6a5
10 изменённых файлов: 45 добавлений и 25 удалений

Просмотреть файл

@ -10,9 +10,10 @@ namespace GVFS.Common
{
public abstract class GVFSPlatform
{
public GVFSPlatform(string executableExtension, string installerExtension)
public GVFSPlatform(string executableExtension, string installerExtension, UnderConstructionFlags underConstruction)
{
this.Constants = new GVFSPlatformConstants(executableExtension, installerExtension);
this.UnderConstruction = underConstruction;
}
public static GVFSPlatform Instance { get; private set; }
@ -21,13 +22,10 @@ namespace GVFS.Common
public abstract IGitInstallation GitInstallation { get; }
public abstract IDiskLayoutUpgradeData DiskLayoutUpgrade { get; }
public abstract IPlatformFileSystem FileSystem { get; }
public virtual bool SupportsGVFSService { get; } = true;
public virtual bool SupportsGVFSUpgrade { get; } = true;
public virtual bool SupportsGVFSConfig { get; } = true;
public virtual bool SupportsKernelLogs { get; } = true;
public virtual bool UsesGitHooksLoader { get; } = false;
public GVFSPlatformConstants Constants { get; }
public GVFSPlatformConstants Constants { get; }
public UnderConstructionFlags UnderConstruction { get; }
public static void Register(GVFSPlatform platform)
{
if (GVFSPlatform.Instance != null)
@ -130,5 +128,23 @@ namespace GVFS.Common
get { return "GVFS.Upgrader" + this.ExecutableExtension; }
}
}
public class UnderConstructionFlags
{
public UnderConstructionFlags(
bool supportsGVFSService = true,
bool supportsGVFSUpgrade = true,
bool supportsGVFSConfig = true,
bool supportsKernelLogs = true,
bool usesGitHooksLoader = false)
{
}
public bool SupportsGVFSService { get; }
public bool SupportsGVFSUpgrade { get; }
public bool SupportsGVFSConfig { get; }
public bool SupportsKernelLogs { get; }
public bool UsesGitHooksLoader { get; }
}
}
}

Просмотреть файл

@ -12,7 +12,14 @@ namespace GVFS.Platform.Mac
public partial class MacPlatform : GVFSPlatform
{
public MacPlatform()
: base(executableExtension: string.Empty, installerExtension: ".dmg")
: base(
executableExtension: string.Empty,
installerExtension: ".dmg",
underConstruction: new UnderConstructionFlags(
supportsGVFSService: false,
supportsGVFSUpgrade: false,
supportsGVFSConfig: false,
supportsKernelLogs: false))
{
}
@ -20,10 +27,6 @@ namespace GVFS.Platform.Mac
public override IGitInstallation GitInstallation { get; } = new MacGitInstallation();
public override IDiskLayoutUpgradeData DiskLayoutUpgrade { get; } = new MacDiskLayoutUpgradeData();
public override IPlatformFileSystem FileSystem { get; } = new MacFileSystem();
public override bool SupportsGVFSService { get; } = false;
public override bool SupportsGVFSUpgrade { get; } = false;
public override bool SupportsGVFSConfig { get; } = false;
public override bool SupportsKernelLogs { get; } = false;
public override void ConfigureVisualStudio(string gitBinPath, ITracer tracer)
{

Просмотреть файл

@ -24,7 +24,10 @@ namespace GVFS.Platform.Windows
private const string BuildLabExRegistryValue = "BuildLabEx";
public WindowsPlatform()
: base(executableExtension: ".exe", installerExtension: ".exe")
: base(
executableExtension: ".exe",
installerExtension: ".exe",
underConstruction: new UnderConstructionFlags(usesGitHooksLoader: true))
{
}
@ -33,8 +36,6 @@ namespace GVFS.Platform.Windows
public override IDiskLayoutUpgradeData DiskLayoutUpgrade { get; } = new WindowsDiskLayoutUpgradeData();
public override IPlatformFileSystem FileSystem { get; } = new WindowsFileSystem();
public override bool UsesGitHooksLoader { get; } = true;
public static string GetStringFromRegistry(string key, string valueName)
{
object value = GetValueFromRegistry(RegistryHive.LocalMachine, key, valueName);

Просмотреть файл

@ -14,7 +14,7 @@ namespace GVFS.UnitTests.Mock.Common
public class MockPlatform : GVFSPlatform
{
public MockPlatform()
: base(executableExtension: ".mockexe", installerExtension: ".mockexe")
: base(executableExtension: ".mockexe", installerExtension: ".mockexe", underConstruction: new UnderConstructionFlags())
{
}

Просмотреть файл

@ -46,7 +46,7 @@ namespace GVFS.CommandLine
public override void Execute()
{
if (!GVFSPlatform.Instance.SupportsGVFSConfig)
if (!GVFSPlatform.Instance.UnderConstruction.SupportsGVFSConfig)
{
this.ReportErrorAndExit("`gvfs config` is not yet implemented on this operating system.");
}

Просмотреть файл

@ -88,7 +88,7 @@ namespace GVFS.CommandLine
// .gvfs
this.CopyAllFiles(enlistment.EnlistmentRoot, archiveFolderPath, GVFSConstants.DotGVFS.Root, copySubFolders: false);
if (GVFSPlatform.Instance.SupportsKernelLogs)
if (GVFSPlatform.Instance.UnderConstruction.SupportsKernelLogs)
{
// driver
this.FlushKernelDriverLogs();
@ -118,7 +118,7 @@ namespace GVFS.CommandLine
// corrupt objects
this.CopyAllFiles(enlistment.DotGVFSRoot, Path.Combine(archiveFolderPath, GVFSConstants.DotGVFS.Root), GVFSConstants.DotGVFS.CorruptObjectsName, copySubFolders: false);
if (GVFSPlatform.Instance.SupportsGVFSService)
if (GVFSPlatform.Instance.UnderConstruction.SupportsGVFSService)
{
// service
this.CopyAllFiles(
@ -128,7 +128,7 @@ namespace GVFS.CommandLine
copySubFolders: true);
}
if (GVFSPlatform.Instance.SupportsGVFSUpgrade)
if (GVFSPlatform.Instance.UnderConstruction.SupportsGVFSUpgrade)
{
// upgrader
this.CopyAllFiles(

Просмотреть файл

@ -1070,7 +1070,7 @@ You can specify a URL, a name of a configured cache server, or the special names
}
string hooksPath = null;
if (GVFSPlatform.Instance.UsesGitHooksLoader)
if (GVFSPlatform.Instance.UnderConstruction.UsesGitHooksLoader)
{
// On Windows, the soon-to-be deprecated GitHooksLoader tries to call out to the hooks process without
// its full path, so we have to pass the path along to our background git processes via the PATH

Просмотреть файл

@ -117,7 +117,7 @@ namespace GVFS.CommandLine
if (!GVFSPlatform.Instance.KernelDriver.IsReady(tracer, enlistment.EnlistmentRoot, out errorMessage))
{
if (GVFSPlatform.Instance.SupportsGVFSService)
if (GVFSPlatform.Instance.UnderConstruction.SupportsGVFSService)
{
tracer.RelatedEvent(
EventLevel.Informational,
@ -214,7 +214,7 @@ namespace GVFS.CommandLine
}
if (!this.Unattended &&
GVFSPlatform.Instance.SupportsGVFSService)
GVFSPlatform.Instance.UnderConstruction.SupportsGVFSService)
{
if (!this.ShowStatusWhileRunning(
() => { return this.RegisterMount(enlistment, out errorMessage); },

Просмотреть файл

@ -59,7 +59,7 @@ namespace GVFS.CommandLine
if (!this.Unattended &&
!this.SkipUnregister &&
GVFSPlatform.Instance.SupportsGVFSService)
GVFSPlatform.Instance.UnderConstruction.SupportsGVFSService)
{
if (!this.ShowStatusWhileRunning(
() => { return this.UnregisterRepo(root, out errorMessage); },

Просмотреть файл

@ -61,7 +61,7 @@ namespace GVFS.CommandLine
private bool TryInitializeUpgrader()
{
if (GVFSPlatform.Instance.SupportsGVFSUpgrade)
if (GVFSPlatform.Instance.UnderConstruction.SupportsGVFSUpgrade)
{
if (this.upgrader == null)
{