easy_app_helper 1.0.0 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9e26f7e3e20c41919179c83e8afbef9e91f80686
4
- data.tar.gz: b76f54662fb9ef9146724ce1721b430d0c6c1a14
3
+ metadata.gz: e9ce79a31fbe4f16b495bd2294ede7ba73491d2d
4
+ data.tar.gz: d1acf48488b95bed0a1d738de3ff883bda3b727b
5
5
  SHA512:
6
- metadata.gz: f6f59da41828b98e70e5bfbc27805a74efa8c8a8c63481c135dc74726a1792edb102dbc73868b52fbaefe49e3e6e99badea4fbb686c3c34ccf7de2f9bdcf2075
7
- data.tar.gz: 44385236b44fcb4b3b928a7cc81fb13ef59168f35bfd538ee7e8834b2cfaf6c773aed7f5e1d052ebf911bfa006989d059f584f001708ee009f173b0f30dcb9c1
6
+ metadata.gz: 640e370407ffa4f3e777be1891655c25ba56de8a365c693e1fa7c59839fa14146b986099b20bab3968c116a323b57e0a8dab572d9dccc2e1826fd7732c942160
7
+ data.tar.gz: a9e0e012fb026e52c1715048f64612fa786db77f9ffcb3eb6909759ec38e6466c5c3c8a66ac3b95b3f982fb71fbc61dfb5c9146aa7369ff2daec9a748d80464b
data/README.md CHANGED
@@ -3,29 +3,30 @@
3
3
  **This [gem][EAP] aims at providing useful helpers for command line applications.**
4
4
 
5
5
  This is a complete rewrite of the initial easy_app_helper gem. **It is not compatible with
6
- apps designed for easy_app_helper prior to version 1.0.0**, although they could be very easily adapted.
7
- But anyway you always specify your gem dependencies using the [pessimistic version operator]
8
- (http://docs.rubygems.org/read/chapter/16#page74), don't you ? Older applications should do it to tell your application
9
- to use the latest version of the 0.x.x series instead.
6
+ apps designed for easy_app_helper prior to version 1.0.0**, although they could be very easily adapted
7
+ (anyway you always specify your gem dependencies using the [pessimistic version operator]
8
+ (http://docs.rubygems.org/read/chapter/16#page74), don't you ?). Older applications should explicitly
9
+ require to use the latest version of the 0.x.x series instead. The config files themselves remain
10
+ compatible with all versions of **EasyAppHelper**, as they are actually just plain Yaml files...
10
11
 
11
- The new **EasyAppHelper** module prodides:
12
+ The new **EasyAppHelper** module provides:
12
13
 
13
- * A **super charged Config class** that:
14
+ * A **super charged Config class** that:
14
15
  * Manages **multiple sources of configuration**(command line, multiple config files...) in a **layered config**.
15
- * Provides an **easy to customize merge mechanism** for the different **config layers** that exposes a "live view"
16
+ * Provides an **easy to customize merge mechanism** for the different **config layers** that renders a "live view"
16
17
  of the merged configuration, while keeping a way to access or modify independently any of them.
17
18
  * Allows **flexibility** when dealing with modification and provides a way to roll back modifications done to config
18
19
  anytime, fully reload it, blast it... Export feature could be very easily added and will probably.
19
- * A **Logger tightly coupled with the Config** class, that will behave correctly regarding options specified be it from
20
- command line or from any source of the config object...
21
- * Embeds [Slop][slop] to handle **command line parameters** and keeps any parameter defined in a **separated layer of
22
- the global config object**.
20
+ * A **Logger tightly coupled with the Config** class, that will behave regarding options specified be it from
21
+ command line or from any source(layer) of the config object...
22
+ * Embeds [Slop][slop] to handle **command line parameters** and keeps all parameters specified from the command
23
+ line in a **dedicated layer of the config object**.
23
24
  * A mechanism that ensures that as soon as you access any of the objects or methods exposed by EasyAppHelper,
24
25
  all of them are **fully configured and ready to be used**.
25
26
 
26
- If you are writing command line applications, I hope you will like because it's very easy to use, and as unobtrusive as
27
- possible (you choose when you want to include or use as a module) while providing a ready-for-prod config, logger
28
- and command line management.
27
+ If you are writing command line applications, I hope you will like it because it's very easy to use,
28
+ and as unobtrusive as possible (you choose when you want to include or use as a module) while providing
29
+ a ready-for-prod config, logger and command line management.
29
30
 
30
31
 
31
32
  Currently the only runtime dependency is the cool [Slop gem][slop] which is used to process the command line options.
@@ -157,7 +158,7 @@ EasyAppHelper.logger.puts_and_logs "Hi world... 3 is enough."
157
158
  **EasyAppHelper** will look for files in numerous places. **Both Unix and Windows places are handled**.
158
159
  All the files are [Yaml][yaml] files but could have names with different extensions.
159
160
 
160
- You can look in the classes documentation to know exactly which extensions and places the config
161
+ You can look in the [classes documentation][doc] to know exactly which extensions and places the config
161
162
  files are looked for.
162
163
 
163
164
  ### System config file
@@ -179,9 +180,9 @@ regarding the rules described above, the framework will for the following files
179
180
 
180
181
  ### Application config files
181
182
 
182
- An application config file names are determined from the config.script_filename property. This initially contains
183
- the bare name of the script, but you can replace with whatever you want. Changing this property causes actually
184
- the impacted files to be reloaded.
183
+ Application config file names are determined from the config.script_filename property. It initially contains
184
+ the bare name of the script(path and extension removed), but you can replace with whatever you want. Changing
185
+ this property causes actually the impacted files to be reloaded.
185
186
 
186
187
  It is in fact a two level configuration. One is global (the :global layer) and the other is at user level (the
187
188
  :user layer).
@@ -339,6 +340,25 @@ I, [2013-06-23T19:39:05.712834 #11768] INFO -- My super application: Starting s
339
340
 
340
341
  So far so good...
341
342
 
343
+ ### Specifying command line parameters
344
+
345
+ As said, internally **EasyAppHelper** uses the [Slop gem][slop] to handle the command line parameters.
346
+ You can configure the internal Slop object by calling the add_command_line_section method of the config
347
+ object. You could create a method that setup your application command line parameters like this:
348
+
349
+ ```ruby
350
+ def add_cmd_line_options
351
+ config.add_command_line_section do |slop|
352
+ slop.on :u, :useless, 'Stupid option', :argument => false
353
+ slop.on :anint, 'Stupid option with integer argument', :argument => true, :as => Integer
354
+ end
355
+ end
356
+
357
+ ```
358
+
359
+ See [Slop gem][slop] API documentation for more options.
360
+
361
+
342
362
  ### Debugging the framework itself
343
363
 
344
364
  If you want, you can even debug what happens during **EasyAppHelper** initialisation, for this you can use the
@@ -475,5 +495,5 @@ That's all folks.
475
495
  [EAP]: https://rubygems.org/gems/easy_app_helper "**EasyAppHelper** gem"
476
496
  [slop]: https://rubygems.org/gems/slop "Slop gem"
477
497
  [yaml]: http://www.yaml.org/ "The Yaml official site"
478
- [3]: http://rubydoc.info/github/lbriais/easy_app_helper/master/frames "**EasyAppHelper** documentation"
498
+ [doc]: http://rubydoc.info/github/lbriais/easy_app_helper/master "**EasyAppHelper** documentation"
479
499
  [4]: https://github.com/lbriais/easy_app_helper/wiki "**EasyAppHelper** wiki"
@@ -56,6 +56,12 @@ class EasyAppHelper::Core::Base
56
56
  @slop_definition.banner = build_banner
57
57
  end
58
58
 
59
+ # helper to add in one command any of the four base properties used
60
+ # by the logger and the config objects.
61
+ # @param [String] app_name
62
+ # @param [String] script_filename
63
+ # @param [String] app_version
64
+ # @param [String] app_description
59
65
  def describes_application(app_name: nil, script_filename: nil, app_version: nil, app_description: nil)
60
66
  self.app_name = app_name unless app_name.nil?
61
67
  self.app_version = app_version unless app_version.nil?
@@ -17,8 +17,8 @@ require 'yaml'
17
17
  # complex rules. First the place where to search them depends on the OS
18
18
  # (Provided by {EasyAppHelper::Core::Config::Places}), and then multiple file extensions are
19
19
  # tested ({EasyAppHelper::Core::Config::CONFIG_FILE_POSSIBLE_EXTENSIONS}). This is basically
20
- # performed by the private method {#find_file}. The config specified on command (if any) is loaded the
21
- # same way.
20
+ # performed by the private method {#find_file}. The config specified on command line (if any)
21
+ # is loaded the same way.
22
22
  #
23
23
  # == Command line:
24
24
  # Any option can be declared as being callable from the command line. Modules add already some
@@ -26,8 +26,8 @@ require 'yaml'
26
26
  # {EasyAppHelper::Core::Base#add_command_line_section}).
27
27
  #
28
28
  # Each of the config sources are kept in a separated "layer" and addressed this way using the
29
- # #internal_config attribute reader. But of course the config object provides a "merged" config
30
- # result of the computation of all the sources. See the #to_hash method to see the order for the
29
+ # #internal_configs attribute reader. But of course the config object provides a "merged" config
30
+ # result of the computation of all the sources. See the {#to_hash} method to see the order for the
31
31
  # merge.
32
32
  # Any option can be accessed or modified directly using the {#[]} and {#[]=} methods.
33
33
  # Any change to the global config should be done using the {#[]=} method and is kept in the last separated
@@ -23,7 +23,9 @@ class Logger
23
23
  end
24
24
  end
25
25
 
26
- # This is the logger that will be used by the application and any class that include {#EasyAppHelper} module.
26
+ # This is the logger that will be used by the application and any class that include {EasyAppHelper} module. It is
27
+ # configured by the {EasyAppHelper::Core::Config Config} object, and provides a temporary logger until the config
28
+ # is fully loaded.
27
29
  class EasyAppHelper::Core::Logger < Logger
28
30
  include Singleton
29
31
 
@@ -6,5 +6,5 @@
6
6
  ################################################################################
7
7
 
8
8
  module EasyAppHelper
9
- EASY_APP_HELPER_VERSION = "1.0.0"
9
+ EASY_APP_HELPER_VERSION = "1.0.1"
10
10
  end
data/test/test_app.rb CHANGED
@@ -40,8 +40,8 @@ class TestApp
40
40
 
41
41
  def add_cmd_line_options
42
42
  config.add_command_line_section do |slop|
43
- slop.on :s, :stupid, 'Stupid option', :argument => false
44
- slop.on :i, :intarg, 'Stupid option with integer argument', :argument => true, :as => Integer
43
+ slop.on :u, :useless, 'Stupid option', :argument => false
44
+ slop.on :anint, 'Stupid option with integer argument', :argument => true, :as => Integer
45
45
  end
46
46
  end
47
47
 
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.0
4
+ version: 1.0.1
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-06-23 00:00:00.000000000 Z
11
+ date: 2013-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler