confoog 0.4.2 → 0.4.3

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: a220c741772bd56e80ac5e99f16975c1d53c4260
4
- data.tar.gz: 4567baf4606fe935fdff4d78946891a9339e4ad4
3
+ metadata.gz: 9422eaf268b310c4933473e850ae17b7cb2af2fe
4
+ data.tar.gz: f19cf7d265b7d48023c3246c3ff33e9c25c7e4d1
5
5
  SHA512:
6
- metadata.gz: 2d7b337afa691225075653fc47a7b8bcedb20c50249ac9949d4450acf4e3a6759af35f64c490a5586d02537ca945573316c3d9c98da171a15812ad91dcb5541b
7
- data.tar.gz: 22284144648177edba6e42c05bb983584863a98782a4467a7657786d7cb0bdee5eb781326acd2a11932183e76de9e38980f40cea39cd5d0a0084dcfaf12ee1b4
6
+ metadata.gz: 95a01b11a275022152f9de1b8cd0b1711f3fcfd78db7b21a96e77af83a32e705bacb12c0f10cd0d3c79b2ddccebfb573b6da8fb9b4eb735955064089de40292a
7
+ data.tar.gz: 455181a8fc2b81bff5ab62a7dbad00c10e72141b3c28e13d67fe8520d6aefad5c1c19b62c45fd99b3d36c48ded2e0bae165f7d4e42ffc60a3b9e3ca63cb2fa7c
data/.pullreview.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ notifications:
3
+ pullrequest:
4
+ comment: verbose
data/README.md CHANGED
@@ -110,12 +110,11 @@ Confoog will set the following error constants which will be returned in the `.s
110
110
  ```ruby
111
111
  ERR_NO_ERROR = 0 # no error condition, command was succesfull
112
112
  ERR_FILE_NOT_EXIST = 1 # specified configuration file does not exist
113
- ERR_CANT_CHANGE = 2 # directory and file can only be specified through `.new()`
114
- ERR_CANT_CREATE_FILE = 4 # cannot create the requested configuration file
115
- ERR_NOT_WRITING_EMPTY_FILE = 8 # not attempting to save an empty configuration
116
- ERR_CANT_SAVE_CONFIGURATION = 16 # Failed to save the configuration file
117
- ERR_NOT_LOADING_EMPTY_FILE = 32 # not atempting to load an empty config file
118
- ERR_CANT_LOAD = 64 # Cannot load configuration data from file.
113
+ ERR_CANT_CREATE_FILE = 2 # cannot create the requested configuration file
114
+ ERR_NOT_WRITING_EMPTY_FILE = 4 # not attempting to save an empty configuration
115
+ ERR_CANT_SAVE_CONFIGURATION = 8 # Failed to save the configuration file
116
+ ERR_NOT_LOADING_EMPTY_FILE = 16 # not atempting to load an empty config file
117
+ ERR_CANT_LOAD = 32 # Cannot load configuration data from file.
119
118
 
120
119
  INFO_FILE_CREATED = 256 # Information - specified file was created
121
120
  INFO_FILE_LOADED = 512 # Information - Config file was loaded successfully
@@ -129,6 +128,7 @@ Thoughts in no particular order.
129
128
 
130
129
  - Restrict configuration variables to a specified subset, or to only those that already exist in the YAML file.
131
130
  - A better way of dealing with multi-level variables - i.e. nested arrays, hashes etc.
131
+ - Write standalone tests for the 'Status' class - right now it is tested at 100% by the application tests though would probably be good to have dedicated tests too
132
132
 
133
133
  ## Development
134
134
 
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rspec/core/rake_task'
3
3
  require 'rubocop/rake_task'
4
+ require 'reek/rake/task'
4
5
  require 'inch/rake'
5
6
 
6
7
  RSpec::Core::RakeTask.new(:spec)
@@ -8,8 +9,15 @@ RSpec::Core::RakeTask.new(:spec)
8
9
  RuboCop::RakeTask.new do |task|
9
10
  task.options << 'lib'
10
11
  end
12
+
11
13
  Inch::Rake::Suggest.new do |suggest|
12
14
  suggest.args << '--pedantic'
13
15
  end
14
16
 
15
- task default: [:rubocop, :inch, :spec]
17
+ Reek::Rake::Task.new do |t|
18
+ t.fail_on_error = false
19
+ t.verbose = true
20
+ t.reek_opts = '-U'
21
+ end
22
+
23
+ task default: [:rubocop, :inch, :reek, :spec]
data/confoog.gemspec CHANGED
@@ -30,4 +30,6 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'rubocop'
31
31
  spec.add_development_dependency 'inch'
