cli_helper 0.0.4 → 0.1.0

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.
@@ -0,0 +1,217 @@
1
+ #!/usr/bin/env ruby
2
+ ################################################
3
+ ## Here is how it works
4
+
5
+ require_relative '../lib/cli_helper'
6
+ include CliHelper
7
+
8
+
9
+ # can not use minitest because it requires pry which
10
+ # requires an older version of slop
11
+ #require 'minitest/autorun'
12
+ require 'kick_the_tires'
13
+ include KickTheTires
14
+
15
+ require 'debug_me'
16
+ include DebugMe
17
+
18
+
19
+ configatron.support_config_files = true
20
+
21
+ #describe 'how it works' do
22
+
23
+ #it '000 supports basic common parameters' do
24
+ params = cli_helper
25
+ assert params.is_a? Slop::Options
26
+ assert usage.include?('--help')
27
+ assert usage.include?('--debug')
28
+ assert usage.include?('--verbose')
29
+ assert usage.include?('--version')
30
+ refute usage.include?('--xyzzy')
31
+
32
+ if configatron.support_config_files
33
+ assert usage.include?('--config')
34
+ else
35
+ refute usage.include?('--config')
36
+ end
37
+
38
+ #end
39
+
40
+ =begin
41
+ # NOTE: The Test construct creates a dynamic class which
42
+ # does not incorporate 'define_method' This Test results
43
+ # in errors that are a consequence of the testing framework
44
+ # not the object under test.
45
+ it '002 creates accessor methods to boolean options' do
46
+ cli_helper
47
+ all_methods = methods
48
+ %w[ help? debug? verbose? version?
49
+ help! debug! verbose! version!].each do |m|
50
+ assert all_methods.include?(m)
51
+ end
52
+ refute all_methods.include?('xyzzy?')
53
+ refute all_methods.include?('xyzzy!')
54
+ end
55
+ =end
56
+
57
+ #it '005 block inclusion' do
58
+ cli_helper do |param|
59
+ param.string '-x', '--xyxxy', 'example MAGIC parameter', default: 'IamDefault'
60
+ end
61
+ assert usage.include?('MAGIC')
62
+ #end
63
+
64
+ #it '010 supports banner' do
65
+ refute usage().include?('BANNER')
66
+ cli_helper('This is my BANNER')
67
+ assert usage().include?('BANNER')
68
+ #end
69
+
70
+ #it '015 supports additional help in usage' do
71
+ refute usage.include?('HELP')
72
+ HELP = "Do you need some HELP?"
73
+ assert usage.include?('HELP')
74
+ #end
75
+
76
+ #it '020 put it all together' do
77
+ cli_helper('This is my BANNER') do |o|
78
+ o.string '-x', '--xyxxy', 'example MAGIC parameter', default: 'IamDefault'
79
+ end
80
+ HELP = "Do you need some HELP?"
81
+ assert usage.include?('BANNER')
82
+ assert usage.include?('MAGIC')
83
+ assert usage.include?('HELP')
84
+ #end
85
+
86
+ #it '025 Add to options.errors' do
87
+ assert configatron.errors.empty?
88
+ a_message = 'There is a serious problem here'
89
+ error a_message
90
+ refute configatron.errors.empty?
91
+ assert_equal 1, configatron.errors.size
92
+ assert_equal a_message, configatron.errors.first
93
+ #end
94
+
95
+ #it '030 Add to options.warnings' do
96
+ assert configatron.warnings.empty?
97
+ a_message = 'There is a minor problem here'
98
+ warning a_message
99
+ refute configatron.warnings.empty?
100
+ assert_equal 1, configatron.warnings.size
101
+ assert_equal a_message, configatron.warnings.first
102
+ #end
103
+
104
+ #it '035 Add to options.errors' do
105
+ refute configatron.errors.empty?
106
+ a_message = 'There is another serious problem here'
107
+ error a_message
108
+ assert_equal 2, configatron.errors.size
109
+ assert_equal a_message, configatron.errors.last
110
+ #end
111
+
112
+ #it '040 Add to options.warnings' do
113
+ refute configatron.warnings.empty?
114
+ a_message = 'There is a another minor problem here'
115
+ warning a_message
116
+ assert_equal 2, configatron.warnings.size
117
+ assert_equal a_message, configatron.warnings.last
118
+ #end
119
+
120
+ #it '050 support erb config files' do
121
+ unless configatron.config.nil?
122
+ configatron.config.each do |c|
123
+ case c.basename.extname.to_s.downcase
124
+ when '.erb'
125
+ file_type = c.basename.to_s.downcase.gsub('.erb','').split('.').last
126
+ case file_type
127
+ when 'ini'
128
+ # FIXME: ParseConfig gem has problem
129
+ refute Time == configatron.wall_clock.the_mouse_says.class
130
+ when 'txt'
131
+ # FIXME: ParseConfig gem has problem
132
+ refute Time == configatron.wrist.watch_time.class
133
+ when 'yml'
134
+ assert_equal Time, configatron.production.watch_time.class
135
+ else
136
+ end
137
+ when '.rb'
138
+ assert_equal 'devhost', configatron.development.host
139
+ when '.txt'
140
+ assert_equal 6, configatron.fingers.right_hand
141
+ when '.ini'
142
+ assert_equal 'wedding ring', configatron.hands.left_hand
143
+ when '.yml'
144
+ assert_equal 'go fish', configatron.production.threes
145
+ assert configatron.production.watch_time.nil?
146
+ when '.xyzzy'
147
+ else
148
+ end
149
+ end
150
+ else
151
+ # means test did not include config files
152
+ end
153
+ #end
154
+
155
+
156
+
157
+
158
+
159
+ #it '888 prints usage()' do
160
+ puts
161
+ puts "="*45
162
+ show_usage
163
+ puts "="*45
164
+ puts
165
+ a_string = <<EOS
166
+ This is my BANNER
167
+
168
+ Usage: cli_helper_test.rb [options] ...
169
+
170
+ Where:
171
+
172
+ Common Options Are:
173
+ -h, --help show this message
174
+ -v, --verbose enable verbose mode
175
+ -d, --debug enable debug mode
176
+ --version print the version: 0.0.1
177
+
178
+ Program Options Are:
179
+ -x, --xyxxy example MAGIC parameter
180
+
181
+ Do you need some HELP?
182
+ EOS
183
+
184
+
185
+ a_string_with_config = <<EOS
186
+ This is my BANNER
187
+
188
+ Usage: cli_helper_test.rb [options] ...
189
+
190
+ Where:
191
+
192
+ Common Options Are:
193
+ -h, --help show this message
194
+ -v, --verbose enable verbose mode
195
+ -d, --debug enable debug mode
196
+ --version print the version: 0.0.1
197
+
198
+ Program Options Are:
199
+ -x, --xyxxy example MAGIC parameter
200
+ --config read config file(s) [*.rb, *.yml, *.ini]
201
+
202
+ Do you need some HELP?
203
+ EOS
204
+
205
+ if configatron.support_config_files
206
+ assert_equal a_string_with_config, usage
207
+ else
208
+ assert_equal a_string, usage
209
+ end
210
+ #end
211
+
212
+ #it '999 Show the options structure' do
213
+ puts '*'*45
214
+ ap configatron.to_h
215
+ #end
216
+
217
+ #end # decribe 'how it works'
@@ -0,0 +1,6 @@
1
+ [base2]
2
+ \ three = 11
3
+
4
+ [hands]
5
+ left_hand = 'wedding ring'
6
+
@@ -0,0 +1,9 @@
1
+ [base2]
2
+ \ three = 11
3
+
4
+ [hands]
5
+ left_hand = 'wedding ring'
6
+
7
+ [wall_clock]
8
+ the_mouse_says = <%= Time.now %>
9
+
@@ -0,0 +1,15 @@
1
+
2
+ configatron.test do |test|
3
+ test.host = 'localhost'
4
+ test.ip = '127.0.0.1'
5
+ end
6
+
7
+ configatron.development do |dev|
8
+ dev.host = 'devhost'
9
+ dev.ip = '127.0.0.1'
10
+ end
11
+
12
+ configatron.production do |prod|
13
+ prod.host = 'prodhost'
14
+ prod.ip = '0.0.0.0'
15
+ end
@@ -0,0 +1,20 @@
1
+
2
+ configatron.test do |test|
3
+ test.host = 'localhost'
4
+ test.ip = '127.0.0.1'
5
+ end
6
+
7
+ configatron.development do |dev|
8
+ dev.host = 'devhost'
9
+ dev.ip = '127.0.0.1'
10
+ end
11
+
12
+ configatron.production do |prod|
13
+ prod.host = 'prodhost'
14
+ prod.ip = '0.0.0.0'
15
+ end
16
+
17
+ if <%= true =>
18
+ puts "Why would you ever want ERB stuff in a ruby-based config file?"
19
+ end
20
+
@@ -0,0 +1,12 @@
1
+ [base2]
2
+ zero = 0
3
+ one = 1
4
+ two = 10
5
+
6
+ [fingers]
7
+ left_hand = 5
8
+ right_hand = 6
9
+
10
+ [toes]
11
+ left_foot = 6
12
+ right_foot = 5
@@ -0,0 +1,16 @@
1
+ [base2]
2
+ zero = 0
3
+ one = 1
4
+ two = 10
5
+
6
+ [fingers]
7
+ left_hand = 5
8
+ right_hand = 6
9
+
10
+ [toes]
11
+ left_foot = 6
12
+ right_foot = 5
13
+
14
+ [wrist]
15
+ watch_time = <%= Time.now %>
16
+
@@ -0,0 +1 @@
1
+ This is an unknown config file format
@@ -0,0 +1,16 @@
1
+ ---
2
+ test:
3
+ one: 1
4
+ two: 1
5
+ three: 11
6
+
7
+ development:
8
+ one: 'one'
9
+ two: 'two'
10
+ three: 'three'
11
+
12
+ production:
13
+ ones: 1111
14
+ tows: 2222
15
+ threes: 'go fish'
16
+
@@ -0,0 +1,17 @@
1
+ ---
2
+ test:
3
+ one: 1
4
+ two: 1
5
+ three: 11
6
+
7
+ development:
8
+ one: 'one'
9
+ two: 'two'
10
+ three: 'three'
11
+
12
+ production:
13
+ ones: 1111
14
+ tows: 2222
15
+ threes: 'go fish'
16
+ watch_time: <%= Time.now %>
17
+
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cli_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dewayne VanHoozer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-22 00:00:00.000000000 Z
11
+ date: 2015-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: slop
14
+ name: configatron
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.0'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '4.0'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nenv
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: awesome_print
42
+ name: parseconfig
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,19 +53,19 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: debug_me
56
+ name: slop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '4.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '4.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +95,35 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '10.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: test_inline
98
+ name: kick_the_tires
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: awesome_print
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'
125
+ - !ruby/object:Gem::Dependency
126
+ name: debug_me
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
129
  - - ">="
