config_hound 1.4.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 67a3b97b5e40deb8ed9509031898e66a2de9577d
4
- data.tar.gz: 53db1854e4cf25048107062b23718de22b15083d
2
+ SHA256:
3
+ metadata.gz: 33f4e286668dbf7171c50d313cd9339cbb1ccbdc34d9b68c1e732c7a84d0acb9
4
+ data.tar.gz: 007b751b55b1b1463db129e754572e966f937a890636a16d3506d3b9ca2801b9
5
5
  SHA512:
6
- metadata.gz: f9db6a68b39dda85488488ab959acd9b962ef61510d6a4e1b182e21aa16b48c30540c46ce61df4c6b80cb8a8710fff4a54c76679e3adea50d4ba03da90baf291
7
- data.tar.gz: 5ca8f26c807be682d782c2969c174ce5ca664fafd820fe4ea348b04dac4abf50edb2e3553f415e77d8bb6846d029bf327aad08be96e1db73263728ff160c6f20
6
+ metadata.gz: bdaa8f5cd09e6a5aee6c35b5a9116e2f7f28b7553472c1b10ece292028d5553ffdfeda9c4358a79729589c33f565b58a4439c42f431cd1a7e9ad0878bba376e4
7
+ data.tar.gz: b084ffc0661eaf04af3ff1c22bc762158e660a5a0ab0658d9b71b89b1700cb402515c5a2ea01520b2b8d61e0cbe682e5425939e5499e45b5cf0736b600fec0f1
@@ -0,0 +1,20 @@
1
+ name: Tests
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ test:
7
+
8
+ strategy:
9
+ matrix:
10
+ ruby: ['2.7', '3.0', '3.1']
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+ - uses: ruby/setup-ruby@v1
16
+ with:
17
+ bundler-cache: true
18
+ ruby-version: ${{ matrix.ruby }}
19
+ - run: bundle install
20
+ - run: bundle exec rake
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # ConfigHound
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/config_hound.png)](http://badge.fury.io/rb/config_hound)
4
- [![Build Status](https://travis-ci.org/mdub/config_hound.svg?branch=master)](https://travis-ci.org/mdub/config_hound)
3
+ [![Gem Version](https://badge.fury.io/rb/config_hound.svg)](http://badge.fury.io/rb/config_hound)
4
+ [![Build Status](https://github.com/mdub/config_hound/actions/workflows/test.yaml/badge.svg?branch=master)](https://github.com/mdub/config_hound/actions/workflows/test.yaml)
5
5
 
6
6
  ConfigHound makes it easy to load configuration data.
7
7
 
data/config_hound.gemspec CHANGED
@@ -19,9 +19,11 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^spec/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
+ spec.required_ruby_version = '>= 2.7'
23
+
22
24
  spec.add_runtime_dependency "dig_rb"
23
25
 
24
- spec.add_development_dependency "bundler", "~> 1.7"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "bundler", "~> 2.2"
27
+ spec.add_development_dependency "rake", "~> 13.0"
26
28
 
27
29
  end
@@ -1,5 +1,6 @@
1
1
  require "config_hound/error"
2
2
  require "dig_rb"
3
+ require "set"
3
4
 
4
5
  module ConfigHound
5
6
 
@@ -46,7 +47,7 @@ module ConfigHound
46
47
 
47
48
  def expand_hash(input)
48
49
  input.each_with_object({}) do |(k,v), a|
49
- a[k] = expand(v)
50
+ a[expand(k)] = expand(v)
50
51
  end
51
52
  end
52
53
 
@@ -16,7 +16,7 @@ module ConfigHound
16
16
 
17
17
  def parse_yaml(raw)
18
18
  require "yaml"
19
- YAML.safe_load(raw, [], [], true)
19
+ YAML.safe_load(raw, permitted_classes: [], permitted_symbols: [], aliases: true)
20
20
  end
21
21
 
22
22
  alias :parse_yml :parse_yaml
@@ -29,14 +29,16 @@ module ConfigHound
29
29
  when %r{^\w+:/}
30
30
  URI(arg)
31
31
  when %r{^/}
32
- URI("file:#{arg}")
32
+ URI("file://#{arg}")
33
33
  else
34
- URI("file:#{File.expand_path(arg)}")
34
+ URI("file://#{File.expand_path(arg)}")
35
35
  end
36
36
  end
37
37
 
38
38
  end
39
39
 
40
+ attr_reader :uri
41
+
40
42
  def to_s
41
43
  uri.to_s
42
44
  end
@@ -46,7 +48,7 @@ module ConfigHound
46
48
  end
47
49
 
48
50
  def read
49
- open(uri.scheme == "file" ? uri.path : uri.to_s) do |io|
51
+ URI.open(uri.scheme == "file" ? uri.path : uri.to_s) do |io|
50
52
  io.read
51
53
  end
52
54
  rescue Errno::ENOENT
@@ -54,7 +56,7 @@ module ConfigHound
54
56
  end
55
57
 
56
58
  def format
57
- File.extname(uri.to_s)[1..-1]
59
+ File.extname(uri.path.to_s)[1..-1]
58
60
  end
59
61
 
60
62
  def load
@@ -67,8 +69,6 @@ module ConfigHound
67
69
  @uri = uri
68
70
  end
69
71
 
70
- attr_reader :uri
71
-
72
72
  end
73
73
 
74
74
  end
@@ -1,3 +1,3 @@
1
1
  module ConfigHound
2
- VERSION = "1.4.2"
2
+ VERSION = "1.5.0"
3
3
  end
@@ -13,7 +13,7 @@ describe ConfigHound::Resource do
13
13
  let(:path) { uri }
14
14
 
15
15
  it "retains the URI" do
16
- expect(resource.to_s).to eq(uri.to_s)
16
+ expect(resource.uri).to eq uri
17
17
  end
18
18
 
19
19
  end
@@ -23,7 +23,7 @@ describe ConfigHound::Resource do
23
23
  let(:path) { "/path/to/file" }
24
24
 
25
25
  it "assumes it's a file" do
26
- expect(resource.to_s).to eq("file:/path/to/file")
26
+ expect(resource.uri).to eq URI("file:///path/to/file")
27
27
  end
28
28
 
29
29
  describe "#resolve" do
@@ -32,21 +32,21 @@ describe ConfigHound::Resource do
32
32
  it "resolves relatively" do
33
33
  other_resource = resource.resolve("other_file")
34
34
  expect(other_resource).to be_a(ConfigHound::Resource)
35
- expect(other_resource.to_s).to eq("file:/path/to/other_file")
35
+ expect(other_resource.uri).to eq URI("file:///path/to/other_file")
36
36
  end
37
37
  end
38
38
 
39
39
  context "with an absolute file path" do
40
40
  it "resolves relatively" do
41
41
  other_resource = resource.resolve("/different/path")
42
- expect(other_resource.to_s).to eq("file:/different/path")
42
+ expect(other_resource.uri).to eq URI("file:///different/path")
43
43
  end
44
44
  end
45
45
 
46
46
  context "with a fully-qualified URI" do
47
47
  it "uses the URI provided" do
48
48
  other_resource = resource.resolve("http://foo/bar")
49
- expect(other_resource.to_s).to eq("http://foo/bar")
49
+ expect(other_resource.uri).to eq URI("http://foo/bar")
50
50
  end
51
51
  end
52
52
 
@@ -59,7 +59,7 @@ describe ConfigHound::Resource do
59
59
  let(:path) { "config.yml" }
60
60
 
61
61
  it "assumes it's a file relative to $CWD" do
62
- expect(resource.to_s).to eq("file:#{Dir.pwd}/config.yml")
62
+ expect(resource.uri).to eq URI("file://#{Dir.pwd}/config.yml")
63
63
  end
64
64
 
65
65
  end
@@ -16,6 +16,38 @@ describe ConfigHound, "expansion" do
16
16
  expect(config["address"]).to eq("host:5678")
17
17
  end
18
18
 
19
+ context "with key expansion" do
20
+
21
+ given_resource "config-with-key-expansion.yml", %{
22
+ var:
23
+ account_id: "123"
24
+ <(var.account_id)>: value
25
+ }
26
+
27
+ let(:config) { ConfigHound.load("config-with-key-expansion.yml", :expand_refs => true) }
28
+
29
+ it "expands key references" do
30
+ expect(config["123"]).to eq("value")
31
+ end
32
+
33
+ end
34
+
35
+ context "with key and value expansion" do
36
+
37
+ given_resource "config-with-key-and-value-expansion.yml", %{
38
+ var:
39
+ account_id: "123"
40
+ port: 5678
41
+ <(var.account_id)>: host:<(var.port)>
42
+ }
43
+ let(:config) { ConfigHound.load("config-with-key-and-value-expansion.yml", :expand_refs => true) }
44
+
45
+ it "expands key references" do
46
+ expect(config["123"]).to eq("host:5678")
47
+ end
48
+
49
+ end
50
+
19
51
  context "with overrides" do
20
52
 
21
53
  given_resource "overrides.yml", %{
@@ -20,6 +20,18 @@ describe ConfigHound, "formats" do
20
20
  )
21
21
  end
22
22
 
23
+ given_resource "s3://s3-test-bucket/config.yml?versionId=123456", %{
24
+ foo: 1
25
+ bar: 2
26
+ }
27
+
28
+ it "loads YAML from s3 with version id" do
29
+ expect(load("s3://s3-test-bucket/config.yml?versionId=123456")).to eq(
30
+ "foo" => 1,
31
+ "bar" => 2
32
+ )
33
+ end
34
+
23
35
  given_resource "config-with-aliases.yml", %{
24
36
  foo: &foo
25
37
  bar: 1
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require "open-uri"
2
+ require "uri"
3
+
1
4
  module GivenResource
2
5
 
3
6
  def inputs
@@ -10,7 +13,7 @@ module GivenResource
10
13
  end
11
14
  content = undent(content)
12
15
  before do
13
- allow_any_instance_of(ConfigHound::Resource).to receive(:open).with(path) do |_, _, &block|
16
+ allow(URI).to receive(:open).with(path) do |_, _, &block|
14
17
  block.call(StringIO.new(content.dup))
15
18
  end
16
19
  end
@@ -31,6 +34,7 @@ module GivenResource
31
34
  end
32
35
 
33
36
  RSpec.configure do |config|
37
+ config.warnings = true
34
38
 
35
39
  config.extend(GivenResource)
36
40
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: config_hound
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Williams
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-23 00:00:00.000000000 Z
11
+ date: 2023-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dig_rb
@@ -30,38 +30,38 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.7'
33
+ version: '2.2'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.7'
40
+ version: '2.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
55
- description:
54
+ version: '13.0'
55
+ description:
56
56
  email:
57
57
  - mdub@dogbiscuit.org
58
58
  executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
+ - ".github/workflows/test.yaml"
62
63
  - ".gitignore"
63
64
  - ".rspec"
64
- - ".travis.yml"
65
65
  - Gemfile
66
66
  - LICENSE.txt
67
67
  - README.md
@@ -87,7 +87,7 @@ homepage: https://github.com/mdub/config_hound
87
87
  licenses:
88
88
  - MIT
89
89
  metadata: {}
90
- post_install_message:
90
+ post_install_message:
91
91
  rdoc_options: []
92
92
  require_paths:
93
93
  - lib
@@ -95,16 +95,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - ">="
97
97
  - !ruby/object:Gem::Version
98
- version: '0'
98
+ version: '2.7'
99
99
  required_rubygems_version: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  requirements: []
105
- rubyforge_project:
106
- rubygems_version: 2.6.13
107
- signing_key:
105
+ rubygems_version: 3.3.7
106
+ signing_key:
108
107
  specification_version: 4
109
108
  summary: Sniffs out config, wherever it may be.
110
109
  test_files:
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2
4
- - 2.4