confoog 0.4.0 → 0.4.1
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 +4 -4
- data/README.md +1 -0
- data/lib/confoog.rb +21 -72
- data/lib/confoog/status.rb +113 -0
- data/lib/confoog/version.rb +1 -1
- metadata +3 -3
- data/lib/confoog/utility.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f947a6f8d6ac5314c4cc95283c0f96342073f5f0
|
4
|
+
data.tar.gz: ce1050b7ef2b58be9e4aacdee1fe209986474873
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88a306dd5acaabd9f402ca4a772f2a9dbff146beb4be81dfec2ece2461c4a953e3d59c018b87cecea7a53fd5a56192183bd109a79aaed33bbf56ddfa7b74ec78
|
7
|
+
data.tar.gz: 17f9def6311f6ad7f41ee7fe52b23135d60c1fd41e84d888c6cb02b6e2d9604fdbb937f5191150320d4335a07bce0eb7987c9a016ee9fc373dee0940d1158d81
|
data/README.md
CHANGED
@@ -114,6 +114,7 @@ ERR_CANT_CREATE_FILE = 4 # cannot create the requested configuration file
|
|
114
114
|
ERR_NOT_WRITING_EMPTY_FILE = 8 # not attempting to save an empty configuration
|
115
115
|
ERR_CANT_SAVE_CONFIGURATION = 16 # Failed to save the configuration file
|
116
116
|
ERR_NOT_LOADING_EMPTY_FILE = 32 # not atempting to load an empty config file
|
117
|
+
ERR_CANT_LOAD = 64 # Cannot load configuration data from file.
|
117
118
|
|
118
119
|
INFO_FILE_CREATED = 256 # Information - specified file was created
|
119
120
|
INFO_FILE_LOADED = 512 # Information - Config file was loaded successfully
|
data/lib/confoog.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'confoog/version'
|
2
|
-
require 'confoog/
|
2
|
+
require 'confoog/status'
|
3
3
|
require 'yaml'
|
4
4
|
|
5
5
|
# rubocop:disable LineLength
|
@@ -10,37 +10,6 @@ module Confoog
|
|
10
10
|
# The default filename used if none specified when created.
|
11
11
|
DEFAULT_CONFIG = '.confoog'
|
12
12
|
|
13
|
-
# Error messages to be returned
|
14
|
-
|
15
|
-
# No error condition exists
|
16
|
-
ERR_NO_ERROR = 0
|
17
|
-
# The specified file does not exist
|
18
|
-
ERR_FILE_NOT_EXIST = 1
|
19
|
-
# You cannot change location or filename after class is instantiated
|
20
|
-
ERR_CANT_CHANGE = 2
|
21
|
-
# Was unable to create the specified file
|
22
|
-
ERR_CANT_CREATE_FILE = 4
|
23
|
-
# There are no configuration variables set, so not writing empty file
|
24
|
-
ERR_NOT_WRITING_EMPTY_FILE = 8
|
25
|
-
# Cannot save to the specified file for some reason
|
26
|
-
ERR_CANT_SAVE_CONFIGURATION = 16
|
27
|
-
# The specified file is empty so not trying to load settings from it
|
28
|
-
ERR_NOT_LOADING_EMPTY_FILE = 32
|
29
|
-
|
30
|
-
# Info messages to be returned
|
31
|
-
|
32
|
-
# Information - file was created successfully
|
33
|
-
INFO_FILE_CREATED = 256
|
34
|
-
# Information - configuration was successfully loaded
|
35
|
-
INFO_FILE_LOADED = 512
|
36
|
-
|
37
|
-
# Hash containing text versions of the assorted error severity.
|
38
|
-
OUTPUT_SEVERITY = {
|
39
|
-
ERR: 'Error',
|
40
|
-
WARN: 'Warning',
|
41
|
-
INFO: 'Information'
|
42
|
-
}
|
43
|
-
|
44
13
|
# Hash containing default values of initialization variables
|
45
14
|
DEFAULT_OPTIONS = {
|
46
15
|
create_file: false,
|
@@ -84,7 +53,6 @@ module Confoog
|
|
84
53
|
# settings[50][:two]
|
85
54
|
# # => "for the show"
|
86
55
|
class Settings
|
87
|
-
include ConfoogUtils
|
88
56
|
attr_reader :filename, :location, :status
|
89
57
|
|
90
58
|
# rubocop:enable LineLength
|
@@ -100,14 +68,14 @@ module Confoog
|
|
100
68
|
@options.default = false
|
101
69
|
|
102
70
|
# Hash containing any error or return from methods
|
103
|
-
@status =
|
71
|
+
@status = Status.new(@options[:quiet], @options[:prefix])
|
104
72
|
@location = @options[:location]
|
105
73
|
@filename = @options[:filename]
|
106
74
|
|
107
75
|
@config = {}
|
108
76
|
|
109
77
|
# clear the error condition as default.
|
110
|
-
|
78
|
+
@status.clear_error
|
111
79
|
# make sure the file exists or can be created...
|
112
80
|
check_exists(options)
|
113
81
|
|
@@ -115,7 +83,7 @@ module Confoog
|
|
115
83
|
load unless @options[:autoload] == false
|
116
84
|
end
|
117
85
|
|
118
|
-
# Return the value of the '
|
86
|
+
# Return the value of the 'autosave' option.
|
119
87
|
# @example
|
120
88
|
# autosave_status = settings.autosave
|
121
89
|
# => true
|
@@ -125,7 +93,7 @@ module Confoog
|
|
125
93
|
@options[:autosave]
|
126
94
|
end
|
127
95
|
|
128
|
-
# Change the '
|
96
|
+
# Change the 'autosave' option.
|
129
97
|
# @example
|
130
98
|
# settings.autosave = false
|
131
99
|
# => false
|
@@ -141,7 +109,7 @@ module Confoog
|
|
141
109
|
# @param [None]
|
142
110
|
# @return [Boolean] True if we are not writing to the console on error
|
143
111
|
def quiet
|
144
|
-
@
|
112
|
+
@status.quiet
|
145
113
|
end
|
146
114
|
|
147
115
|
# Change the 'quiet' option.
|
@@ -150,7 +118,7 @@ module Confoog
|
|
150
118
|
# @return [Boolean] The new value [true | false]
|
151
119
|
# @param quiet [Boolean] True to send messages to console for errors.
|
152
120
|
def quiet=(quiet)
|
153
|
-
@
|
121
|
+
@status.quiet = quiet
|
154
122
|
end
|
155
123
|
|
156
124
|
# Save the entire configuration (@config) to the YAML file.
|
@@ -162,9 +130,7 @@ module Confoog
|
|
162
130
|
if @config.count > 0
|
163
131
|
save_to_yaml
|
164
132
|
else
|
165
|
-
|
166
|
-
OUTPUT_SEVERITY[:WARN])
|
167
|
-
status_set(errors: ERR_NOT_WRITING_EMPTY_FILE)
|
133
|
+
@status.set(errors: Status::ERR_NOT_WRITING_EMPTY_FILE)
|
168
134
|
end
|
169
135
|
end
|
170
136
|
|
@@ -175,33 +141,28 @@ module Confoog
|
|
175
141
|
# @return Unspecified
|
176
142
|
def load
|
177
143
|
@config = YAML.load_file(config_path)
|
178
|
-
|
144
|
+
@status.set(errors: Status::INFO_FILE_LOADED)
|
179
145
|
if @config == false
|
180
|
-
console_output("Configuration file #{config_path} is empty!",
|
181
|
-
|
182
|
-
|
146
|
+
# console_output("Configuration file #{config_path} is empty!",
|
147
|
+
# OUTPUT_SEVERITY[:WARN])
|
148
|
+
@status.set(errors: Status::ERR_NOT_LOADING_EMPTY_FILE)
|
183
149
|
end
|
184
150
|
rescue
|
185
|
-
|
186
|
-
OUTPUT_SEVERITY[:ERR])
|
151
|
+
@status.set(errors: Status::ERR_CANT_LOAD)
|
187
152
|
end
|
188
153
|
|
189
154
|
# dummy method currently to stop changing location by caller once created,
|
190
155
|
# @return [hash] an error flag in the ':status' variable.
|
191
156
|
# @param [Optional] Parameter is ignored
|
192
157
|
def location=(*)
|
193
|
-
|
194
|
-
console_output('Cannot change file location after creation',
|
195
|
-
OUTPUT_SEVERITY[:WARN])
|
158
|
+
@status.set(errors: Status::ERR_CANT_CHANGE)
|
196
159
|
end
|
197
160
|
|
198
161
|
# dummy method currently to stop changing filename by caller once created,
|
199
162
|
# @return [hash] an error flag in the ':status' variable.
|
200
163
|
# @param optional Parameter is ignored
|
201
164
|
def filename=(*)
|
202
|
-
|
203
|
-
console_output('Cannot change filename after creation',
|
204
|
-
OUTPUT_SEVERITY[:WARN])
|
165
|
+
@status.set(errors: Status::ERR_CANT_CHANGE)
|
205
166
|
end
|
206
167
|
|
207
168
|
# Read the configuration key (key)
|
@@ -213,7 +174,7 @@ module Confoog
|
|
213
174
|
end
|
214
175
|
|
215
176
|
# Set a configuration key.
|
216
|
-
# If
|
177
|
+
# If autosave: true then will also update the config file (default is true)
|
217
178
|
# @example
|
218
179
|
# settings[:key] = "Value"
|
219
180
|
# settings[:array] = ["first", "second", "third"]
|
@@ -239,37 +200,25 @@ module Confoog
|
|
239
200
|
file.write(@config.to_yaml)
|
240
201
|
file.close
|
241
202
|
rescue
|
242
|
-
|
243
|
-
console_output("Cannot save configuration data to #{config_path}",
|
244
|
-
OUTPUT_SEVERITY[:ERR])
|
203
|
+
@status.set(errors: Status::ERR_CANT_SAVE_CONFIGURATION)
|
245
204
|
end
|
246
205
|
|
247
206
|
def create_new_file
|
248
207
|
File.new(config_path, 'w').close
|
249
|
-
|
208
|
+
@status.set(config_exists: true, errors: Status::INFO_FILE_CREATED)
|
250
209
|
rescue
|
251
|
-
|
252
|
-
console_output('Cannot create the specified Configuration file!',
|
253
|
-
OUTPUT_SEVERITY[:ERR])
|
254
|
-
end
|
255
|
-
|
256
|
-
def status_set(status)
|
257
|
-
status.each do |key, value|
|
258
|
-
@status[key] = value
|
259
|
-
end
|
210
|
+
@status.set(config_exists: false, errors: Status::ERR_CANT_CREATE_FILE)
|
260
211
|
end
|
261
212
|
|
262
213
|
def check_exists(options)
|
263
|
-
|
214
|
+
@status[:config_exists] = true
|
264
215
|
return if File.exist?(config_path)
|
265
216
|
|
266
217
|
# file does not exist so we create if requested otherwise error out
|
267
218
|
if options[:create_file] == true
|
268
219
|
create_new_file
|
269
220
|
else
|
270
|
-
|
271
|
-
console_output('The specified Configuration file does not exist.',
|
272
|
-
OUTPUT_SEVERITY[:ERR])
|
221
|
+
@status.set(config_exists: false, errors: Status::ERR_FILE_NOT_EXIST)
|
273
222
|
end
|
274
223
|
end
|
275
224
|
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
# Provide error messages and console output when required.
|
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
|
+
# No error condition exists
|
10
|
+
ERR_NO_ERROR = 0
|
11
|
+
# The specified file does not exist
|
12
|
+
ERR_FILE_NOT_EXIST = 1
|
13
|
+
# You cannot change location or filename after class is instantiated
|
14
|
+
ERR_CANT_CHANGE = 2
|
15
|
+
# Was unable to create the specified file
|
16
|
+
ERR_CANT_CREATE_FILE = 4
|
17
|
+
# There are no configuration variables set, so not writing empty file
|
18
|
+
ERR_NOT_WRITING_EMPTY_FILE = 8
|
19
|
+
# Cannot save to the specified file for some reason
|
20
|
+
ERR_CANT_SAVE_CONFIGURATION = 16
|
21
|
+
# The specified file is empty so not trying to load settings from it
|
22
|
+
ERR_NOT_LOADING_EMPTY_FILE = 32
|
23
|
+
# Cannot load the specified file for some reason.
|
24
|
+
ERR_CANT_LOAD = 64
|
25
|
+
|
26
|
+
# Information - file was created successfully
|
27
|
+
INFO_FILE_CREATED = 256
|
28
|
+
# Information - configuration was successfully loaded
|
29
|
+
INFO_FILE_LOADED = 512
|
30
|
+
|
31
|
+
# Hash containing text versions of the assorted error severity.
|
32
|
+
OUTPUT_SEVERITY = {
|
33
|
+
ERR: 'Error',
|
34
|
+
WARN: 'Warning',
|
35
|
+
INFO: 'Information'
|
36
|
+
}
|
37
|
+
|
38
|
+
# Hash containing the error messages for each ERR condition. If an ERR does
|
39
|
+
# not have a message, there will be no output.
|
40
|
+
ERROR_STRINGS = {
|
41
|
+
ERR_FILE_NOT_EXIST => 'The specified Configuration file does not exist.',
|
42
|
+
ERR_CANT_CHANGE => 'Cannot change filename after creation',
|
43
|
+
ERR_CANT_CREATE_FILE => 'Cannot create the specified Configuration file!',
|
44
|
+
ERR_NOT_WRITING_EMPTY_FILE => 'Not saving empty configuration data!',
|
45
|
+
ERR_CANT_SAVE_CONFIGURATION => 'Cannot save configuration data!',
|
46
|
+
ERR_NOT_LOADING_EMPTY_FILE => 'The configuration file is empty!',
|
47
|
+
ERR_CANT_LOAD => 'Cannot load configuration Data!'
|
48
|
+
}
|
49
|
+
|
50
|
+
# Class initializer.
|
51
|
+
# @example
|
52
|
+
# status = Status.new(quiet: true, prefix: "My Fab App")
|
53
|
+
# @param quiet [Boolean] Do we output to the console?
|
54
|
+
# @param prefix [String] Prefix to put before any error message.
|
55
|
+
def initialize(quiet, prefix)
|
56
|
+
# Initialize the status container to an empty hash. Will return nil
|
57
|
+
# for missing keys by default.
|
58
|
+
@status = {}
|
59
|
+
@quiet = quiet
|
60
|
+
@prefix = prefix
|
61
|
+
end
|
62
|
+
|
63
|
+
# Clear the error status.
|
64
|
+
# @example
|
65
|
+
# status.clear_error
|
66
|
+
# @return [Integer] 0
|
67
|
+
def clear_error
|
68
|
+
@status[:errors] = ERR_NO_ERROR
|
69
|
+
end
|
70
|
+
|
71
|
+
# Read the value of a status.
|
72
|
+
# @example
|
73
|
+
# key = status[:key]
|
74
|
+
# @return [<various>] Return value depends on the type of variable stored
|
75
|
+
def [](key)
|
76
|
+
@status[key]
|
77
|
+
end
|
78
|
+
|
79
|
+
# Set the value of status.
|
80
|
+
# @example
|
81
|
+
# status[:key] = "Value"
|
82
|
+
# status[:error] = ERR_NOT_LOADING_EMPTY_FILE
|
83
|
+
# @param key [Any] Key name to be added or updated.
|
84
|
+
# @param value [Any] New value for the status. May be any type.
|
85
|
+
# @return [<various>] Returns the value that was assigned.
|
86
|
+
def []=(key, value)
|
87
|
+
@status[key] = value
|
88
|
+
end
|
89
|
+
|
90
|
+
# Set one or multiple status variables, optionally outputing a console
|
91
|
+
# message if one exists for that status.
|
92
|
+
# @example
|
93
|
+
# status.set(errors: Status::ERR_CANT_SAVE_CONFIGURATION)
|
94
|
+
# @param status [Hash] one or more hash-pairs of status information.
|
95
|
+
# @return Unspecified
|
96
|
+
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)
|
103
|
+
end
|
104
|
+
|
105
|
+
private
|
106
|
+
|
107
|
+
# Display output to the console with the severity noted, unless we are quiet.
|
108
|
+
# @param [String] message
|
109
|
+
def console_output(message, severity)
|
110
|
+
return unless @quiet == false
|
111
|
+
$stderr.puts "#{@prefix} : #{severity} - #{message}"
|
112
|
+
end
|
113
|
+
end
|
data/lib/confoog/version.rb
CHANGED
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.
|
4
|
+
version: 0.4.1
|
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-
|
11
|
+
date: 2015-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -154,7 +154,7 @@ files:
|
|
154
154
|
- bin/setup
|
155
155
|
- confoog.gemspec
|
156
156
|
- lib/confoog.rb
|
157
|
-
- lib/confoog/
|
157
|
+
- lib/confoog/status.rb
|
158
158
|
- lib/confoog/version.rb
|
159
159
|
homepage: https://github.com/seapagan/confoog
|
160
160
|
licenses:
|
data/lib/confoog/utility.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
# A collection of utility functions for the Confoog class
|
2
|
-
module ConfoogUtils
|
3
|
-
private
|
4
|
-
|
5
|
-
# Display output to the console with the severity noted, unless we are quiet.
|
6
|
-
def console_output(message, severity)
|
7
|
-
return unless @options[:quiet] == false
|
8
|
-
$stderr.puts "#{@options[:prefix]} : #{severity} - #{message}"
|
9
|
-
end
|
10
|
-
end
|