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);
        }