mamertes 2.4.1

Sign up to get free protection for your applications and to get access to all the features.
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: