private static int RunInit(InitOption option) { Log.Info("BuildKit Tool 开始初始化,详细命令请看 https://github.com/dotnet-campus/dotnetcampus.DotNETBuildSDK"); if (Enum.TryParse(option.Configuration, ignoreCase: true, out ConfigurationEnum configuration)) { } else { configuration = ConfigurationEnum.None; } InitLog(configuration); var fileConfiguration = ConfigurationExtension.MergeConfiguration(option, configuration); var appConfigurator = fileConfiguration.CreateAppConfigurator(); CheckCommandInstall(appConfigurator); // 写入当前能找到的各个文件的配置 var fileSniff = new FileSniff(appConfigurator); fileSniff.Sniff(); appConfigurator.Of <CompileConfiguration>().SetCommonConfiguration(); fileConfiguration.SaveAsync().Wait(); return(0); }
/// <summary> /// 合并配置文件 /// </summary> /// <param name="option"></param> /// <param name="configuration"></param> public static FileConfigurationRepo MergeConfiguration(InitOption option, ConfigurationEnum configuration) { // 放在机器的配置 var globalConfigurationFile = GetGlobalConfigurationFile(); Dictionary <string, string> machineConfiguration = new Dictionary <string, string>(); if (!globalConfigurationFile.Exists) { Log.Debug("没有找到机器配置" + globalConfigurationFile.FullName); // 不存在机器配置 } else { // 规则是如果当前存在的,那么就不从机器获取 machineConfiguration = CoinConfigurationSerializer.Deserialize(File.ReadAllText(globalConfigurationFile.FullName)); } var currentConfiguration = GetBuildConfiguration(); foreach (var(key, value) in machineConfiguration) { if (!currentConfiguration.ContainsKey(key)) { currentConfiguration[key] = value; } } SetLogLevel(configuration, currentConfiguration); // 下面代码只是让配置文件里面可以告诉小伙伴这个文件是做什么 currentConfiguration["AAA须知"] = "此文件为构建过程多个命令共享信息使用,请不要加入代码仓库"; // 序列化写入 var fileConfiguration = ConfigurationHelper.GetCurrentConfiguration(); IConfigurationRepo configurationRepo = fileConfiguration; foreach (var(key, value) in currentConfiguration) { configurationRepo.SetValue(key, value); } return(fileConfiguration); }