easy_app_helper 1.0.2 → 1.0.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.
@@ -1,37 +1,37 @@
1
- ################################################################################
2
- # EasyAppHelper
3
- #
4
- # Copyright (c) 2013 L.Briais under MIT license
5
- # http://opensource.org/licenses/MIT
6
- ################################################################################
7
-
8
- # This module proposes different merge policies for two hashes.
9
- module EasyAppHelper::Core::HashesMergePolicies
10
-
11
- # Performs a merge at the second level of hashes.
12
- # simple entries and arrays are overridden.
13
- def hashes_second_level_merge(h1, h2)
14
- h2.each do |key, v|
15
- if h1[key] and h1[key].is_a?(Hash)
16
- # Merges hashes
17
- h1[key].merge! h2[key]
18
- else
19
- # Overrides the rest
20
- h1[key] = h2[key] unless h2[key].nil?
21
- end
22
- end
23
- h1
24
- end
25
-
26
- # Uses the standard "merge!" method
27
- def simple_merge(h1, h2)
28
- h1.merge! h2
29
- end
30
-
31
- # Brutal override
32
- def override_merge(h1, h2)
33
- h1 = nil
34
- h1 = h2
35
-
36
- end
37
- end
1
+ ################################################################################
2
+ # EasyAppHelper
3
+ #
4
+ # Copyright (c) 2013 L.Briais under MIT license
5
+ # http://opensource.org/licenses/MIT
6
+ ################################################################################
7
+
8
+ # This module proposes different merge policies for two hashes.
9
+ module EasyAppHelper::Core::HashesMergePolicies
10
+
11
+ # Performs a merge at the second level of hashes.
12
+ # simple entries and arrays are overridden.
13
+ def hashes_second_level_merge(h1, h2)
14
+ h2.each do |key, v|
15
+ if h1[key] and h1[key].is_a?(Hash)
16
+ # Merges hashes
17
+ h1[key].merge! h2[key]
18
+ else
19
+ # Overrides the rest
20
+ h1[key] = h2[key] unless h2[key].nil?
21
+ end
22
+ end
23
+ h1
24
+ end
25
+
26
+ # Uses the standard "merge!" method
27
+ def simple_merge(h1, h2)
28
+ h1.merge! h2
29
+ end
30
+
31
+ # Brutal override
32
+ def override_merge(h1, h2)
33
+ h1 = nil
34
+ h1 = h2
35
+
36
+ end
37
+ end
@@ -1,52 +1,52 @@
1
- ################################################################################
2
- # EasyAppHelper
3
- #
4
- # Copyright (c) 2013 L.Briais under MIT license
5
- # http://opensource.org/licenses/MIT
6
- ################################################################################
7
-
8
- # Possible places regarding the OS
9
- # TODO: Add equivalent for Mac
10
- class EasyAppHelper::Core::Config::Places
11
- module Unix
12
- # Where could be stored admin configuration that rules all EasyAppHelper
13
- # based applications.
14
- POSSIBLE_PLACES = {
15
-
16
- system: ["/etc"],
17
-
18
- # Where could be stored global wide configuration
19
- global: ["/etc",
20
- "/usr/local/etc"],
21
-
22
- # Where could be stored user configuration
23
- user: ["#{ENV['HOME']}/.config"]
24
- }
25
- end
26
-
27
- module Windows
28
- # Where could be stored admin configuration that rules all EasyAppHelper
29
- # based applications.
30
- POSSIBLE_PLACES = {
31
-
32
- system: ["#{ENV['systemRoot']}/Config"],
33
-
34
- # Where could be stored global configuration
35
- global: ['C:/Windows/Config',
36
- "#{ENV['ALLUSERSPROFILE']}/Application Data"],
37
-
38
- # Where could be stored user configuration
39
- user: [ENV['APPDATA']]
40
- }
41
- end
42
-
43
- CONF ={
44
- mingw32: Windows
45
- }
46
- DEFAULT = Unix
47
-
48
- def self.get_OS_module
49
- conf = CONF[RbConfig::CONFIG['target_os'].to_sym]
50
- conf.nil? ? DEFAULT : conf
51
- end
1
+ ################################################################################
2
+ # EasyAppHelper
3
+ #
4
+ # Copyright (c) 2013 L.Briais under MIT license
5
+ # http://opensource.org/licenses/MIT
6
+ ################################################################################
7
+
8
+ # Possible places regarding the OS
9
+ # TODO: Add equivalent for Mac
10
+ class EasyAppHelper::Core::Config::Places
11
+ module Unix
12
+ # Where could be stored admin configuration that rules all EasyAppHelper
13
+ # based applications.
14
+ POSSIBLE_PLACES = {
15
+
16
+ system: ["/etc"],
17
+
18
+ # Where could be stored global wide configuration
19
+ global: ["/etc",
20
+ "/usr/local/etc"],
21
+
22
+ # Where could be stored user configuration
23
+ user: ["#{ENV['HOME']}/.config"]
24
+ }
25
+ end
26
+
27
+ module Windows
28
+ # Where could be stored admin configuration that rules all EasyAppHelper
29
+ # based applications.
30
+ POSSIBLE_PLACES = {
31
+
32
+ system: ["#{ENV['systemRoot']}/Config"],
33
+
34
+ # Where could be stored global configuration
35
+ global: ['C:/Windows/Config',
36
+ "#{ENV['ALLUSERSPROFILE']}/Application Data"],
37
+
38
+ # Where could be stored user configuration
39
+ user: [ENV['APPDATA']]
40
+ }
41
+ end
42
+
43
+ CONF ={
44
+ mingw32: Windows
45
+ }
46
+ DEFAULT = Unix
47
+
48
+ def self.get_OS_module
49
+ conf = CONF[RbConfig::CONFIG['target_os'].to_sym]
50
+ conf.nil? ? DEFAULT : conf
51
+ end
52
52
  end
@@ -1,61 +1,68 @@
1
- ################################################################################
2
- # EasyAppHelper
3
- #
4
- # Copyright (c) 2013 L.Briais under MIT license
5
- # http://opensource.org/licenses/MIT
6
- ################################################################################
7
-
8
- module EasyAppHelper::Core
9
-
10
- end
11
-
12
- require 'easy_app_helper/core/logger'
13
- require 'easy_app_helper/core/base'
14
- require 'easy_app_helper/core/config'
15
-
16
- # This module contains the exposed methods of the framework
17
- # It is included and extended into EasyAppHelper
18
- module EasyAppHelper::ModuleManager
19
-
20
- # @return [EasyAppHelper::Core::Logger] The application logger
21
- def logger
22
- @@logger
23
- end
24
-
25
- # @return [EasyAppHelper::Core::Config] The application config
26
- def config
27
- @@config
28
- end
29
-
30
- # Convenient method that logs at info level, but also outputs the message to STDOUT if
31
- # verbose is set in the config.
32
- # @param [String] msg to be displayed
33
- def puts_and_logs(msg)
34
- @@logger.puts_and_logs msg
35
- end
36
-
37
- def self.included(base)
38
- init_core_modules
39
- base.extend self
40
- end
41
-
42
- ################################################################################
43
- private
44
-
45
- def self.init_logger
46
- @@logger ||= EasyAppHelper::Core::Logger.instance
47
- @@logger
48
- end
49
-
50
- def self.init_config
51
- @@config ||= EasyAppHelper::Core::Config.new @@logger
52
- @@logger.set_app_config(@@config)
53
- @@config
54
- end
55
-
56
- def self.init_core_modules
57
- init_logger
58
- init_config
59
- end
60
-
1
+ ################################################################################
2
+ # EasyAppHelper
3
+ #
4
+ # Copyright (c) 2013 L.Briais under MIT license
5
+ # http://opensource.org/licenses/MIT
6
+ ################################################################################
7
+
8
+ module EasyAppHelper::Core
9
+
10
+ end
11
+
12
+ require 'easy_app_helper/core/logger'
13
+ require 'easy_app_helper/core/base'
14
+ require 'easy_app_helper/core/config'
15
+
16
+ # This module contains the exposed methods of the framework
17
+ # It is included and extended into EasyAppHelper
18
+ module EasyAppHelper::ModuleManager
19
+
20
+ # @return [EasyAppHelper::Core::Logger] The application logger
21
+ def logger
22
+ @@logger
23
+ end
24
+
25
+ # @return [EasyAppHelper::Core::Config] The application config
26
+ def config
27
+ @@config
28
+ end
29
+
30
+ # Convenient method that logs at info level, but also outputs the message to STDOUT if
31
+ # verbose is set in the config.
32
+ # @param [String] msg to be displayed
33
+ def puts_and_logs(msg)
34
+ @@logger.puts_and_logs msg
35
+ end
36
+
37
+ # Method to do something (expects a block) unless --simulate is specified on the command line.
38
+ # See {EasyAppHelper::Core::Base#safely_exec original implementation}.
39
+ def safely_exec(message, *args, &block)
40
+ @@config.safely_exec message, *args, &block
41
+ end
42
+
43
+
44
+ def self.included(base)
45
+ init_core_modules
46
+ base.extend self
47
+ end
48
+
49
+ ################################################################################
50
+ private
51
+
52
+ def self.init_logger
53
+ @@logger ||= EasyAppHelper::Core::Logger.instance
54
+ @@logger
55
+ end
56
+
57
+ def self.init_config
58
+ @@config ||= EasyAppHelper::Core::Config.new @@logger
59
+ @@logger.set_app_config(@@config)
60
+ @@config
61
+ end
62
+
63
+ def self.init_core_modules
64
+ init_logger
65
+ init_config
66
+ end
67
+
61
68
  end
