etcher 4.2.0 → 4.4.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
2
  SHA256:
3
- metadata.gz: 2f0604dcbe56ccd26ffc05fbffb588b0e645101e30defed34e947b540895cd1c
4
- data.tar.gz: fd032124a40def36d0470f768ef7459bd4351d862d7f8d574ed926c36380f058
3
+ metadata.gz: 1edf86e2533240c1750f58691f7d664e829fe559f76119e8e5b2a2b9daa1b226
4
+ data.tar.gz: 322104886295e1e697f22bc518b45446583e2db2a78f1797d26ce7c8dac60209
5
5
  SHA512:
6
- metadata.gz: 8e19443899d8ab5bcd336a8f08ba608848075fbc8b2c36ed7f812d8f44ec7d78777d06b419045779b845a1ff3fcb124e2888dd719c745a4466c0a3bafb6b784e
7
- data.tar.gz: 880a402d2b35789bb12cc1292f5b2ad55c3b9c730aeb3d8c2baf065f4cac8c06136ae862c859840bb3c8529534d9db2f3f8a475931b4d517239fa28d94272954
6
+ metadata.gz: 53ae3e57a1027a70b73a8824d6bbfa5a180b84172d39f2b328e1b983dceec8bf510bb601cb745d4f3e5239cda26366eab57a6d72266104ce8bb262facd7dbc8d
7
+ data.tar.gz: e444546ee7f78d55fcbaaf15d9901b7842dbfcfe536c8fc2994768613b3f6a69116751c9b5418d85b9026ca399e04991b6ca4c653793d8d3cc60fff136eec633
checksums.yaml.gz.sig CHANGED
Binary file
data/etcher.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "etcher"
5
- spec.version = "4.2.0"
5
+ spec.version = "4.4.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://alchemists.io/projects/etcher"
@@ -24,13 +24,13 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.required_ruby_version = ">= 4.0"
26
26
 
27
- spec.add_dependency "cogger", "~> 2.0"
27
+ spec.add_dependency "cogger", "~> 2.3"
28
28
  spec.add_dependency "core", "~> 3.0"
29
29
  spec.add_dependency "dry-monads", "~> 1.9"
30
30
  spec.add_dependency "dry-types", "~> 1.9"
31
31
  spec.add_dependency "refinements", "~> 14.0"
32
- spec.add_dependency "versionaire", "~> 15.0"
33
- spec.add_dependency "zeitwerk", "~> 2.7"
32
+ spec.add_dependency "versionaire", "~> 15.3"
33
+ spec.add_dependency "zeitwerk", "~> 2.8"
34
34
 
35
35
  spec.extra_rdoc_files = Dir["README*", "LICENSE*"]
36
36
  spec.files = Dir["*.gemspec", "lib/**/*"]
@@ -16,7 +16,7 @@ module Etcher
16
16
  freeze
17
17
  end
18
18
 
19
- def call(**overrides)
19
+ def call **overrides
20
20
  load.bind { |attributes| transform attributes }
21
21
  .fmap { |attributes| attributes.merge! overrides.symbolize_keys! }
22
22
  .bind { |attributes| validate attributes }
@@ -54,7 +54,7 @@ module Etcher
54
54
  Failure step: __method__, constant: self.class, payload: "#{error.message.capitalize}."
55
55
  end
56
56
 
57
- def merge(*items)
57
+ def merge *items
58
58
  case items
59
59
  in Success(all), Success(subset) then Success(all.merge!(subset))
60
60
  else items.last
@@ -8,7 +8,7 @@ module Etcher
8
8
  class Hash
9
9
  include Dry::Monads[:result]
10
10
 
11
- def initialize(**attributes)
11
+ def initialize **attributes
12
12
  @attributes = attributes
13
13
  freeze
14
14
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "dry/monads"
4
4
  require "refinements/array"
5
+ require "refinements/hash"
5
6
 
6
7
  module Etcher
