mamertes 2.4.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.
Files changed (53) hide show
  1. checksums.yaml +15 -0
  2. data/.DS_Store +0 -0
  3. data/.gitignore +6 -0
  4. data/.travis-gemfile +15 -0
  5. data/.travis.yml +10 -0
  6. data/.yardopts +1 -0
  7. data/Gemfile +21 -0
  8. data/README.md +126 -0
  9. data/Rakefile +29 -0
  10. data/doc/Mamertes.html +155 -0
  11. data/doc/Mamertes/Application.html +3057 -0
  12. data/doc/Mamertes/Command.html +7031 -0
  13. data/doc/Mamertes/CommandMethods.html +125 -0
  14. data/doc/Mamertes/CommandMethods/Children.html +1286 -0
  15. data/doc/Mamertes/CommandMethods/Help.html +209 -0
  16. data/doc/Mamertes/Error.html +631 -0
  17. data/doc/Mamertes/Localizer.html +376 -0
  18. data/doc/Mamertes/Option.html +6671 -0
  19. data/doc/Mamertes/Parser.html +276 -0
  20. data/doc/Mamertes/ParserMethods.html +125 -0
  21. data/doc/Mamertes/ParserMethods/General.html +134 -0
  22. data/doc/Mamertes/ParserMethods/General/ClassMethods.html +574 -0
  23. data/doc/Mamertes/Version.html +189 -0
  24. data/doc/_index.html +276 -0
  25. data/doc/class_list.html +54 -0
  26. data/doc/css/common.css +1 -0
  27. data/doc/css/full_list.css +57 -0
  28. data/doc/css/style.css +338 -0
  29. data/doc/file.README.html +198 -0
  30. data/doc/file_list.html +56 -0
  31. data/doc/frames.html +28 -0
  32. data/doc/index.html +198 -0
  33. data/doc/js/app.js +214 -0
  34. data/doc/js/full_list.js +178 -0
  35. data/doc/js/jquery.js +4 -0
  36. data/doc/method_list.html +509 -0
  37. data/doc/top-level-namespace.html +112 -0
  38. data/lib/mamertes.rb +18 -0
  39. data/lib/mamertes/application.rb +206 -0
  40. data/lib/mamertes/command.rb +529 -0
  41. data/lib/mamertes/option.rb +236 -0
  42. data/lib/mamertes/parser.rb +317 -0
  43. data/lib/mamertes/version.rb +24 -0
  44. data/locales/en.yml +40 -0
  45. data/locales/it.yml +40 -0
  46. data/mamertes.gemspec +30 -0
  47. data/spec/coverage_helper.rb +20 -0
  48. data/spec/mamertes/application_spec.rb +181 -0
  49. data/spec/mamertes/command_spec.rb +526 -0
  50. data/spec/mamertes/option_spec.rb +274 -0
  51. data/spec/mamertes/parser_spec.rb +126 -0
  52. data/spec/spec_helper.rb +15 -0
  53. metadata +115 -0
@@ -0,0 +1,274 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file is part of the mamertes gem. Copyright (C) 2013 and above Shogun <shogun_panda@me.com>.
4
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
+ #
6
+
7
+ require "spec_helper"
8
+
9
+ describe Mamertes::Option do
10
+ let(:application) {
11
+ ::Mamertes::Application.new {
12
+ action {}
13
+ }
14
+ }
15
+
16
+ let(:command) {
17
+ c = ::Mamertes::Command.new
18
+ c.application = application
19
+ c
20
+ }
21
+
22
+ let(:option) {
23
+ o = ::Mamertes::Option.new("NAME")
24
+ o.parent = command
25
+ o
26
+ }
27
+
28
+ describe "#initialize" do
29
+ it "should set good forms" do
30
+ option = ::Mamertes::Option.new("NAME")
31
+ expect(option.name).to eq("NAME")
32
+ expect(option.short).to eq("N")
33
+ expect(option.long).to eq("NAME")
34
+
35
+ option = ::Mamertes::Option.new("NAME", "O")
36
+ expect(option.name).to eq("NAME")
37
+ expect(option.short).to eq("O")
38
+ expect(option.long).to eq("NAME")
39
+
40
+ option = ::Mamertes::Option.new("NAME", ["O", "OPTION"])
41
+ expect(option.name).to eq("NAME")
42
+ expect(option.short).to eq("O")
43
+ expect(option.long).to eq("OPTION")
44
+
45
+ end
46
+
47
+ it "should set options" do
48
+ option = ::Mamertes::Option.new("NAME", ["O", "OPTION"], {required: true, help: "HELP", unused: "UNUSED"})
49
+ expect(option.help).to be_true
50
+ expect(option.help).to eq("HELP")
51
+ end
52
+ end
53
+
54
+ describe "#short=" do
55
+ it "should set good form" do
56
+ option.short = "a"
57
+ expect(option.short).to eq("a")
58
+
59
+ option.short = "-b"
60
+ expect(option.short).to eq("b")
61
+
62
+ option.short = "-c"
63
+ expect(option.short).to eq("c")
64
+
65
+ option.short = 1
66
+ expect(option.short).to eq("1")
67
+
68
+ option.short = true
69
+ expect(option.short).to eq("t")
70
+
71
+ option.short = nil
72
+ expect(option.short).to eq("N")
73
+ end
74
+ end
75
+
76
+ describe "#long=" do
77
+ it "should set good form" do
78
+ option.long = "a"
79
+ expect(option.long).to eq("a")
80
+
81
+ option.long = "abc"
82
+ expect(option.long).to eq("abc")
83
+
84
+ option.long = "-def"
85
+ expect(option.long).to eq("def")
86
+
87
+ option.long = "--ghi"
88
+ expect(option.long).to eq("ghi")
89
+
90
+ option.long = true
91
+ expect(option.long).to eq("true")
92
+
93
+ option.long = 1
94
+ expect(option.long).to eq("1")
95
+
96
+ option.long = nil
97
+ expect(option.long).to eq("NAME")
98
+ end
99
+ end
100
+
101
+ describe "#validator=" do
102
+ it "should set a good validator" do
103
+ option.validator = "VALUE"
104
+ expect(option.validator).to eq(["VALUE"])
105
+ option.validator = ["VALUE", "VALUE"]
106
+ expect(option.validator).to eq(["VALUE"])
107
+ option.validator = /VALUE/
108
+ expect(option.validator).to eq(/VALUE/)
109
+ option.validator = nil
110
+ expect(option.validator).to be_nil
111
+ option.validator = ""
112
+ expect(option.validator).to be_nil
113
+ option.validator = []
114
+ expect(option.validator).to be_nil
115
+ option.validator = //
116
+ expect(option.validator).to be_nil
117
+ end
118
+ end
119
+
120
+ describe "#complete_short" do
121
+ it "should return a good short form" do
122
+ expect(::Mamertes::Option.new("NAME").complete_short).to eq("-N")
123
+ expect(::Mamertes::Option.new("NAME", "A").complete_short).to eq("-A")
124
+ expect(::Mamertes::Option.new("NAME", ["A", "BC"]).complete_short).to eq("-A")
125
+ expect(::Mamertes::Option.new("NAME", [true, false]).complete_short).to eq("-t")
126
+ end
127
+ end
128
+
129
+ describe "#complete_long" do
130
+ it "should return a good short form" do
131
+ expect(::Mamertes::Option.new("NAME").complete_long).to eq("--NAME")
132
+ expect(::Mamertes::Option.new("NAME", "A").complete_long).to eq("--NAME")
133
+ expect(::Mamertes::Option.new("NAME", ["A", "BC"]).complete_long).to eq("--BC")
134
+ expect(::Mamertes::Option.new("NAME", [true, true]).complete_long).to eq("--true")
135
+ end
136
+ end
137
+
138
+ describe "#label" do
139
+ it "should return a good label" do
140
+ expect(::Mamertes::Option.new("NAME").label).to eq("-N/--NAME")
141
+ expect(::Mamertes::Option.new("NAME", "A").label).to eq("-A/--NAME")
142
+ expect(::Mamertes::Option.new("NAME", ["A", "BC"]).label).to eq("-A/--BC")
143
+ expect(::Mamertes::Option.new("NAME", [true, true]).label).to eq("-t/--true")
144
+ end
145
+
146
+ end
147
+
148
+ describe "#meta" do
149
+ it "should return the option meta" do
150
+ expect(::Mamertes::Option.new("NAME", []).meta).to be_nil
151
+ expect(::Mamertes::Option.new("NAME", [], {type: String}).meta).to eq("NAME")
152
+ expect(::Mamertes::Option.new("foo", [], {type: String}).meta).to eq("FOO")
153
+ expect(::Mamertes::Option.new("NAME", [], {type: String, meta: "STRING"}).meta).to eq("STRING")
154
+ end
155
+ end
156
+
157
+ describe "#set" do
158
+ it "should set the value" do
159
+ expect(option.set("VALUE")).to be_true
160
+ expect(option.value).to eq("VALUE")
161
+ expect(option.provided?).to be_true
162
+ end
163
+
164
+ it "should match against a regexp validator" do
165
+ option.validator = /^A|B$/
166
+
167
+ expect{ option.set("VALUE") }.to raise_error(::Mamertes::Error)
168
+ expect(option.value).to be_false
169
+ expect(option.provided?).to be_false
170
+
171
+ expect(option.set("VALUE", false)).to be_false
172
+ expect(option.value).to be_false
173
+ expect(option.provided?).to be_false
174
+
175
+ option.set("A")
176
+ expect(option.value).to eq("A")
177
+ expect(option.provided?).to be_true
178
+
179
+ option.set("B")
180
+ expect(option.value).to eq("B")
181
+ expect(option.provided?).to be_true
182
+ end
183
+
184
+ it "should match against an array validator" do
185
+ option.validator = ["A", "B"]
186
+
187
+ expect{ option.set("VALUE") }.to raise_error(::Mamertes::Error)
188
+ expect(option.value).to be_false
189
+ expect(option.provided?).to be_false
190
+
191
+ expect(option.set("VALUE", false)).to be_false
192
+ expect(option.value).to be_false
193
+ expect(option.provided?).to be_false
194
+
195
+ option.set("A")
196
+ expect(option.value).to eq("A")
197
+ expect(option.provided?).to be_true
198
+
199
+ option.set("B")
200
+ expect(option.value).to eq("B")
201
+ expect(option.provided?).to be_true
202
+ end
203
+ end
204
+
205
+ describe "#execute_action" do
206
+ it "should execute action if provided" do
207
+ check = false
208
+ option = ::Mamertes::Option.new("NAME") { |_, _| check = true }
209
+ option.execute_action
210
+
211
+ expect(check).to be_true
212
+ expect(option.provided?).to be_true
213
+ end
214
+
215
+ it "should result in a no-op if the action is missing or doesn't take enough arguments" do
216
+ option.execute_action
217
+ expect(option.provided?).to be_false
218
+
219
+ option = ::Mamertes::Option.new("NAME")
220
+ expect(option.provided?).to be_false
221
+ end
222
+ end
223
+
224
+ describe "#requires_argument?" do
225
+ it "should check if the option requires argument" do
226
+ expect(::Mamertes::Option.new("NAME", []).requires_argument?).to be_false
227
+ expect(::Mamertes::Option.new("NAME", [], {type: String}).requires_argument?).to be_true
228
+ expect(::Mamertes::Option.new("NAME", [], {type: Integer}).requires_argument?).to be_true
229
+ expect(::Mamertes::Option.new("NAME", [], {type: Float}).requires_argument?).to be_true
230
+ expect(::Mamertes::Option.new("NAME", [], {type: Array}).requires_argument?).to be_true
231
+ expect(::Mamertes::Option.new("NAME").requires_argument?).to be_false
232
+ end
233
+ end
234
+
235
+ describe "#provided?" do
236
+ it "should check if the option was provided" do
237
+ expect(::Mamertes::Option.new("NAME").provided?).to be_false
238
+ option.set(true)
239
+ expect(option.provided?).to be_true
240
+ end
241
+ end
242
+
243
+ describe "#has_help?" do
244
+ it "should check if the option has a help" do
245
+ expect(::Mamertes::Option.new("NAME").has_help?).to be_false
246
+ expect(::Mamertes::Option.new("NAME", [], help: "HELP").has_help?).to be_true
247
+ end
248
+ end
249
+
250
+ describe "#value" do
251
+ it "should return the set value" do
252
+ option.default = "DEFAULT VALUE"
253
+ expect(option.value).to eq("DEFAULT VALUE")
254
+
255
+ option.default = nil
256
+ expect(option.value).to be_false
257
+
258
+ option.set(true)
259
+ expect(option.value).to be_true
260
+
261
+ option.set("VALUE")
262
+ expect(option.value).to eq("VALUE")
263
+ end
264
+
265
+ it "should return good defaults" do
266
+ expect(::Mamertes::Option.new("NAME").value).to be_false
267
+ expect(::Mamertes::Option.new("NAME", [], {type: Regexp}).value).to be_false
268
+ expect(::Mamertes::Option.new("NAME", [], {type: String}).value).to eq("")
269
+ expect(::Mamertes::Option.new("NAME", [], {type: Integer}).value).to eq(0)
270
+ expect(::Mamertes::Option.new("NAME", [], {type: Float}).value).to eq(0.0)
271
+ expect(::Mamertes::Option.new("NAME", [], {type: Array}).value).to eq([])
272
+ end
273
+ end
274
+ end
@@ -0,0 +1,126 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file is part of the mamertes gem. Copyright (C) 2013 and above Shogun <shogun_panda@me.com>.
4
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
+ #
6
+
7
+ require "spec_helper"
8
+
9
+ describe Mamertes::Parser do
10
+ let(:application) {
11
+ ::Mamertes::Application.new do
12
+ command :abc do
13
+ action do
14
+ end
15
+
16
+ command :def do
17
+ action do |command|
18
+ end
19
+ end
20
+ end
21
+
22
+ option :boolean, ["b", "boolean"], help: "BOOLEAN"
23
+ option :string, [nil, "string"], type: String, meta: "STRING", help: "STRING"
24
+ option :integer, ["i", nil], type: Integer, help: "INTEGER"
25
+ option :float, [nil, nil], type: Float, help: "FLOAT"
26
+ option :array, ["a", "array"], type: Array, help: "ARRAY"
27
+ option :choice, ["c", "choice"], type: String, help: "ARRAY", validator: ["yes", "no"]
28
+ option :regexp, ["r", "regexp"], type: String, help: "REGEXP", validator: /yes|no/i
29
+ option :action, ["A"] do |_, command|
30
+ p "[OPTION] BLOCK"
31
+ end
32
+ end
33
+ }
34
+
35
+ let(:command) {
36
+ c = ::Mamertes::Command.new
37
+ c.application = application
38
+ c
39
+ }
40
+
41
+ describe ".smart_join" do
42
+ it "should correctly join arrays" do
43
+ expect(::Mamertes::Parser.smart_join([])).to eq("")
44
+ expect(::Mamertes::Parser.smart_join(["A"], ", ", " and ", nil)).to eq("A")
45
+ expect(::Mamertes::Parser.smart_join(1, ", ", " and ", nil)).to eq("1")
46
+ expect(::Mamertes::Parser.smart_join(["A", 1], ", ", " and ", nil)).to eq("A and 1")
47
+ expect(::Mamertes::Parser.smart_join(["A", 1, true], ", ", " and ", nil)).to eq("A, 1 and true")
48
+ expect(::Mamertes::Parser.smart_join(["A", "B", "C"], "-", " and ", nil)).to eq("A-B and C")
49
+ expect(::Mamertes::Parser.smart_join(["A", "B", "C"], "-", "@", nil)).to eq("A-B@C")
50
+ expect(::Mamertes::Parser.smart_join(["A", "B", "C"], ", ", " and ", "@")).to eq("@A@, @B@ and @C@")
51
+ end
52
+ end
53
+
54
+ describe ".find_command" do
55
+ it "should find commands" do
56
+ args = ["A", "B", "C"]
57
+ s1 = command.command("abc")
58
+ s2 = command.command("abd")
59
+ s1.command("def")
60
+
61
+ expect(::Mamertes::Parser.find_command("abc", command, args)).to eq({name: "abc", args: args})
62
+ expect(::Mamertes::Parser.find_command("abc:def", command, args)).to eq({name: "abc", args: ["def"] + args})
63
+ expect(::Mamertes::Parser.find_command("abc def", command, args, " ")).to eq({name: "abc", args: ["def"] + args})
64
+ expect(::Mamertes::Parser.find_command("d", s1, args)).to eq({name: "def", args: args})
65
+ expect{ ::Mamertes::Parser.find_command("ab", command, args) }.to raise_error(::Mamertes::Error)
66
+ expect(::Mamertes::Parser.find_command("abc", s2, args)).to be_nil
67
+ end
68
+ end
69
+
70
+ describe ".parse" do
71
+ it "should instantiate a parser and then parse" do
72
+ expect(::Mamertes::Parser).to receive(:new).and_call_original
73
+ expect_any_instance_of(::Mamertes::Parser).to receive(:parse).with("COMMAND", "ARGS")
74
+ ::Mamertes::Parser.parse("COMMAND", "ARGS")
75
+ end
76
+ end
77
+
78
+ describe "#parse" do
79
+ it "should iterate options" do
80
+ expect(application.options).to receive(:each_pair).exactly(2)
81
+ ::Mamertes::Parser.parse(application, [])
82
+ end
83
+
84
+ it "should set good values" do
85
+ expect(application.options["boolean"]).to receive("set").with(true)
86
+ expect(application.options["string"]).to receive("set").with("A")
87
+ expect(application.options["integer"]).to receive("set").with(1)
88
+ expect(application.options["float"]).to receive("set").with(2.0)
89
+ expect(application.options["array"]).to receive("set").with(["B", "C"])
90
+ expect(application.options["choice"]).to receive("set").with("yes")
91
+ expect(application.options["regexp"]).to receive("set").with("no")
92
+ expect(application.options["action"]).to receive("execute_action")
93
+ ::Mamertes::Parser.parse(application, ["-b", "-s", "A", "-i", "1", "-f", "2.0", "-a", "B,C", "-c", "yes", "-r", "no", "-A"])
94
+ end
95
+
96
+ it "should complain about invalid or additional values" do
97
+ expect { ::Mamertes::Parser.parse(application, ["-b=f"]) }.to raise_error(::Mamertes::Error)
98
+ expect { ::Mamertes::Parser.parse(application, ["-s"]) }.to raise_error(::Mamertes::Error)
99
+ expect { ::Mamertes::Parser.parse(application, ["-i", "A"]) }.to raise_error(::Mamertes::Error)
100
+ expect { ::Mamertes::Parser.parse(application, ["-f", "A"]) }.to raise_error(::Mamertes::Error)
101
+ expect { ::Mamertes::Parser.parse(application, ["-c", "B"]) }.to raise_error(::Mamertes::Error)
102
+ expect { ::Mamertes::Parser.parse(application, ["-r", "C"]) }.to raise_error(::Mamertes::Error)
103
+ expect { ::Mamertes::Parser.parse(application, ["-R", "C"]) }.to raise_error(::Mamertes::Error)
104
+ application.option("R", [], {required: true})
105
+ expect { ::Mamertes::Parser.parse(application, ["-b"]) }.to raise_error(::Mamertes::Error) # Because we're missing a required option
106
+ end
107
+
108
+ it "should complain about duplicate options" do
109
+ application.option(:boolean2)
110
+ expect { ::Mamertes::Parser.parse(application, ["-b"]) }.to raise_error(::Mamertes::Error)
111
+ end
112
+
113
+ it "should return the command to execute" do
114
+ expect(::Mamertes::Parser.parse(application, ["a", "OTHER"])).to eq({name: "abc", args: ["OTHER"]})
115
+ expect(::Mamertes::Parser.parse(application, ["ab:d", "OTHER"])).to eq({name: "abc", args: ["d", "OTHER"]})
116
+ expect(::Mamertes::Parser.parse(application, ["abc", "d", "OTHER"])).to eq({name: "abc", args: ["d", "OTHER"]})
117
+ expect(::Mamertes::Parser.parse(application, ["d", "OTHER"])).to eq(nil)
118
+
119
+ application.clear_options
120
+ expect(::Mamertes::Parser.parse(application, ["a", "OTHER"])).to eq({name: "abc", args: ["OTHER"]})
121
+ expect(::Mamertes::Parser.parse(application, ["d:d", "OTHER"])).to eq(nil)
122
+ expect(::Mamertes::Parser.parse(application, ["d d", "OTHER"])).to eq(nil)
123
+ expect(::Mamertes::Parser.parse(application, ["d", "d", "OTHER"])).to eq(nil)
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file is part of the mamertes gem. Copyright (C) 2013 and above Shogun <shogun_panda@me.com>.
4
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
+ #
6
+
7
+ require "rubygems"
8
+ require "bundler/setup"
9
+ require "mamertes"
10
+
11
+ RSpec.configure do |config|
12
+ config.expect_with :rspec do |c|
13
+ c.syntax = :expect
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mamertes
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.4.1
5
+ platform: ruby
6
+ authors:
7
+ - Shogun
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bovem
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 2.4.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 2.4.0
27
+ description: Yet another command line manager.
28
+ email:
29
+ - shogun_panda@me.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - .DS_Store
35
+ - .gitignore
36
+ - .travis-gemfile
37
+ - .travis.yml
38
+ - .yardopts
39
+ - Gemfile
40
+ - README.md
41
+ - Rakefile
42
+ - doc/Mamertes.html
43
+ - doc/Mamertes/Application.html
44
+ - doc/Mamertes/Command.html
45
+ - doc/Mamertes/CommandMethods.html
46
+ - doc/Mamertes/CommandMethods/Children.html
47
+ - doc/Mamertes/CommandMethods/Help.html
48
+ - doc/Mamertes/Error.html
49
+ - doc/Mamertes/Localizer.html
50
+ - doc/Mamertes/Option.html
51
+ - doc/Mamertes/Parser.html
52
+ - doc/Mamertes/ParserMethods.html
53
+ - doc/Mamertes/ParserMethods/General.html
54
+ - doc/Mamertes/ParserMethods/General/ClassMethods.html
55
+ - doc/Mamertes/Version.html
56
+ - doc/_index.html
57
+ - doc/class_list.html
58
+ - doc/css/common.css
59
+ - doc/css/full_list.css
60
+ - doc/css/style.css
61
+ - doc/file.README.html
62
+ - doc/file_list.html
63
+ - doc/frames.html
64
+ - doc/index.html
65
+ - doc/js/app.js
66
+ - doc/js/full_list.js
67
+ - doc/js/jquery.js
68
+ - doc/method_list.html
69
+ - doc/top-level-namespace.html
70
+ - lib/mamertes.rb
71
+ - lib/mamertes/application.rb
72
+ - lib/mamertes/command.rb
73
+ - lib/mamertes/option.rb
74
+ - lib/mamertes/parser.rb
75
+ - lib/mamertes/version.rb
76
+ - locales/en.yml
77
+ - locales/it.yml
78
+ - mamertes.gemspec
79
+ - spec/coverage_helper.rb
80
+ - spec/mamertes/application_spec.rb
81
+ - spec/mamertes/command_spec.rb
82
+ - spec/mamertes/option_spec.rb
83
+ - spec/mamertes/parser_spec.rb
84
+ - spec/spec_helper.rb
85
+ homepage: http://sw.cow.tc/mamertes
86
+ licenses: []
87
+ metadata: {}
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: 1.9.3
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project: mamertes
104
+ rubygems_version: 2.0.5
105
+ signing_key:
106
+ specification_version: 4
107
+ summary: Yet another command line manager.
108
+ test_files:
109
+ - spec/coverage_helper.rb
110
+ - spec/mamertes/application_spec.rb
111
+ - spec/mamertes/command_spec.rb
112
+ - spec/mamertes/option_spec.rb
113
+ - spec/mamertes/parser_spec.rb
114
+ - spec/spec_helper.rb
115
+ has_rdoc: