easy_app_helper 1.0.6 → 1.0.7
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 +22 -1
- data/easy_app_helper.gemspec +3 -3
- data/etc/test_internal.conf +3 -0
- data/lib/easy_app_helper/core/base.rb +49 -3
- data/lib/easy_app_helper/core/config.rb +22 -14
- data/lib/easy_app_helper/core/places.rb +19 -0
- data/lib/easy_app_helper/version.rb +1 -1
- data/spec/config_spec.rb +66 -23
- data/spec/logger_spec.rb +5 -4
- metadata +4 -12
- data/.gitignore +0 -48
- data/.travis.yml +0 -5
- data/test/test2_app.rb +0 -33
- data/test/test3_app.rb +0 -90
- data/test/test4_app.rb +0 -36
- data/test/test_app.rb +0 -56
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 977d7804e7e46cd53b44ea5587f02f3f6a085eb1
|
4
|
+
data.tar.gz: 0cd1dca9156798a14d84e679e3db53dd5025212b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0f6a267e9155055177284f6790216f519e74fc7c7da221d368f33384eea2f3248f0eb5617bd14400b7b770a1dcdeca77092efde60fd7b4c85c00a57ddad6cd9
|
7
|
+
data.tar.gz: 86d147b433243fa30559029539cdfd47d0b56d0b36dcfaf8784f2f1c830d65923b35a36285b0eaa39a8ad1f51729c3d9794f1a84454df1a2a7e552a093851c98
|
data/README.md
CHANGED
@@ -181,6 +181,23 @@ regarding the rules described above, the framework will for the following files
|
|
181
181
|
/etc/EasyAppHelper.Yaml
|
182
182
|
```
|
183
183
|
|
184
|
+
### Internal config file
|
185
|
+
|
186
|
+
This is an internal config file for the Gem itself. It will be located in the etc directory **inside** the Gem.
|
187
|
+
|
188
|
+
```text
|
189
|
+
# The :internal layer
|
190
|
+
etc/myscript.conf
|
191
|
+
etc/myscript.yml
|
192
|
+
etc/myscript.cfg
|
193
|
+
etc/myscript.yaml
|
194
|
+
etc/myscript.CFG
|
195
|
+
etc/myscript.YML
|
196
|
+
etc/myscript.YAML
|
197
|
+
etc/myscript.Yaml
|
198
|
+
```
|
199
|
+
|
200
|
+
|
184
201
|
### Application config files
|
185
202
|
|
186
203
|
Application config file names are determined from the config.script_filename property. It initially contains
|
@@ -224,7 +241,7 @@ ${HOME}/.config/myscript.Yaml
|
|
224
241
|
### Command line specified config file
|
225
242
|
|
226
243
|
The command line option ```--config-file``` provides a way to specify explicitly a config file. On top of this the
|
227
|
-
option ```--config-override``` tells **EasyAppHelper** to ignore :system, :global and :user levels.
|
244
|
+
option ```--config-override``` tells **EasyAppHelper** to ignore :system, :internal, :global and :user levels.
|
228
245
|
|
229
246
|
The file will be loaded in a separated layer called :specific_file
|
230
247
|
|
@@ -455,6 +472,10 @@ D, [2013-06-23T19:43:47.981934 #16294] DEBUG -- : Config layers:
|
|
455
472
|
:copyright: (c) 2012-2013 Nanonet
|
456
473
|
:source: /etc/EasyAppHelper.cfg
|
457
474
|
:origin: EasyAppHelper
|
475
|
+
:internal:
|
476
|
+
:content: {}
|
477
|
+
:source:
|
478
|
+
:origin: test4_app
|
458
479
|
:global:
|
459
480
|
:content: {}
|
460
481
|
:source:
|
data/easy_app_helper.gemspec
CHANGED
@@ -13,9 +13,9 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = "https://github.com/lbriais/easy_app_helper"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
|
-
spec.files = `git ls-files`.split($/)
|
17
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
16
|
+
spec.files = `git ls-files`.split($/).delete_if { |file| file =~ /^(bin|\.)/ or file =~ /test\d*_app\.rb$/ }
|
17
|
+
# spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features|etc)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler"
|
@@ -13,6 +13,7 @@ require 'slop'
|
|
13
13
|
|
14
14
|
class EasyAppHelper::Core::Base
|
15
15
|
CHANGED_BY_CODE = 'Changed by code'
|
16
|
+
INTRODUCED_SORTED_LAYERS = [:modified, :command_line]
|
16
17
|
|
17
18
|
attr_reader :script_filename, :app_name, :app_version, :app_description, :internal_configs, :logger
|
18
19
|
|
@@ -91,6 +92,35 @@ class EasyAppHelper::Core::Base
|
|
91
92
|
self
|
92
93
|
end
|
93
94
|
|
95
|
+
# Convenient method to set a value in a particular layer
|
96
|
+
# If the layer does not exist it is correctly created and filled in with the key/value couple
|
97
|
+
def set_value key, value, layer = nil
|
98
|
+
if layer.nil?
|
99
|
+
self[key] = value
|
100
|
+
return
|
101
|
+
end
|
102
|
+
unless layers.include? layer
|
103
|
+
internal_configs[layer] = {content: {}, source: 'Unknown source'}
|
104
|
+
logger.warn "Trying to modify a non existing config layer: \"#{layer.to_s}\". Automatically creating it..."
|
105
|
+
end
|
106
|
+
internal_configs[layer][:content][key] = value
|
107
|
+
end
|
108
|
+
|
109
|
+
def get_value key, layer = nil
|
110
|
+
if layer.nil?
|
111
|
+
return self[key]
|
112
|
+
end
|
113
|
+
res = nil
|
114
|
+
begin
|
115
|
+
res = internal_configs[layer][:content][key]
|
116
|
+
rescue => e
|
117
|
+
logger.warn "Trying to reading from a non existing config layer: \"#{layer}\". Returning nil for the key \"#{key}\"..."
|
118
|
+
end
|
119
|
+
res
|
120
|
+
end
|
121
|
+
|
122
|
+
|
123
|
+
|
94
124
|
# Any modification done to the config is in fact stored in the :modified layer of internal_configs
|
95
125
|
# @param [String] key
|
96
126
|
# @param [String] value
|
@@ -107,11 +137,27 @@ class EasyAppHelper::Core::Base
|
|
107
137
|
|
108
138
|
# @return [Array] List of layers
|
109
139
|
def layers
|
110
|
-
|
140
|
+
res = self.class.layers
|
141
|
+
internal_configs.keys.each do |layer|
|
142
|
+
next if res.include? layer
|
143
|
+
res << layer
|
144
|
+
end
|
145
|
+
res
|
111
146
|
end
|
112
147
|
|
148
|
+
def self.layers
|
149
|
+
res = []
|
150
|
+
self.ancestors.each do |klass|
|
151
|
+
next unless klass.is_a? Class
|
152
|
+
break if EasyAppHelper::Core::Base < klass
|
153
|
+
res << klass::INTRODUCED_SORTED_LAYERS.reverse
|
154
|
+
end
|
155
|
+
res.flatten.reverse
|
156
|
+
end
|
157
|
+
|
158
|
+
|
113
159
|
def find_layer(key)
|
114
|
-
|
160
|
+
layers.each do |layer|
|
115
161
|
return layer if internal_configs[layer][:content][key]
|
116
162
|
end
|
117
163
|
nil
|
@@ -149,7 +195,7 @@ class EasyAppHelper::Core::Base
|
|
149
195
|
when :'log-level'
|
150
196
|
logger.send :level=, value, false
|
151
197
|
when :'config-file'
|
152
|
-
|
198
|
+
set_value key, value, layer
|
153
199
|
force_reload
|
154
200
|
processed = true
|
155
201
|
end
|
@@ -45,6 +45,7 @@ class EasyAppHelper::Core::Config
|
|
45
45
|
include EasyAppHelper::Core::Config::Places.get_os_module
|
46
46
|
|
47
47
|
ADMIN_CONFIG_FILENAME = EasyAppHelper.name
|
48
|
+
INTRODUCED_SORTED_LAYERS = [:specific_file, :user, :global, :internal, :system]
|
48
49
|
|
49
50
|
# Potential extensions a config file can have
|
50
51
|
CONFIG_FILE_POSSIBLE_EXTENSIONS = %w(conf yml cfg yaml CFG YML YAML Yaml)
|
@@ -80,6 +81,7 @@ class EasyAppHelper::Core::Config
|
|
80
81
|
def load_config(force=false)
|
81
82
|
super()
|
82
83
|
load_layer_config :system, ADMIN_CONFIG_FILENAME, force
|
84
|
+
load_layer_config :internal, script_filename, force
|
83
85
|
load_layer_config :global, script_filename, force
|
84
86
|
load_layer_config :user, script_filename, force
|
85
87
|
load_layer_config :specific_file, internal_configs[:command_line][:content][:'config-file'], force
|
@@ -98,19 +100,32 @@ class EasyAppHelper::Core::Config
|
|
98
100
|
# using {#internal_configs}), while this methods provides a merged config.
|
99
101
|
# @return [Hash] The hash of the merged config.
|
100
102
|
def to_hash
|
101
|
-
|
103
|
+
|
104
|
+
merged_config = {}
|
105
|
+
|
106
|
+
# Process any other level as a low priority unmanaged layer
|
107
|
+
internal_configs.keys.each do |layer|
|
108
|
+
next if self.class.layers.include? layer
|
109
|
+
hashes_second_level_merge merged_config, internal_configs[layer][:content]
|
110
|
+
end
|
111
|
+
|
112
|
+
# Process Config-level layers
|
113
|
+
merged_config = [:system, :internal, :global, :user].inject(merged_config) do |temp_config, config_level|
|
102
114
|
hashes_second_level_merge temp_config, internal_configs[config_level][:content]
|
103
115
|
end
|
104
|
-
if
|
105
|
-
if
|
116
|
+
if get_value :'config-file', :command_line
|
117
|
+
if get_value :'config-override', :command_line
|
106
118
|
override_merge merged_config, internal_configs[:specific_file][:content]
|
107
119
|
else
|
108
120
|
hashes_second_level_merge merged_config, internal_configs[:specific_file][:content]
|
109
121
|
end
|
110
122
|
|
111
123
|
end
|
112
|
-
|
113
|
-
|
124
|
+
|
125
|
+
# Process Base-level layers with highest priority (last processed the highest)
|
126
|
+
[:command_line, :modified].each { |base_layer| hashes_second_level_merge merged_config, internal_configs[base_layer][:content]}
|
127
|
+
merged_config
|
128
|
+
|
114
129
|
end
|
115
130
|
|
116
131
|
# @param [Object] key: The key to access the data in the merged_config hash (see {#to_hash})
|
@@ -125,15 +140,8 @@ class EasyAppHelper::Core::Config
|
|
125
140
|
to_hash.to_yaml
|
126
141
|
end
|
127
142
|
|
128
|
-
|
129
|
-
|
130
|
-
return layer unless layer.nil?
|
131
|
-
[:specific_file, :user, :global, :system].each do |layer|
|
132
|
-
return layer if internal_configs[layer][:content][key]
|
133
|
-
end
|
134
|
-
nil
|
135
|
-
end
|
136
|
-
|
143
|
+
alias_method :to_s, :to_yaml
|
144
|
+
alias_method :inspect, :internal_configs
|
137
145
|
|
138
146
|
#############################################################################
|
139
147
|
private
|
@@ -8,11 +8,25 @@
|
|
8
8
|
# Possible places regarding the OS
|
9
9
|
# TODO: Add equivalent for Mac
|
10
10
|
class EasyAppHelper::Core::Config::Places
|
11
|
+
|
12
|
+
module Helper
|
13
|
+
|
14
|
+
def get_internal_config_place
|
15
|
+
File.expand_path('../../etc', $PROGRAM_NAME)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
|
11
21
|
module Unix
|
12
22
|
# Where could be stored admin configuration that rules all EasyAppHelper
|
13
23
|
# based applications.
|
24
|
+
extend Helper
|
25
|
+
|
14
26
|
POSSIBLE_PLACES = {
|
15
27
|
|
28
|
+
internal: ["#{self.get_internal_config_place}"],
|
29
|
+
|
16
30
|
system: ["/etc"],
|
17
31
|
|
18
32
|
# Where could be stored global wide configuration
|
@@ -27,8 +41,12 @@ class EasyAppHelper::Core::Config::Places
|
|
27
41
|
module Windows
|
28
42
|
# Where could be stored admin configuration that rules all EasyAppHelper
|
29
43
|
# based applications.
|
44
|
+
extend Helper
|
45
|
+
|
30
46
|
POSSIBLE_PLACES = {
|
31
47
|
|
48
|
+
internal: ["#{self.get_internal_config_place}"],
|
49
|
+
|
32
50
|
system: ["#{ENV['systemRoot']}/Config"],
|
33
51
|
|
34
52
|
# Where could be stored global configuration
|
@@ -46,6 +64,7 @@ class EasyAppHelper::Core::Config::Places
|
|
46
64
|
}
|
47
65
|
DEFAULT = Unix
|
48
66
|
|
67
|
+
|
49
68
|
def self.get_os_module
|
50
69
|
conf = CONF[RbConfig::CONFIG['target_os'].to_sym]
|
51
70
|
conf.nil? ? DEFAULT : conf
|
data/spec/config_spec.rb
CHANGED
@@ -10,8 +10,9 @@ require 'easy_app_helper'
|
|
10
10
|
|
11
11
|
|
12
12
|
#describe EasyAppHelper::Core::Config do
|
13
|
-
describe EasyAppHelper
|
14
|
-
SAMPLE_STRING = '
|
13
|
+
describe "The EasyAppHelper config object" do
|
14
|
+
SAMPLE_STRING = 'TestConfig'
|
15
|
+
subject {EasyAppHelper.config}
|
15
16
|
|
16
17
|
|
17
18
|
it 'should be fully initialized when first accessed' do
|
@@ -19,13 +20,12 @@ describe EasyAppHelper.config do
|
|
19
20
|
subject.logger.should_not be nil
|
20
21
|
end
|
21
22
|
|
22
|
-
it 'should be consistent
|
23
|
+
it 'should be consistent regardless the way it is accessed' do
|
23
24
|
subject[:basic_test] = SAMPLE_STRING
|
24
25
|
expect(subject[]).to eq subject.to_hash
|
25
26
|
expect(subject[:basic_test]).to eq SAMPLE_STRING
|
26
27
|
end
|
27
28
|
|
28
|
-
|
29
29
|
it 'should be the same object accross different instances' do
|
30
30
|
expect(subject[:basic_test]).to eq SAMPLE_STRING
|
31
31
|
end
|
@@ -33,11 +33,10 @@ describe EasyAppHelper.config do
|
|
33
33
|
it 'should store the data in the :modified layer' do
|
34
34
|
expect(subject.find_layer :basic_test).to eq :modified
|
35
35
|
expect(subject.internal_configs[:modified][:content][:basic_test]).to eq subject[:basic_test]
|
36
|
-
|
37
36
|
end
|
38
37
|
|
39
38
|
it 'should provide a direct r/w access to layers' do
|
40
|
-
subject.
|
39
|
+
subject.set_value :stupid_conf, SAMPLE_STRING, :system
|
41
40
|
expect(subject[:stupid_conf]).to eq SAMPLE_STRING
|
42
41
|
end
|
43
42
|
|
@@ -52,21 +51,23 @@ describe EasyAppHelper.config do
|
|
52
51
|
end
|
53
52
|
|
54
53
|
|
55
|
-
|
54
|
+
context 'when dealing with the multiple layers of the config' do
|
55
|
+
|
56
56
|
before(:all) do
|
57
57
|
EasyAppHelper.config.layers.each do |layer|
|
58
|
-
EasyAppHelper.config.
|
58
|
+
EasyAppHelper.config.set_value :basic_test, "#{SAMPLE_STRING} #{layer.to_s}", layer
|
59
59
|
end
|
60
|
-
EasyAppHelper.config.
|
60
|
+
EasyAppHelper.config.set_value :'config-file', true, :command_line
|
61
61
|
end
|
62
62
|
|
63
|
-
context "when
|
64
|
-
let(:layers) {
|
63
|
+
context "when trying to access some data" do
|
64
|
+
let(:layers) {subject.layers}
|
65
|
+
#subject {EasyAppHelper.config}
|
65
66
|
|
66
|
-
original_ordered_layers =
|
67
|
+
original_ordered_layers = EasyAppHelper.config.layers
|
67
68
|
layers = original_ordered_layers.dup
|
68
69
|
original_ordered_layers.each do |layer|
|
69
|
-
test_descr = "should find the data in #{layer} layer if present in #{layer} layer"
|
70
|
+
test_descr = "It should find the data in #{layer} layer if present in #{layer} layer"
|
70
71
|
unless layers.length == original_ordered_layers.length
|
71
72
|
already_removed = original_ordered_layers - layers
|
72
73
|
if already_removed.length == 1
|
@@ -89,6 +90,37 @@ describe EasyAppHelper.config do
|
|
89
90
|
end
|
90
91
|
end
|
91
92
|
|
93
|
+
context "when accessing a non existing layer" do
|
94
|
+
context "in read mode" do
|
95
|
+
|
96
|
+
it "should log a warning and return nil" do
|
97
|
+
subject.logger.should_receive(:warn)
|
98
|
+
expect(subject.get_value :non_existing_value, :another_non_existing_layer).to be_nil
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context "in write mode" do
|
103
|
+
|
104
|
+
it "should log a warning and create it" do
|
105
|
+
subject.logger.should_receive(:warn)
|
106
|
+
subject.set_value :non_existing_value, SAMPLE_STRING, :another_non_existing_layer
|
107
|
+
expect(subject.get_value :non_existing_value, :another_non_existing_layer).to be SAMPLE_STRING
|
108
|
+
expect(subject[:non_existing_value]).to be SAMPLE_STRING
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
context "when manually creating a layer" do
|
114
|
+
|
115
|
+
it "should be handled with the lowest priority" do
|
116
|
+
subject.set_value :unused_option, SAMPLE_STRING, :non_existing_layer
|
117
|
+
expect(subject[:unused_option]).to eq SAMPLE_STRING
|
118
|
+
subject.set_value :unused_option, 'Not the sample string', :system
|
119
|
+
expect(subject[:unused_option]).to_not eq SAMPLE_STRING
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
|
92
124
|
end
|
93
125
|
|
94
126
|
context "when reset" do
|
@@ -100,9 +132,9 @@ describe EasyAppHelper.config do
|
|
100
132
|
end
|
101
133
|
|
102
134
|
it "should keep modifications directly done on internal layers" do
|
103
|
-
subject.
|
135
|
+
subject.set_value :stupid_conf, SAMPLE_STRING, :system
|
104
136
|
subject.reset
|
105
|
-
expect(subject.
|
137
|
+
expect(subject.get_value :stupid_conf, :system).to eq SAMPLE_STRING
|
106
138
|
end
|
107
139
|
|
108
140
|
end
|
@@ -116,11 +148,11 @@ describe EasyAppHelper.config do
|
|
116
148
|
end
|
117
149
|
|
118
150
|
it "should remove all modifications directly done on internal layers" do
|
119
|
-
subject.
|
120
|
-
subject.
|
151
|
+
subject.set_value :stupid_conf, SAMPLE_STRING, :system
|
152
|
+
subject.set_value :stupid_conf, SAMPLE_STRING, :command_line
|
121
153
|
subject.load_config
|
122
|
-
expect(subject.
|
123
|
-
expect(subject.
|
154
|
+
expect(subject.get_value :stupid_conf,:system).to be_nil
|
155
|
+
expect(subject.get_value :stupid_conf,:command_line).to be_nil
|
124
156
|
end
|
125
157
|
|
126
158
|
end
|
@@ -134,11 +166,11 @@ describe EasyAppHelper.config do
|
|
134
166
|
end
|
135
167
|
|
136
168
|
it "should remove all modifications directly done on internal layers" do
|
137
|
-
subject.
|
138
|
-
subject.
|
169
|
+
subject.set_value :stupid_conf, SAMPLE_STRING, :system
|
170
|
+
subject.set_value :stupid_conf, SAMPLE_STRING, :command_line
|
139
171
|
subject.force_reload
|
140
|
-
expect(subject.
|
141
|
-
expect(subject.
|
172
|
+
expect(subject.get_value :stupid_conf,:system).to be_nil
|
173
|
+
expect(subject.get_value :stupid_conf,:command_line).to be_nil
|
142
174
|
end
|
143
175
|
|
144
176
|
end
|
@@ -155,4 +187,15 @@ describe EasyAppHelper.config do
|
|
155
187
|
|
156
188
|
end
|
157
189
|
|
190
|
+
context "When a gem has its own :internal config file" do
|
191
|
+
before(:all) do
|
192
|
+
EasyAppHelper.config.script_filename = "test_internal"
|
193
|
+
end
|
194
|
+
|
195
|
+
it "should take its data in account" do
|
196
|
+
expect(subject[:internal_credits]).to_not be_nil
|
197
|
+
end
|
198
|
+
|
199
|
+
end
|
200
|
+
|
158
201
|
end
|
data/spec/logger_spec.rb
CHANGED
@@ -10,19 +10,20 @@ require 'easy_app_helper'
|
|
10
10
|
|
11
11
|
|
12
12
|
#describe EasyAppHelper::Core::Logger
|
13
|
-
describe EasyAppHelper
|
13
|
+
describe "The EasyAppHelper logger object" do
|
14
|
+
subject {EasyAppHelper.logger}
|
14
15
|
let (:config) {EasyAppHelper.config}
|
15
16
|
|
16
|
-
context "to modify the log level" do
|
17
|
+
context "to modify the log level, it should be possible " do
|
17
18
|
|
18
|
-
it '
|
19
|
+
it 'to use the config object' do
|
19
20
|
Logger::Severity::DEBUG.upto(Logger::Severity::UNKNOWN) do |severity|
|
20
21
|
config[:'log-level'] = severity
|
21
22
|
expect(subject.level).to eq severity
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
|
-
it '
|
26
|
+
it 'or directly the #log_level= method of the logger object' do
|
26
27
|
Logger::Severity::DEBUG.upto(Logger::Severity::UNKNOWN) do |severity|
|
27
28
|
subject.level= severity
|
28
29
|
expect(config[:'log-level']).to eq severity
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_app_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- L.Briais
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -87,13 +87,12 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- .gitignore
|
91
|
-
- .travis.yml
|
92
90
|
- Gemfile
|
93
91
|
- LICENSE.txt
|
94
92
|
- README.md
|
95
93
|
- Rakefile
|
96
94
|
- easy_app_helper.gemspec
|
95
|
+
- etc/test_internal.conf
|
97
96
|
- lib/easy_app_helper.rb
|
98
97
|
- lib/easy_app_helper/core/base.rb
|
99
98
|
- lib/easy_app_helper/core/config.rb
|
@@ -105,10 +104,6 @@ files:
|
|
105
104
|
- spec/config_spec.rb
|
106
105
|
- spec/logger_spec.rb
|
107
106
|
- test/test.yml
|
108
|
-
- test/test2_app.rb
|
109
|
-
- test/test3_app.rb
|
110
|
-
- test/test4_app.rb
|
111
|
-
- test/test_app.rb
|
112
107
|
homepage: https://github.com/lbriais/easy_app_helper
|
113
108
|
licenses:
|
114
109
|
- MIT
|
@@ -135,11 +130,8 @@ specification_version: 4
|
|
135
130
|
summary: Provides cool helpers to your application, including configuration and logging
|
136
131
|
features
|
137
132
|
test_files:
|
133
|
+
- etc/test_internal.conf
|
138
134
|
- spec/config_spec.rb
|
139
135
|
- spec/logger_spec.rb
|
140
136
|
- test/test.yml
|
141
|
-
- test/test2_app.rb
|
142
|
-
- test/test3_app.rb
|
143
|
-
- test/test4_app.rb
|
144
|
-
- test/test_app.rb
|
145
137
|
has_rdoc:
|
data/.gitignore
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
.bundle
|
4
|
-
.config
|
5
|
-
.yardoc
|
6
|
-
Gemfile.lock
|
7
|
-
/pkg/
|
8
|
-
InstalledFiles
|
9
|
-
_yardoc
|
10
|
-
coverage
|
11
|
-
doc/
|
12
|
-
lib/bundler/man
|
13
|
-
pkg
|
14
|
-
rdoc
|
15
|
-
spec/reports
|
16
|
-
test/tmp
|
17
|
-
test/version_tmp
|
18
|
-
tmp
|
19
|
-
# Standard
|
20
|
-
*~
|
21
|
-
# Standard Rails project
|
22
|
-
/tmp/
|
23
|
-
/log/
|
24
|
-
/db/*.sqlite3
|
25
|
-
# SASS CSS generation
|
26
|
-
/public/stylesheets/.sass-cache/
|
27
|
-
# Netbeans
|
28
|
-
/nbproject/
|
29
|
-
# Sublime Text 2 project
|
30
|
-
*.sublime-project
|
31
|
-
*.sublime-workspace
|
32
|
-
*(copie)*
|
33
|
-
# RVM
|
34
|
-
.rvmrc
|
35
|
-
# VisualRuby
|
36
|
-
.vr_settings.yaml
|
37
|
-
# Emacs
|
38
|
-
*#
|
39
|
-
*\#
|
40
|
-
\#*
|
41
|
-
.#*
|
42
|
-
\#*\#
|
43
|
-
# Geany
|
44
|
-
*.geany
|
45
|
-
# RubyMine
|
46
|
-
.idea
|
47
|
-
#RedCar
|
48
|
-
.redcar
|
data/.travis.yml
DELETED
data/test/test2_app.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
require 'easy_app_helper'
|
5
|
-
|
6
|
-
|
7
|
-
# EasyAppHelper.logger.level = 0
|
8
|
-
EasyAppHelper.puts_and_logs "Groovy baby !"
|
9
|
-
EasyAppHelper.config[:zboubi] = "Hi shared"
|
10
|
-
|
11
|
-
class A
|
12
|
-
include EasyAppHelper
|
13
|
-
|
14
|
-
def echo
|
15
|
-
puts_and_logs config[:zboubi]
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
A.new.echo
|
20
|
-
EasyAppHelper.puts_and_logs EasyAppHelper.config[:zboubi]
|
21
|
-
|
22
|
-
include EasyAppHelper
|
23
|
-
puts_and_logs "ZBOUBI: #{config[:zboubi]}"
|
24
|
-
config.reset
|
25
|
-
puts_and_logs "ZBOUBI2: #{config[:zboubi]}"
|
26
|
-
|
27
|
-
puts config.to_yaml
|
28
|
-
config.script_filename = 'batch_audio_convert'
|
29
|
-
puts 'Internal configs'
|
30
|
-
puts config.internal_configs.to_yaml
|
31
|
-
puts 'Resulting config'
|
32
|
-
puts config.to_yaml
|
33
|
-
|
data/test/test3_app.rb
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'easy_app_helper'
|
4
|
-
|
5
|
-
# You can directly access the config or the logger through the EasyAppHelper module
|
6
|
-
puts "The application verbose flag is #{EasyAppHelper.config[:verbose]}"
|
7
|
-
|
8
|
-
# You can directly use the logger according to the command line flags
|
9
|
-
# This will do nothing unless --debug is set and --log-level is set to the correct level
|
10
|
-
EasyAppHelper.logger.info "Hi guys!"
|
11
|
-
|
12
|
-
# Fed up with the EasyAppHelper prefix ? Just include the module where you want
|
13
|
-
include EasyAppHelper
|
14
|
-
|
15
|
-
# You can override programmatically any part of the config
|
16
|
-
config[:debug] = true
|
17
|
-
logger.level = 1
|
18
|
-
config[:test] = 'Groovy'
|
19
|
-
EasyAppHelper.logger.info "Hi guys!... again"
|
20
|
-
|
21
|
-
# You can see the internals of the config
|
22
|
-
puts config.internal_configs.to_yaml
|
23
|
-
# Which will output
|
24
|
-
#:modified:
|
25
|
-
# :content:
|
26
|
-
# :log-level: 1
|
27
|
-
# :debug: true
|
28
|
-
# :test: cool
|
29
|
-
# :source: Changed by code
|
30
|
-
#:command_line:
|
31
|
-
# :content:
|
32
|
-
# :auto:
|
33
|
-
# :simulate:
|
34
|
-
# :verbose: true
|
35
|
-
# :help:
|
36
|
-
# :config-file:
|
37
|
-
# :config-override:
|
38
|
-
# :debug:
|
39
|
-
# :debug-on-err:
|
40
|
-
# :log-level:
|
41
|
-
# :log-file:
|
42
|
-
# :source: Command line
|
43
|
-
#:system:
|
44
|
-
# :content: {}
|
45
|
-
# :source:
|
46
|
-
# :origin: EasyAppHelper
|
47
|
-
#:global:
|
48
|
-
# :content: {}
|
49
|
-
# :source:
|
50
|
-
# :origin: ''
|
51
|
-
#:user:
|
52
|
-
# :content: {}
|
53
|
-
# :source:
|
54
|
-
# :origin: ''
|
55
|
-
#:specific_file:
|
56
|
-
# :content: {}
|
57
|
-
|
58
|
-
# You see of course that the two modifications we did are in the modified sub-hash
|
59
|
-
# And now the merged config
|
60
|
-
puts config.to_hash
|
61
|
-
|
62
|
-
# But you can see the modified part as it is:
|
63
|
-
puts config.internal_configs[:modified]
|
64
|
-
|
65
|
-
# Of course you can access it from any class
|
66
|
-
class Dummy
|
67
|
-
include EasyAppHelper
|
68
|
-
|
69
|
-
def initialize
|
70
|
-
puts "#{config[:test]} baby !"
|
71
|
-
# Back to the original
|
72
|
-
config.reset
|
73
|
-
puts config.internal_configs[:modified]
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
Dummy.new
|
78
|
-
|
79
|
-
# Some methods are provided to ease common tasks. For example this one will log at info level
|
80
|
-
# (so only displayed if debug mode and log level low enough), but will also puts on the console
|
81
|
-
# if verbose if set...
|
82
|
-
puts_and_logs "Hi world"
|
83
|
-
|
84
|
-
# It is actually one of the few methods added to regular Logger class (The added value of this logger
|
85
|
-
# is much more to be tightly coupled with the config object). Thus could access it like that:
|
86
|
-
logger.puts_and_logs "Hi world"
|
87
|
-
|
88
|
-
# or even
|
89
|
-
EasyAppHelper.logger.puts_and_logs "Hi world... 3 is enough."
|
90
|
-
|
data/test/test4_app.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'easy_app_helper'
|
4
|
-
|
5
|
-
class MyApp
|
6
|
-
include EasyAppHelper
|
7
|
-
|
8
|
-
APP_NAME = "My super application"
|
9
|
-
# SCRIPT_NAME = File.basename($0, '.*')
|
10
|
-
VERSION = '0.0.1'
|
11
|
-
DESCRIPTION = 'This application is a proof of concept for EasyAppHelper.'
|
12
|
-
|
13
|
-
|
14
|
-
def initialize
|
15
|
-
# Providing this data is optional
|
16
|
-
config.describes_application(app_name: APP_NAME, app_version: VERSION, app_description: DESCRIPTION)
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
def run
|
21
|
-
if config[:help]
|
22
|
-
puts config.help
|
23
|
-
exit 0
|
24
|
-
end
|
25
|
-
puts_and_logs "Application is starting"
|
26
|
-
do_some_processing
|
27
|
-
end
|
28
|
-
|
29
|
-
def do_some_processing
|
30
|
-
puts_and_logs "Starting some heavy processing"
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
|
36
|
-
MyApp.new.run
|
data/test/test_app.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
require 'easy_app_helper'
|
5
|
-
|
6
|
-
|
7
|
-
class Pipo
|
8
|
-
include EasyAppHelper
|
9
|
-
|
10
|
-
|
11
|
-
def toto
|
12
|
-
puts_and_logs "Now from a second class"
|
13
|
-
puts_and_logs config.to_hash
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
class TestApp
|
20
|
-
include EasyAppHelper
|
21
|
-
|
22
|
-
def initialize
|
23
|
-
#config.script_filename = File.basename $0
|
24
|
-
config.app_name = 'Test application'
|
25
|
-
#config.app_description = 'Best app to test the framework'
|
26
|
-
#config.app_version = '1.0.0'
|
27
|
-
puts_and_logs "Hello World"
|
28
|
-
p = Pipo.new.toto
|
29
|
-
config.script_filename = 'batch_audio_convert'
|
30
|
-
puts config.to_hash
|
31
|
-
config.internal_configs.each do |layer|
|
32
|
-
puts layer
|
33
|
-
end
|
34
|
-
add_cmd_line_options
|
35
|
-
puts config.help
|
36
|
-
logger.error "INTARG: #{config[:intarg]}"
|
37
|
-
|
38
|
-
# puts config.help
|
39
|
-
end
|
40
|
-
|
41
|
-
def add_cmd_line_options
|
42
|
-
config.add_command_line_section do |slop|
|
43
|
-
slop.on :u, :useless, 'Stupid option', :argument => false
|
44
|
-
slop.on :anint, 'Stupid option with integer argument', :argument => true, :as => Integer
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
t = TestApp.new
|
51
|
-
include EasyAppHelper
|
52
|
-
logger.warn "Yeah"
|
53
|
-
EasyAppHelper.logger.error "Groovy baby !"
|
54
|
-
puts_and_logs "Hey man"
|
55
|
-
#puts config.inspect
|
56
|
-
puts "bye"
|