32
32
  spec.add_development_dependency 'simplecov', '~> 0.10'
33
+ spec.add_development_dependency 'pullreview-coverage'
34
+ spec.add_development_dependency 'reek', '~> 3.3'
33
35
  end
data/lib/confoog.rb CHANGED
@@ -22,10 +22,6 @@ module Confoog
22
22
  }
23
23
 
24
24
  # Provide an encapsulated class to access a YAML configuration file.
25
- # @!attribute [r] filename
26
- # @return [String] The configuration filename in use.
27
- # @!attribute [r] location
28
- # @return [String] The directory storing the configuration file.
29
25
  # @!attribute [r] status
30
26
  # @return [Hash] A hash containing status variables.
31
27
  # @example
@@ -53,7 +49,7 @@ module Confoog
53
49
  # settings[50][:two]
54
50
  # # => "for the show"
55
51
  class Settings
56
- attr_reader :filename, :location, :status
52
+ attr_reader :status
57
53
 
58
54
  # rubocop:enable LineLength
59
55
 
@@ -69,13 +65,12 @@ module Confoog
69
65
 
70
66
  # Hash containing any error or return from methods
71
67
  @status = Status.new(@options[:quiet], @options[:prefix])
72
- @location = @options[:location]
73
- @filename = @options[:filename]
68
+ # clear the error condition as default.
69
+ @status.clear_error
74
70
 
71
+ # Initialize the Configuration to and empty hash.
75
72
  @config = {}
76
73
 
77
- # clear the error condition as default.
78
- @status.clear_error
79
74
  # make sure the file exists or can be created...
80
75
  check_exists(options)
81
76
 
@@ -149,20 +144,6 @@ module Confoog
149
144
  @status.set(errors: Status::ERR_CANT_LOAD)
150
145
  end
151
146
 
152
- # dummy method currently to stop changing location by caller once created,
153
- # @return [hash] an error flag in the ':status' variable.
154
- # @param [Optional] Parameter is ignored
155
- def location=(*)
156
- @status.set(errors: Status::ERR_CANT_CHANGE)
157
- end
158
-
159
- # dummy method currently to stop changing filename by caller once created,
160
- # @return [hash] an error flag in the ':status' variable.
161
- # @param optional Parameter is ignored
162
- def filename=(*)
163
- @status.set(errors: Status::ERR_CANT_CHANGE)
164
- end
165
-
166
147
  # Read the configuration key (key)
167
148
  # @example
168
149
  # key = settings[:key]
@@ -188,7 +169,7 @@ module Confoog
188
169
  # path = config_path
189
170
  # @return [String] Full path and filename of the configuration file.
190
171
  def config_path
191
- File.expand_path(File.join(@location, @filename))
172
+ File.expand_path(File.join(@options[:location], @options[:filename]))
192
173
  end
193
174
 
194
175
  private
@@ -198,9 +179,7 @@ module Confoog
198
179
  @status.set(config_exists: false, errors: Status::ERR_FILE_NOT_EXIST)
199
180
  return
200
181
  end
201
- file = File.open(config_path, 'w')
202
- file.write(@config.to_yaml)
203
- file.close
182
+ File.open(config_path, 'w') { |file| file.write(@config.to_yaml) }
204
183
  rescue
205
184
  @status.set(errors: Status::ERR_CANT_SAVE_CONFIGURATION)
206
185
  end
@@ -1,27 +1,19 @@
1
1
  # Provide error messages and console output when required.
2
2
  class Status
3
- # @!attribute prefix
4
- # @return [String] String to pre-pend on any error put to console
5
- attr_accessor :prefix
6
- # @!attribute quiet
7
- # @return [Boolean] Do we output anything to console or not
8
- attr_accessor :quiet
9
3
  # No error condition exists
10
4
  ERR_NO_ERROR = 0
11
5
  # The specified file does not exist
12
6
  ERR_FILE_NOT_EXIST = 1
13
- # You cannot change location or filename after class is instantiated
14
- ERR_CANT_CHANGE = 2
15
7
  # Was unable to create the specified file
16
- ERR_CANT_CREATE_FILE = 4
8
+ ERR_CANT_CREATE_FILE = 2
17
9
  # There are no configuration variables set, so not writing empty file
18
- ERR_NOT_WRITING_EMPTY_FILE = 8
10
+ ERR_NOT_WRITING_EMPTY_FILE = 4
19
11
  # Cannot save to the specified file for some reason