@@ -108,14 +136,12 @@ dependencies:
108
136
  - - ">="
109
137
  - !ruby/object:Gem::Version
110
138
  version: '0'
111
- description: |-
112
- An encapsulation of a convention I have been using
113
- with the slop, nenv, and other gems for quick and dirty development of
114
- command-line based utility programs. Its not pretty. It may even break
115
- your code. I wouldn't use it if I were you. You could, if you wanted,
116
- namespace this stuff within CliHelper and establish a new convention.
117
- You might even wrap not only slop but some of those other ARGV parsers.
118
- I only did this much after being shamed into it by rubycritic.
139
+ description: "\n An encapsulation of a convention I have been using\n with
140
+ the slop, nenv, parseconfig and configatron gems for quick and dirty\n development
141
+ of\n command-line based utility programs. Slop parses ARGV; Nenv parses ENV;\n
142
+ \ ParseConfig parses INI; Configatron keeps it all together. YAML and ERB\n
143
+ \ preprocessing is also available. Ruby configuration files are also supported.\n
144
+ \ and you can specify multiple config files of mixed types at once.\n "
119
145
  email:
120
146
  - dvanhoozer@gmail.com
121
147
  executables: []
@@ -129,6 +155,17 @@ files:
129
155
  - cli_helper.gemspec
130
156
  - example/cli_stub.rb
131
157
  - lib/cli_helper.rb
158
+ - tests/README.txt
159
+ - tests/cli_helper_test.rb
160
+ - tests/config/sample.ini
161
+ - tests/config/sample.ini.erb
162
+ - tests/config/sample.rb
163
+ - tests/config/sample.rb.erb
164
+ - tests/config/sample.txt
165
+ - tests/config/sample.txt.erb
166
+ - tests/config/sample.xyzzy
167
+ - tests/config/sample.yml
168
+ - tests/config/sample.yml.erb
132
169
  homepage: http://github.com/MadBomber/cli_helper
133
170
  licenses:
134
171
  - You want it? It's yours.
@@ -153,5 +190,6 @@ rubyforge_project:
153
190
  rubygems_version: 2.4.6
154
191
  signing_key:
155
192
  specification_version: 4
156
- summary: An encapsulates of common junk used with Q&D CLI utilities.
193
+ summary: An encapsulation of an integration of slop, nenv, parseconfig and configatron.
157
194
  test_files: []
195
+ has_rdoc: