예제 #1
0
        private void ApplyCommandLineValueOverride([NotNull] JObject configuration, [NotNull] Match match)
        {
            var path = match.Groups["path"]?.Value ?? string.Empty;

            if (string.IsNullOrWhiteSpace(path))
            {
                return;
            }

            var group = match.Groups["value"];

            JetBrainsHelpers.assume(group != null);

            var    stringValue = group.Success ? group.Value : "true";
            JToken value       = JsonBuilder.ValueFromString(stringValue);

            var valueConfiguration = JsonBuilder.Construct(path.Split('/'), value);

            JsonBuilder.Apply(valueConfiguration, configuration);
        }
        public IEnumerable <IConfigurationLayer> Provide()
        {
            IDictionary environmentVariables = Environment.GetEnvironmentVariables();

            var configuration = new JObject();

            foreach (string key in environmentVariables.Keys)
            {
                if (!key.StartsWith(_Prefix, StringComparison.InvariantCultureIgnoreCase))
                {
                    continue;
                }

                var path  = key.Substring(_Prefix.Length);
                var value = JsonBuilder.ValueFromString(environmentVariables[key]?.ToString() ?? string.Empty);

                var variableConfiguration = JsonBuilder.Construct(path.Split('/'), value);
                JsonBuilder.Apply(variableConfiguration, configuration);
            }

            yield return(new StaticConfigurationLayer(configuration));
        }