@@ -1,10 +1,10 @@
1
- ################################################################################
2
- # EasyAppHelper
3
- #
4
- # Copyright (c) 2013 L.Briais under MIT license
5
- # http://opensource.org/licenses/MIT
6
- ################################################################################
7
-
8
- module EasyAppHelper
9
- EASY_APP_HELPER_VERSION = "1.0.2"
10
- end
1
+ ################################################################################
2
+ # EasyAppHelper
3
+ #
4
+ # Copyright (c) 2013 L.Briais under MIT license
5
+ # http://opensource.org/licenses/MIT
6
+ ################################################################################
7
+
8
+ module EasyAppHelper
9
+ EASY_APP_HELPER_VERSION = "1.0.3"
10
+ end
@@ -1,20 +1,20 @@
1
- ################################################################################
2
- # EasyAppHelper
3
- #
4
- # Copyright (c) 2013 L.Briais under MIT license
5
- # http://opensource.org/licenses/MIT
6
- ################################################################################
7
-
8
- require 'easy_app_helper/version'
9
-
10
- # When this module is included in any class, it mixes in automatically
11
- # EasyAppHelper::ModuleManager methods both into the
12
- # instance and the class of the instance that includes it.
13
- # Thus to have access to the helper methods, the only requirement is to include
14
- # this module...
15
- module EasyAppHelper
16
- require 'easy_app_helper/module_manager'
17
- include ModuleManager
18
- end
19
-
20
-
1
+ ################################################################################
2
+ # EasyAppHelper
3
+ #
4
+ # Copyright (c) 2013 L.Briais under MIT license
5
+ # http://opensource.org/licenses/MIT
6
+ ################################################################################
7
+
8
+ require 'easy_app_helper/version'
9
+
10
+ # When this module is included in any class, it mixes in automatically
11
+ # EasyAppHelper::ModuleManager methods both into the
12
+ # instance and the class of the instance that includes it.
13
+ # Thus to have access to the helper methods, the only requirement is to include
14
+ # this module...
15
+ module EasyAppHelper
16
+ require 'easy_app_helper/module_manager'
17
+ include ModuleManager
18
+ end
19
+
20
+
data/test/test.yml CHANGED
@@ -1,7 +1,7 @@
1
- stupid_config: true
2
-
3
- pipo: bimbo
4
-
5
- hash_example:
6
- first: one
7
- second: two
1
+ stupid_config: true
2
+
3
+ pipo: bimbo
4
+
5
+ hash_example:
6
+ first: one
7
+ second: two
data/test/test2_app.rb CHANGED
@@ -1,33 +1,33 @@
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
-
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 CHANGED
@@ -1,90 +1,90 @@
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
-
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
+