envied 0.10.0.alpha1 → 0.10.0.alpha3

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: 995cd4c0c3790b6eabd16fe27f110ddde99d9efcd52863bc0fdfec9fc7d9ac7f
4
- data.tar.gz: 2ae7aebddb419a142c77d2ff3ac878ee22428356ed1d26d1b7b0396741760c14
3
+ metadata.gz: cc20ae0af7bca2b583c878ded0e20158ec97bf6083f5bd9ed87df439ccdbebcb
4
+ data.tar.gz: e0077f4db12320110b8bf27187e5ed159555aee466fae4db2d954f9405717e40
5
5
  SHA512:
6
- metadata.gz: cc80db096389ad6e7f0d66d615a7697d85a550e10307314ebf98d14cb01172f31a2e29684eb47da2c5693c68e0266fd84cbcc44b1345567e81086fe4ffb690d4
7
- data.tar.gz: '08d2dc26b39cc8bd52ed5b40293dff4df06301f645ee5d3d56e52f10c9b6176c9792b2e48a0fc7a0b5358a2805a0a5319555f969ea27913ebcfd02489a10552b'
6
+ metadata.gz: a11a5d9fe26fb430da05d832ca8df370f0ce08f1d455e6fc739d94d5d486777fd456f98257b69922c7f61a3bd9687a19ee4d74e8812009ffb186219520f216b0
7
+ data.tar.gz: da77c7a1f2753f961ae2806878b7189e4278367448b175dea9d03711899988c0ce721d47baf83967c26c319e7c8bd823a9bd6c5a2da20553ff69d0cd37453071
@@ -16,6 +16,7 @@ class ENVied
16
16
  def self.require(*args, **options)
17
17
  requested_groups = (args && !args.empty?) ? args : ENV['ENVIED_GROUPS']
18
18
  env!(requested_groups, options)
19
+ error_on_duplicate_variables!(options)
19
20
  error_on_missing_variables!(options)
20
21
  error_on_uncoercible_variables!(options)
21
22
 
@@ -28,8 +29,20 @@ class ENVied
28
29
  @env = EnvProxy.new(@config, groups: required_groups(*requested_groups))
29
30
  end
30
31
 
32
+ def self.error_on_duplicate_variables!(options)
33
+ var_types_by_name = env.variables.reduce({}) do |acc, v|
34
+ (acc[v.name] ||= []).push v.type
35
+ acc
36
+ end
37
+ dups = var_types_by_name.select {|name, types| types.uniq.count > 1 }
38
+
39
+ if dups.any?
40
+ raise "The following variables are defined more than once with different types: #{dups.keys.join(', ')}"
41
+ end
42
+ end
43
+
31
44
  def self.error_on_missing_variables!(**options)
32
- names = env.missing_variables.map(&:name)
45
+ names = env.missing_variables.map(&:name).uniq.sort
33
46
  if names.any?
34
47
  msg = "The following environment variables should be set: #{names.join(', ')}."
35
48
  msg << "\nPlease make sure to stop Spring before retrying." if spring_enabled? && !options[:via_spring]
@@ -55,7 +68,7 @@ class ENVied
55
68
  end
56
69
 
57
70
  def self.env_keys_to_intercept
58
- config.variables.select {|var| var.type == :env }.map{|var| var.name.to_s }
71
+ env.variables.select{|v| v.type == :env }.map{|var| var.name.to_s }
59
72
  end
60
73
 
61
74
  def self.intercept_env_vars!
@@ -30,6 +30,10 @@ class ENVied
30
30
  return env_value_of(var) unless env_value_of(var).nil?
31
31
  end
32
32
 
33
+ def variables
34
+ @variables ||= config.variables.select {|v| groups.include?(v.group) }
35
+ end
36
+
33
37
  private
34
38
 
35
39
  def coerce(var)
@@ -62,10 +66,6 @@ class ENVied
62
66
  value_to_coerce(var).nil?
63
67
  end
64
68
 
65
- def variables
66
- @variables ||= config.variables.select {|v| groups.include?(v.group) }
67
- end
68
-
69
69
  def variables_by_name
70
70
  @variables_by_name ||= variables.map {|v| [v.name, v] }.to_h
71
71
  end
@@ -1,3 +1,3 @@
1
1
  class ENVied
2
- VERSION = '0.10.0.alpha1'
2
+ VERSION = '0.10.0.alpha3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: envied
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0.alpha1
4
+ version: 0.10.0.alpha3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gert Goet
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-16 00:00:00.000000000 Z
11
+ date: 2019-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor