Пример #1
0
        /// <summary>
        /// Creates a new instance of <see cref="ClusterConfigClient"/> with given <paramref name="settings"/> merged with default settings from <see cref="DefaultSettingsProvider"/> (non-default user settings take priority).
        /// </summary>
        public ClusterConfigClient([NotNull] ClusterConfigClientSettings settings)
        {
            this.settings = settings = ConfigurationMerger.Merge(DefaultSettingsProvider.Settings, settings ?? throw new ArgumentNullException(nameof(settings)));

            log = settings.Log.ForContext <ClusterConfigClient>();

            stateSource               = new TaskCompletionSource <ClusterConfigClientState>(TaskCreationOptions.RunContinuationsAsynchronously);
            stateObservable           = new CachingObservable <ClusterConfigClientState>();
            clientState               = new AtomicInt(State_NotStarted);
            cancellationSource        = new CancellationTokenSource();
            observablePropagationLock = new object();
        }
        public void Should_preserve_non_default_values_from_user_settings()
        {
            foreach (var(propertyName, nonDefaultValue, _) in EnumerateNonDefaultValues())
            {
                var baseSettings = new ClusterConfigClientSettings();
                var userSettings = new ClusterConfigClientSettings();

                typeof(ClusterConfigClientSettings).GetProperty(propertyName).SetValue(userSettings, nonDefaultValue);

                var mergedSettings = ConfigurationMerger.Merge(baseSettings, userSettings);

                typeof(ClusterConfigClientSettings).GetProperty(propertyName).GetValue(mergedSettings).Should().Be(nonDefaultValue);
            }
        }
 public void Should_correctly_merge_two_default_settings_instances()
 {
     ConfigurationMerger.Merge(new ClusterConfigClientSettings(), new ClusterConfigClientSettings())
     .Should().BeEquivalentTo(new ClusterConfigClientSettings());
 }
Пример #4
0
        public static void Main(string[] args)
        {
            Badger.Common.Diagnostics.Logging.ApplySimpleConfiguation();



            var Configurations = new List <PackagerConfiguration>()
            {
                MyConfig(),
                MyConfig().WithDefaults(),
                Defaults.Configuration(),
            };

            var Parser = new Mono.Options.OptionSet()
            {
                {
                    "from-json=",
                    "Specify a json file to load packaging options from",
                    x => {
                        try {
                            var Instance = Badger.Common.Serialization.EasyJsonSerializer.Instance.FromFile <PackagerConfiguration>(x);
                            var Defaults = Instance.WithDefaults();

                            Configurations.InsertRange(0, new[] { Instance, Defaults });
                        } catch (Exception ex) {
                        }
                    }
                },
                {
                    "create-package",
                    "create the package specified by all the options",
                    x => {
                        var Config = ConfigurationMerger.Many((x, y) => ConfigurationMerger.Merge(x, y), Configurations);

                        Config.InvokeConfiguration();
                    }
                },
                {
                    "verbosity=",
                    "set the desired log verbosity",
                    x => {
                    }
                },
                {
                    "to-json=",
                    "Specify a json file to save packaging options to.",
                    x => {
                        try {
                            var Config = ConfigurationMerger.Many((x, y) => ConfigurationMerger.Merge(x, y), Configurations);

                            EasyJsonSerializer.Instance.ToFile(Config, x);
                        } catch (Exception ex) {
                        }
                    }
                }
            };


            args = new[] {
                $@"-to-json=C:\Users\TonyValenti\Documents\test.json",
                $@"-create-package"
            };

            var F = Parser.Parse(args);
        }