confoog 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +7 -1
- data/confoog.gemspec +1 -0
- data/lib/confoog/version.rb +3 -1
- data/lib/confoog.rb +92 -11
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67eda83fbbfd733612d64817a500c788eed105ad
|
4
|
+
data.tar.gz: 5e7f0886f7c014be9522d42dbd451b00ee605420
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 905bae34ff999f4ebe7d81bb41e0bc758ea1266eddc8162dba47e424fe4d233a640ebe8d26cf7ca8c3f2fcdb47c02d33b627db236478a7624d6486db6869588a
|
7
|
+
data.tar.gz: f9067c187fb8b99f234c3d7fbbcee109e62185c62e638564b833a80750fc756fe1ef493e11397ef75dd282410db366077f7cf3eaf8823371048a2ee23ec276d8
|
data/Rakefile
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
require 'rspec/core/rake_task'
|
3
3
|
require 'rubocop/rake_task'
|
4
|
+
require 'inch/rake'
|
4
5
|
|
5
6
|
RSpec::Core::RakeTask.new(:spec)
|
7
|
+
|
6
8
|
RuboCop::RakeTask.new do |task|
|
7
9
|
task.options << 'lib'
|
8
10
|
end
|
11
|
+
Inch::Rake::Suggest.new do |suggest|
|
12
|
+
suggest.args << "--pedantic"
|
13
|
+
end
|
14
|
+
|
9
15
|
|
10
|
-
task default: [:rubocop, :spec]
|
16
|
+
task default: [:rubocop, :inch, :spec]
|
data/confoog.gemspec
CHANGED
data/lib/confoog/version.rb
CHANGED
data/lib/confoog.rb
CHANGED
@@ -1,30 +1,46 @@
|
|
1
1
|
require 'confoog/version'
|
2
2
|
require 'yaml'
|
3
3
|
|
4
|
+
# rubocop:disable LineLength
|
5
|
+
|
4
6
|
# Overall module.
|
5
7
|
# Contains Class Confoog::Settings
|
6
8
|
module Confoog
|
9
|
+
# The default filename used if none specified when created.
|
7
10
|
DEFAULT_CONFIG = '.confoog'
|
8
11
|
|
9
12
|
# Error messages to be returned
|
13
|
+
|
14
|
+
# No error condition exists
|
10
15
|
ERR_NO_ERROR = 0
|
16
|
+
# The specified file does not exist
|
11
17
|
ERR_FILE_NOT_EXIST = 1
|
18
|
+
# You cannot change location or filename after class is instantiated
|
12
19
|
ERR_CANT_CHANGE = 2
|
20
|
+
# Was unable to create the specified file
|
13
21
|
ERR_CANT_CREATE_FILE = 4
|
22
|
+
# There are no configuration variables set, so not writing empty file
|
14
23
|
ERR_NOT_WRITING_EMPTY_FILE = 8
|
24
|
+
# Cannot save to the specified file for some reason
|
15
25
|
ERR_CANT_SAVE_CONFIGURATION = 16
|
26
|
+
# The specified file is empty so not trying to load settings from it
|
16
27
|
ERR_NOT_LOADING_EMPTY_FILE = 32
|
17
28
|
|
18
29
|
# Info messages to be returned
|
30
|
+
|
31
|
+
# Information - file was created successfully
|
19
32
|
INFO_FILE_CREATED = 256
|
33
|
+
# Information - configuration was successfully loaded
|
20
34
|
INFO_FILE_LOADED = 512
|
21
35
|
|
36
|
+
# Hash containing text versions of the assorted error severity.
|
22
37
|
OUTPUT_SEVERITY = {
|
23
38
|
ERR: 'Error',
|
24
39
|
WARN: 'Warning',
|
25
40
|
INFO: 'Information'
|
26
41
|
}
|
27
42
|
|
43
|
+
# Hash containing default values of initialization variables
|
28
44
|
DEFAULT_OPTIONS = {
|
29
45
|
create_file: false,
|
30
46
|
quiet: false,
|
@@ -33,21 +49,53 @@ module Confoog
|
|
33
49
|
filename: DEFAULT_CONFIG
|
34
50
|
}
|
35
51
|
|
36
|
-
# Class : Settings.
|
37
52
|
# Provide an encapsulated class to access a YAML configuration file.
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
41
|
-
#
|
53
|
+
# @!attribute [r] filename
|
54
|
+
# @return [String] The configuration filename in use.
|
55
|
+
# @!attribute [r] location
|
56
|
+
# @return [String] The directory storing the configuration file.
|
57
|
+
# @!attribute [r] status
|
58
|
+
# @return [Hash] A hash containing status variables.
|
59
|
+
# @example
|
60
|
+
# require 'confoog'
|
61
|
+
# settings = Confoog::Settings.new
|
62
|
+
# settings[:var] = value
|
63
|
+
# settings[:array] = [1, 2, 3, 4]
|
64
|
+
# settings[42] = "Meaning of life"
|
65
|
+
# settings[:urls] = ["https://www.mywebsite.com", "https://www.anothersite.com/a/page.html"]
|
66
|
+
#
|
67
|
+
# settings[:urls].each do |url|
|
68
|
+
# puts url
|
69
|
+
# end
|
70
|
+
# # https://www.mywebsite.com
|
71
|
+
# # https://www.anothersite.com/a/page.html
|
72
|
+
# # => ["https://www.mywebsite.com", "https://www.anothersite.com/a/page.html"]
|
73
|
+
#
|
74
|
+
# settings[:dont_exist]
|
75
|
+
# # => nil
|
76
|
+
#
|
77
|
+
# a_variable = 50
|
78
|
+
# settings[a_variable] = {:one => "for the money", :two => "for the show", :three => "to get ready"}
|
79
|
+
# settings[50]
|
80
|
+
# # => {:one => "for the money", :two => "for the show", :three => "to get ready"}
|
81
|
+
# settings[50][:two]
|
82
|
+
# # => "for the show"
|
42
83
|
class Settings
|
43
84
|
attr_reader :filename, :location, :status
|
44
85
|
|
86
|
+
# rubocop:enable LineLength
|
87
|
+
|
88
|
+
# Setup the class with specified parameters or default values if any or all
|
89
|
+
# are absent.
|
90
|
+
# All parameters are optional.
|
91
|
+
# @param options [Hash] Hash value containing any passed parameters.
|
45
92
|
def initialize(options = {})
|
46
93
|
# merge default options to avoid ambiguity
|
47
94
|
@options = DEFAULT_OPTIONS.merge(options)
|
48
95
|
# set all other unset options to return false instead of Nul.
|
49
96
|
@options.default = false
|
50
97
|
|
98
|
+
# Hash containing any error or return from methods
|
51
99
|
@status = {}
|
52
100
|
@location = @options[:location]
|
53
101
|
@filename = @options[:filename]
|
@@ -60,14 +108,29 @@ module Confoog
|
|
60
108
|
check_exists(options)
|
61
109
|
end
|
62
110
|
|
111
|
+
# Return the value of the 'quiet' option.
|
112
|
+
# @example
|
113
|
+
# is_quiet = settings.quiet
|
114
|
+
# @param [None]
|
115
|
+
# @return [Boolean] True if we are not writing to the console on error
|
63
116
|
def quiet
|
64
117
|
@options[:quiet]
|
65
118
|
end
|
66
119
|
|
120
|
+
# Change the 'quiet' option.
|
121
|
+
# @example
|
122
|
+
# settings.quiet = true
|
123
|
+
# @return [Boolean] The new value [true | false]
|
124
|
+
# @param quiet [Boolean] True to send messages to console for errors.
|
67
125
|
def quiet=(quiet)
|
68
126
|
@options[:quiet] = quiet
|
69
127
|
end
|
70
128
|
|
129
|
+
# Save the entire configuration (@config) to the YAML file.
|
130
|
+
# @example
|
131
|
+
# settings.save
|
132
|
+
# @param [None]
|
133
|
+
# @return Unspecified
|
71
134
|
def save
|
72
135
|
if @config.count > 0
|
73
136
|
save_to_yaml
|
@@ -78,6 +141,11 @@ module Confoog
|
|
78
141
|
end
|
79
142
|
end
|
80
143
|
|
144
|
+
# Populate the configuration (@config) from the YAML file.
|
145
|
+
# @param [None]
|
146
|
+
# @example
|
147
|
+
# settings.load
|
148
|
+
# @return Unspecified
|
81
149
|
def load
|
82
150
|
@config = YAML.load_file(config_path)
|
83
151
|
status_set(errors: INFO_FILE_LOADED)
|
@@ -91,32 +159,45 @@ module Confoog
|
|
91
159
|
OUTPUT_SEVERITY[:ERR])
|
92
160
|
end
|
93
161
|
|
162
|
+
# dummy method currently to stop changing location by caller once created,
|
163
|
+
# @return [hash] an error flag in the ':status' variable.
|
164
|
+
# @param [Optional] Parameter is ignored
|
94
165
|
def location=(*)
|
95
|
-
# dummy method currently to stop changing location by caller once created,
|
96
|
-
# but not raise error.
|
97
|
-
# - Return an error flag in the ':status' variable.
|
98
166
|
status_set(errors: ERR_CANT_CHANGE)
|
99
167
|
console_output('Cannot change file location after creation',
|
100
168
|
OUTPUT_SEVERITY[:WARN])
|
101
169
|
end
|
102
170
|
|
171
|
+
# dummy method currently to stop changing filename by caller once created,
|
172
|
+
# @return [hash] an error flag in the ':status' variable.
|
173
|
+
# @param optional Parameter is ignored
|
103
174
|
def filename=(*)
|
104
|
-
# dummy method currently to stop changing filename by caller once created,
|
105
|
-
# but not raise error.
|
106
|
-
# - Return an error flag in the ':status' variable.
|
107
175
|
status_set(errors: ERR_CANT_CHANGE)
|
108
176
|
console_output('Cannot change filename after creation',
|
109
177
|
OUTPUT_SEVERITY[:WARN])
|
110
178
|
end
|
111
179
|
|
180
|
+
# Read the configuration key (key)
|
181
|
+
# @example
|
182
|
+
# key = settings[:key]
|
183
|
+
# @return [<various>] Return value depends on the type of variable stored
|
112
184
|
def [](key)
|
113
185
|
@config[key]
|
114
186
|
end
|
115
187
|
|
188
|
+
# Set a configuration key
|
189
|
+
# @example
|
190
|
+
# settings[:key] = "Value"
|
191
|
+
# settings[:array] = ["first", "second", "third"]
|
192
|
+
# @return [<various>] Returns the variable that was assigned.
|
116
193
|
def []=(key, value)
|
117
194
|
@config[key] = value
|
118
195
|
end
|
119
196
|
|
197
|
+
# Returns the fully qualified path to the configuration file in use.
|
198
|
+
# @example
|
199
|
+
# path = config_path
|
200
|
+
# @return [String] Full path and filename of the configuration file.
|
120
201
|
def config_path
|
121
202
|
File.expand_path(File.join(@location, @filename))
|
122
203
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: confoog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seapagan
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: inch
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
description: A simple Gem to add YAML configuration files to your Ruby script or Gem
|
112
126
|
email:
|
113
127
|
- seapagan@gmail.com
|