7
8
  # Builds and fully resolves a configuration.
@@ -9,6 +10,19 @@ module Etcher
9
10
  include Dry::Monads[:result]
10
11
 
11
12
  using Refinements::Array
13
+ using Refinements::Hash
14
+
15
+ def self.flatten errors, lines = []
16
+ errors.each do |key, value|
17
+ if value.is_a? Hash
18
+ flatten value.flatten_keys(prefix: key, delimiter: "."), lines
19
+ else
20
+ lines.append " - #{key} #{value.to_sentence}\n"
21
+ end
22
+ end
23
+
24
+ lines
25
+ end
12
26
 
13
27
  def initialize registry = Registry.new, logger: LOGGER
14
28
  @builder = Builder.new registry
@@ -16,7 +30,7 @@ module Etcher
16
30
  freeze
17
31
  end
18
32
 
19
- def call(**overrides)
33
+ def call **overrides
20
34
  case builder.call(**overrides)
21
35
  in Success(attributes) then attributes
22
36
  in Failure(step:, constant:, payload: String => payload)
@@ -33,11 +47,10 @@ module Etcher
33
47
  attr_reader :builder, :logger
34
48
 
35
49
  def log_and_abort step, constant, errors
36
- details = errors.map { |key, message| " - #{key} #{message.to_sentence}\n" }
37
- .join
50
+ lines = self.class.flatten errors
38
51
 
39
52
  logger.abort "#{step.capitalize} failure (#{constant}). " \
40
- "Unable to load configuration:\n#{details}"
53
+ "Unable to load configuration:\n#{lines.join}"
41
54
  end
42
55
  end
43
56
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: etcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.0
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -41,14 +41,14 @@ dependencies:
41
41
  requirements:
42
42
  - - "~>"
43
43
  - !ruby/object:Gem::Version
44
- version: '2.0'
44
+ version: '2.3'
45
45
  type: :runtime
46
46
  prerelease: false
47
47
  version_requirements: !ruby/object:Gem::Requirement
48
48
  requirements:
49
49
  - - "~>"
50
50
  - !ruby/object:Gem::Version
51
- version: '2.0'
51
+ version: '2.3'
52
52
  - !ruby/object:Gem::Dependency
53
53
  name: core
54
54
  requirement: !ruby/object:Gem::Requirement
@@ -111,28 +111,28 @@ dependencies:
111
111
  requirements:
112
112
  - - "~>"
113
113
  - !ruby/object:Gem::Version
114
- version: '15.0'
114
+ version: '15.3'
115
115
  type: :runtime
116
116
  prerelease: false
117
117
  version_requirements: !ruby/object:Gem::Requirement
118
118
  requirements:
119
119
  - - "~>"
120
120
  - !ruby/object:Gem::Version
121
- version: '15.0'
121
+ version: '15.3'
122
122
  - !ruby/object:Gem::Dependency
123
123
  name: zeitwerk
124
124
  requirement: !ruby/object:Gem::Requirement
125
125
  requirements:
126
126
  - - "~>"
127
127
  - !ruby/object:Gem::Version
128
- version: '2.7'
128
+ version: '2.8'
129
129
  type: :runtime
130
130
  prerelease: false
131
131
  version_requirements: !ruby/object:Gem::Requirement
132
132
  requirements:
133
133
  - - "~>"
134
134
  - !ruby/object:Gem::Version
135
- version: '2.7'
135
+ version: '2.8'
136
136
  email:
137
137
  - brooke@alchemists.io
138
138
  executables: []
@@ -184,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
184
  - !ruby/object:Gem::Version
185
185
  version: '0'
186
186
  requirements: []
187
- rubygems_version: 4.0.10
187
+ rubygems_version: 4.0.16
188
188
  specification_version: 4
189
189
  summary: A monadic configuration loader, transformer, and validator.
190
190
  test_files: []
metadata.gz.sig CHANGED
Binary file