public ExecuteCore(IFileSystem fileSystem, IEnvironment environment, ConfigFileLocator configFileLocator = null) { this.fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem)); this.environment = environment; this.configFileLocator = configFileLocator ?? ConfigFileLocator.Default; gitVersionCache = new GitVersionCache(fileSystem); }
public static Config Provide(string workingDirectory, IFileSystem fileSystem, ConfigFileLocator configFileLocator, bool applyDefaults = true, Config overrideConfig = null) { var readConfig = configFileLocator.ReadConfig(workingDirectory, fileSystem); VerifyConfiguration(readConfig); if (applyDefaults) { ApplyDefaultsTo(readConfig); } if (null != overrideConfig) { ApplyOverridesTo(readConfig, overrideConfig); } return(readConfig); }
public static Config Provide(GitPreparer gitPreparer, IFileSystem fileSystem, ConfigFileLocator configFileLocator, bool applyDefaults = true, Config overrideConfig = null, string configFilePath = null) { var workingDirectory = gitPreparer.WorkingDirectory; var projectRootDirectory = gitPreparer.GetProjectRootDirectory(); if (configFileLocator.HasConfigFileAt(workingDirectory, fileSystem)) { return(Provide(workingDirectory, fileSystem, configFileLocator, applyDefaults, overrideConfig)); } return(Provide(projectRootDirectory, fileSystem, configFileLocator, applyDefaults, overrideConfig)); }
public static void Init(string workingDirectory, IFileSystem fileSystem, IConsole console, ConfigFileLocator configFileLocator) { var configFilePath = configFileLocator.GetConfigFilePath(workingDirectory, fileSystem); var currentConfiguration = Provide(workingDirectory, fileSystem, applyDefaults: false, configFileLocator: configFileLocator); var config = new ConfigInitWizard(console, fileSystem).Run(currentConfiguration, workingDirectory); if (config == null) { return; } using (var stream = fileSystem.OpenWrite(configFilePath)) using (var writer = new StreamWriter(stream)) { Logger.WriteInfo("Saving config file"); ConfigSerialiser.Write(config, writer); stream.Flush(); } }
public static string GetEffectiveConfigAsString(string workingDirectory, IFileSystem fileSystem, ConfigFileLocator configFileLocator) { var config = Provide(workingDirectory, fileSystem, configFileLocator); var stringBuilder = new StringBuilder(); using (var stream = new StringWriter(stringBuilder)) { ConfigSerialiser.Write(config, stream); stream.Flush(); } return(stringBuilder.ToString()); }
private static string GetConfigFileHash(IFileSystem fileSystem, GitPreparer gitPreparer, ConfigFileLocator configFileLocator) { // will return the same hash even when config file will be moved // from workingDirectory to rootProjectDirectory. It's OK. Config essentially is the same. var configFilePath = configFileLocator.SelectConfigFilePath(gitPreparer, fileSystem); if (!fileSystem.Exists(configFilePath)) { return(string.Empty); } var configFileContent = fileSystem.ReadAllText(configFilePath); return(GetHash(configFileContent)); }
public static GitVersionCacheKey Create(IFileSystem fileSystem, GitPreparer gitPreparer, Config overrideConfig, ConfigFileLocator configFileLocator) { var gitSystemHash = GetGitSystemHash(gitPreparer); var configFileHash = GetConfigFileHash(fileSystem, gitPreparer, configFileLocator); var repositorySnapshotHash = GetRepositorySnapshotHash(gitPreparer); var overrideConfigHash = GetOverrideConfigHash(overrideConfig); var compositeHash = GetHash(gitSystemHash, configFileHash, repositorySnapshotHash, overrideConfigHash); return(new GitVersionCacheKey(compositeHash)); }