env-checker 0.1.4 → 0.1.5

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
  SHA1:
3
- metadata.gz: 1f0f0740e16308b5524249cb91466b74335522f0
4
- data.tar.gz: 54bf8b5c0295e8e77c65186a59f996e4391b82cd
3
+ metadata.gz: 787f95fa9585bada75c7b3343ecde721a5a71ca0
4
+ data.tar.gz: d33b2fbd2ee5c321e9134ac2a37df57bd84924b7
5
5
  SHA512:
6
- metadata.gz: c81fc0e2b03c48cef8e37d6800362aa3e6f35d02109f17f2599d3f330a712cbcc298c8bbb75fce557725c2f36b7bdc8e056b48051ada02170742da61629bde7d
7
- data.tar.gz: 38ed741d13ca139d1012450271dab20479e1252114e8c4928bd0cf1df035e3891ef6c07a46c6f12918112004435497a748bc42317eb7ad0ba076ff587c9511ed
6
+ metadata.gz: 4c6ba33bc106c8c27f3fa7678c2defe258646aa270de98db4d3494a62709854414763d0268dec3d2478c1cde877da64ad489194cf579376ec0bc6a41d89ef242
7
+ data.tar.gz: 867efafdfb59b5232bf0fe6cb79be37a0857018a8e404e8d14251a4cc13f7bd7cfe232ccda7ccd6ce9f5dad9aac1cab132f81a982efc71014bd244d493218b2e
@@ -1,36 +1,34 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2016-11-11 15:00:02 +0100 using RuboCop version 0.45.0.
3
+ # on 2016-11-12 02:10:52 +0100 using RuboCop version 0.45.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 2
9
+ # Offense count: 4
10
10
  Metrics/AbcSize:
11
- Max: 21
11
+ Max: 23
12
12
 
13
13
  # Offense count: 1
14
14
  # Configuration parameters: CountComments.
15
15
  Metrics/BlockLength:
16
- Max: 31
16
+ Max: 32
17
17
 
18
- # Offense count: 2
18
+ # Offense count: 1
19
+ Metrics/CyclomaticComplexity:
20
+ Max: 7
21
+
22
+ # Offense count: 3
19
23
  # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives.
20
24
  # URISchemes: http, https
21
25
  Metrics/LineLength:
22
- Max: 82
26
+ Max: 95
23
27
 
24
- # Offense count: 2
28
+ # Offense count: 4
25
29
  # Configuration parameters: CountComments.
26
30
  Metrics/MethodLength:
27
- Max: 11
28
-
29
- # Offense count: 1
30
- # Cop supports --auto-correct.
31
- Style/EmptyLines:
32
- Exclude:
33
- - 'spec/env_checker/cli_spec.rb'
31
+ Max: 13
34
32
 
35
33
  # Offense count: 1
36
34
  # Cop supports --auto-correct.
@@ -46,7 +44,7 @@ Style/ExtraSpacing:
46
44
  Style/FrozenStringLiteralComment:
47
45
  Enabled: false
48
46
 
49
- # Offense count: 7
47
+ # Offense count: 9
50
48
  # Cop supports --auto-correct.
51
49
  # Configuration parameters: EnforcedStyle, SupportedStyles, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
52
50
  # SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
@@ -61,7 +59,7 @@ Style/MutableConstant:
61
59
  Exclude:
62
60
  - 'lib/env_checker/version.rb'
63
61
 
64
- # Offense count: 1
62
+ # Offense count: 4
65
63
  # Cop supports --auto-correct.
66
64
  # Configuration parameters: SupportedStyles.
67
65
  # SupportedStyles: compact, exploded
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- env-checker (0.1.4)
5
- slack-notifier (~> 1.5.1)
4
+ env-checker (0.1.5)
5
+ slack-notifier (~> 1.5)
6
6
  thor (~> 0.19.1)
7
7
 
8
8
  GEM
