コード例 #1
0
 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);
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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();
                }
        }
コード例 #5
0
        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());
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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));
        }