20
- ERR_CANT_SAVE_CONFIGURATION = 16
12
+ ERR_CANT_SAVE_CONFIGURATION = 8
21
13
  # The specified file is empty so not trying to load settings from it
22
- ERR_NOT_LOADING_EMPTY_FILE = 32
14
+ ERR_NOT_LOADING_EMPTY_FILE = 16
23
15
  # Cannot load the specified file for some reason.
24
- ERR_CANT_LOAD = 64
16
+ ERR_CANT_LOAD = 32
25
17
 
26
18
  # Information - file was created successfully
27
19
  INFO_FILE_CREATED = 256
@@ -39,7 +31,6 @@ class Status
39
31
  # not have a message, there will be no output.
40
32
  ERROR_STRINGS = {
41
33
  ERR_FILE_NOT_EXIST => 'The specified Configuration file does not exist.',
42
- ERR_CANT_CHANGE => 'Cannot change filename after creation',
43
34
  ERR_CANT_CREATE_FILE => 'Cannot create the specified Configuration file!',
44
35
  ERR_NOT_WRITING_EMPTY_FILE => 'Not saving empty configuration data!',
45
36
  ERR_CANT_SAVE_CONFIGURATION => 'Cannot save configuration data!',
@@ -56,8 +47,24 @@ class Status
56
47
  # Initialize the status container to an empty hash. Will return nil
57
48
  # for missing keys by default.
58
49
  @status = {}
59
- @quiet = quiet
60
- @prefix = prefix
50
+ # ititialize a hash to store our own internal options.
51
+ @options = {}
52
+ # and fill it.
53
+ @options[:quiet] = quiet
54
+ @options[:prefix] = prefix
55
+ end
56
+
57
+ # Set whether we output to the console or not
58
+ # @param quiet [Boolean] True to output Errors to the console.
59
+ # @return [Boolean] Value of #quiet
60
+ def quiet=(quiet)
61
+ @options[:quiet] = quiet
62
+ end
63
+
64
+ # return the current 'quiet' status
65
+ # @return [Boolean] Value of #quiet
66
+ def quiet
67
+ @options[:quiet]
61
68
  end
62
69
 
63
70
  # Clear the error status.
@@ -94,20 +101,22 @@ class Status
94
101
  # @param status [Hash] one or more hash-pairs of status information.
95
102
  # @return Unspecified
96
103
  def set(status)
97
- status.each do |key, value|
98
- @status[key] = value
99
- end
100
- return if ERROR_STRINGS[@status[:errors]].nil?
101
- severity = (@status[:errors] <= 64) ? 'Error' : 'Info'
102
- console_output(ERROR_STRINGS[@status[:errors]], severity)
104
+ status.each { |key, value| @status[key] = value }
105
+ return unless error_string
106
+ console_output(error_string, (@status[:errors] < 256) ? 'Error' : 'Info')
103
107
  end
104
108
 
105
109
  private
106
110
 
111
+ # return the error string corresponding to the current error number
112
+ def error_string
113
+ ERROR_STRINGS[@status[:errors]]
114
+ end
115
+
107
116
  # Display output to the console with the severity noted, unless we are quiet.
108
117
  # @param [String] message
109
118
  def console_output(message, severity)
110
- return unless @quiet == false
111
- $stderr.puts "#{@prefix} : #{severity} - #{message}"
119
+ return unless @options[:quiet] == false
120
+ $stderr.puts "#{@options[:prefix]} : #{severity} - #{message}"
112
121
  end
113
122
  end
@@ -1,6 +1,5 @@
1
1
  # Define the Gem version string
2
2
  module Confoog
3
- # Version of this Gem, using Semantic Versioning 2.0.1
4
3
  # http://semver.org/
5
- VERSION = '0.4.2'
4
+ VERSION = '0.4.3'
6
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confoog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seapagan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-13 00:00:00.000000000 Z
11
+ date: 2015-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -136,6 +136,34 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0.10'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pullreview-coverage
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: reek
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '3.3'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '3.3'
139
167
  description: A simple Gem to add YAML configuration files to your Ruby script or Gem
140
168
  email:
141
169
  - seapagan@gmail.com
@@ -144,6 +172,7 @@ extensions: []
144
172
  extra_rdoc_files: []
145
173
  files:
146
174
  - ".gitignore"
175
+ - ".pullreview.yml"
147
176
  - ".rspec"
148
177
  - ".travis.yml"
149
178
  - Gemfile