data/README.md CHANGED
@@ -78,18 +78,6 @@ EnvChecker.configure do |config|
78
78
  # config.logger = Logger.new('log/env_checker.log') # Use this file
79
79
  # config.logger = Logger.new('/dev/null') # Don't log at all (on a Unix system)
80
80
  end
81
-
82
- # Example to run always
83
- [YOUR_APP]::Application.config.after_initialize do
84
- EnvChecker.check_environment_variables
85
- end
86
-
87
- # Example to run in specific environments
88
- if Rails.env.production? || Rails.env.test?
89
- [YOUR_APP]::Application.config.after_initialize do
90
- EnvChecker.check_environment_variables
91
- end
92
- end
93
81
  ```
94
82
 
95
83
 
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.required_ruby_version = '>= 2.0.0'
34
34
 
35
35
  spec.add_runtime_dependency 'thor', '~> 0.19.1'
36
- spec.add_runtime_dependency 'slack-notifier', '~> 1.5.1'
36
+ spec.add_runtime_dependency 'slack-notifier', '~> 1.5'
37
37
  spec.add_development_dependency 'bundler', '~> 1.13'
38
38
  spec.add_development_dependency 'rake', '~> 11.3'
39
39
  spec.add_development_dependency 'rspec', '~> 3.5'
@@ -8,23 +8,13 @@ require 'env_checker/cli'
8
8
 
9
9
  module EnvChecker
10
10
  class << self
11
- attr_accessor :configuration
12
-
13
- def check_environment_variables
14
- return true unless configuration
15
-
16
- bov = check_optional_variables
17
- brv = check_required_variables
18
-
19
- bov & brv
20
- end
11
+ attr_accessor :configurations
21
12
 
22
13
  def configure
23
- self.configuration = Configuration.new
24
- yield(configuration)
25
-
26
- configuration.valid? &&
27
- configuration.after_initialize
14
+ self.configurations ||= {}
15
+ configurations['global'] = Configuration.new
16
+ yield(configurations['global'])
17
+ after_configure_and_check(configurations['global'])
28
18
  end
29
19
 
30
20
  def cli_configure_and_check(options)
@@ -32,17 +22,29 @@ module EnvChecker
32
22
  !options[:required] &&
33
23
  !options[:config_file]
34
24
 
35
- self.configuration = create_config_from_parameters(options)
25
+ self.configurations = create_config_from_parameters(options)
36
26
 
37
27
  begin
38
- check_environment_variables ? exit(true) : exit(1)
28
+ exit(1) unless after_configure_and_check(configurations['global'])
29
+ exit(true)
39
30
  rescue EnvChecker::MissingKeysError
40
31
  exit 2
32
+ rescue EnvChecker::ConfigurationError
33
+ exit 3
41
34
  end
42
35
  end
43
36
 
44
37
  private
45
38
 
39
+ def after_configure_and_check(configuration)
40
+ configuration.after_initialize
41
+
42
+ bov = check_optional_variables(configuration)
43
+ brv = check_required_variables(configuration)
44
+
45
+ bov & brv
46
+ end
47
+
46
48
  def create_config_from_parameters(options)
47
49
  config = Configuration.new
48
50
 
@@ -52,17 +54,17 @@ module EnvChecker
52
54
  config.required_variables = from_file['required_variables']
53
55
  config.slack_webhook_url = from_file['slack_webhook_url']
54
56
 
55
- return config
57
+ return { 'global' => config }
56
58
  end
57
59
 
58
60
  config.optional_variables = options[:optional] if options[:optional]
59
61
  config.required_variables = options[:required] if options[:required]
60
62
  config.slack_webhook_url = options[:slack] if options[:slack]
61
63
 
62
- config
64
+ { 'global' => config }
63
65
  end
64
66
 
65
- def check_optional_variables
67
+ def check_optional_variables(configuration)
66
68
  return true if
67
69
  !configuration.optional_variables ||
68
70
  configuration.optional_variables.empty?
@@ -70,14 +72,15 @@ module EnvChecker
70
72
  missing_keys = missing_keys_env(configuration.optional_variables)
71
73
  return true if missing_keys.empty?
72
74
 
73
- log_message(:warning,
75
+ log_message(configuration,
76
+ :warning,
74
77
  configuration.environment,
75
78
  "Warning! Missing optional variables: #{missing_keys}")
76
79
 
77
80
  false
78
81
  end
79
82
 
80
- def check_required_variables
83
+ def check_required_variables(configuration)
81
84
  return true if
82
85
  !configuration.required_variables ||
83
86
  configuration.required_variables.empty?
@@ -85,7 +88,8 @@ module EnvChecker
85
88
  missing_keys = missing_keys_env(configuration.required_variables)
86
89
 
87
90
  if missing_keys.any?
88
- log_message(:error,
91
+ log_message(configuration,
92
+ :error,
89
93
  configuration.environment,
90
94
  "Error! Missing required variables: #{missing_keys}")
91
95
 
@@ -95,7 +99,7 @@ module EnvChecker
95
99
  true
96
100
  end
97
101
 
98
- def log_message(type, environment, error_message)
102
+ def log_message(configuration, type, environment, error_message)
99
103
  return unless error_message
100
104
 
101
105
  message = format_error_message(environment, error_message)
@@ -18,9 +18,9 @@ module EnvChecker
18
18
 
19
19
  variables = %w(config_file slack_webhook_url optional required)
20
20
  variables.each do |v|
21
- # TODO: get config variables from current environment
21
+ # TODO: get config variables from current environment
22
22
  # options[v.to_sym] ||= ENV[v.to_sym] if ENV[v.to_sym]
23
- output << "- Config file: #{options[v.to_sym]}" if options[v.to_sym]
23
+ output << "- #{v}: #{options[v.to_sym]}" if options[v.to_sym]
24
24
  end
25
25
  puts output.join("\n")
26
26
 
@@ -1,5 +1,6 @@
1
1
  require 'logger'
2
2
  require 'slack-notifier'
3
+ require 'uri'
3
4
 
4
5
  module EnvChecker
5
6
  class ConfigurationError < StandardError; end
@@ -18,17 +19,32 @@ module EnvChecker
18
19
  @logger = Logger.new(STDERR)
19
20
  end
20
21
 
21
- def valid?
22
- # TODO: check types and raise invalid config
23
- true
24
- end
25
-
26
22
  def after_initialize
23
+ valid?
24
+
27
25
  @slack_webhook_url &&
28
26
  @slack_webhook_url != '' &&
29
27
  @slack_notifier = Slack::Notifier.new(@slack_webhook_url)
30
28
 
31
29
  true
32
30
  end
31
+
32
+ private
33
+
34
+ def valid?
35
+ if required_variables && required_variables.class != Array
36
+ raise ConfigurationError.new("Invalid value required_variables: #{required_variables}")
37
+ end
38
+
39
+ if optional_variables && optional_variables.class != Array
40
+ raise ConfigurationError.new("Invalid value optional_variables: #{optional_variables}")
41
+ end
42
+
43
+ if slack_webhook_url && slack_webhook_url != ~ URI.regexp
44
+ raise ConfigurationError.new("Invalid value slack_webhook_url: #{slack_webhook_url}")
45
+ end
46
+
47
+ true
48
+ end
33
49
  end
34
50
  end
@@ -1,3 +1,3 @@
1
1
  module EnvChecker
2
- VERSION = '0.1.4'
2
+ VERSION = '0.1.5'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: env-checker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guillermo Guerrero Ibarra
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-11 00:00:00.000000000 Z
11
+ date: 2016-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.5.1
33
+ version: '1.5'
34
34
  type: :runtime
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.5.1
40
+ version: '1.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement