moses 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.8
1
+ 0.1.9
@@ -59,10 +59,9 @@ class Moses::Application
59
59
  FileUtils.touch("#{@root_path}/#{@app_name}/bin/#{@app_name}")
60
60
  FileUtils.chmod("u+x", "#{@root_path}/#{@app_name}/bin/#{@app_name}")
61
61
  File.open("#{@root_path}/#{@app_name}/bin/#{@app_name}", 'w+') do |f|
62
- f << %Q{
63
- #!/usr/bin/env ruby
62
+ f << %Q{#!/usr/bin/env ruby
64
63
  $: << File.expand_path(File.join(File.dirname(__FILE__), "../lib"))
65
- require '#{@app_name}'
64
+ require "#{@app_name}"
66
65
  #{@app_name.camelize}.new.run
67
66
  }
68
67
  end
@@ -77,7 +76,8 @@ require '#{@app_name}'
77
76
  unless File.file?("#{@root_path}/#{@app_name}/lib/#{@app_name}.rb")
78
77
  FileUtils.touch("#{@root_path}/#{@app_name}/lib/#{@app_name}.rb")
79
78
  File.open("#{@root_path}/#{@app_name}/lib/#{@app_name}.rb", 'w+') do |f|
80
- f << %Q{
79
+ f << %Q{require "moses"
80
+
81
81
  class #{@app_name.camelize}
82
82
  include Moses
83
83
  end
data/lib/moses.rb CHANGED
@@ -69,7 +69,7 @@ module Moses
69
69
  def parse_options
70
70
  @args.each_with_index do |arg, index|
71
71
  if flag?(arg)
72
- #TODO split compound single dash flags
72
+ #TODO split compound single dash flags -abc
73
73
  next_index = index + 1
74
74
  if variable_option? index
75
75
  create_variable_option(arg, next_index)
@@ -82,7 +82,7 @@ module Moses
82
82
  end
83
83
 
84
84
  def parse_command
85
- unless default_command
85
+ unless default_command && @args.first == default_command
86
86
  @command = @args.shift.to_sym if @args.first && @args.first.respond_to?(:to_sym)
87
87
  end
88
88
  end
data/moses.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "moses"
8
- s.version = "0.1.8"
8
+ s.version = "0.1.9"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dayton Nolan"]
12
- s.date = "2013-05-21"
12
+ s.date = "2013-10-17"
13
13
  s.description = "Moses is a simple command parser for writing command line applications"
14
14
  s.email = "daytonn@gmail.com"
15
15
  s.executables = ["moses"]
@@ -35,8 +35,7 @@ Gem::Specification.new do |s|
35
35
  "moses.png",
36
36
  "spec/application_spec.rb",
37
37
  "spec/moses_spec.rb",
38
- "spec/spec_helper.rb",
39
- "test.rb"
38
+ "spec/spec_helper.rb"
40
39
  ]
41
40
  s.homepage = "http://github.com/daytonn/moses"
42
41
  s.licenses = ["Apache 2.0"]
@@ -54,10 +54,9 @@ describe Moses::Application do
54
54
  it "makes an executable file" do
55
55
  expect(File.file?("#{@tmp_dir}/test_app/bin/test_app")).to be_true
56
56
  expect(File.executable?("#{@tmp_dir}/test_app/bin/test_app")).to be_true
57
- expected_content = %Q{
58
- #!/usr/bin/env ruby
57
+ expected_content = %Q{#!/usr/bin/env ruby
59
58
  $: << File.expand_path(File.join(File.dirname(__FILE__), "../lib"))
60
- require 'test_app'
59
+ require "test_app"
61
60
  TestApp.new.run
62
61
  }
63
62
  expect(File.read("#{@tmp_dir}/test_app/bin/test_app")).to eq(expected_content)
@@ -69,7 +68,8 @@ TestApp.new.run
69
68
 
70
69
  it "makes an applcation class file" do
71
70
  expect(File.file?("#{@tmp_dir}/test_app/lib/test_app.rb")).to be_true
72
- expected_content = %Q{
71
+ expected_content = %Q{require "moses"
72
+
73
73
  class TestApp
74
74
  include Moses
75
75
  end
data/spec/moses_spec.rb CHANGED
@@ -94,7 +94,7 @@ describe Moses do
94
94
 
95
95
  describe "version_file_content" do
96
96
  it "returns the contents of the VERSION file" do
97
- module Moses VERSION_FILE = 'VERSION.test'; end
97
+ stub_const("Moses::VERSION_FILE", "VERSION.test")
98
98
  File.open('VERSION.test', 'w+') do |f|
99
99
  f << 'x.x.x'
100
100
  end
@@ -103,13 +103,13 @@ describe Moses do
103
103
  end
104
104
 
105
105
  it "outputs an instruction message when no VERSION file is present" do
106
- module Moses VERSION_FILE = 'VERSION.test'; end
106
+ stub_const("Moses::VERSION_FILE", "VERSION.test")
107
107
  @output.should_receive(:puts).with("Include a VERSION file in your project or define a version method")
108
108
  @app.send(:version)
109
109
  end
110
110
 
111
111
  it "returns the contents of the VERSION file" do
112
- module Moses VERSION_FILE = 'VERSION.test'; end
112
+ stub_const("Moses::VERSION_FILE", "VERSION.test")
113
113
  File.open("VERSION.test", "w+") do |f|
114
114
  f << 'x.x.x'
115
115
  end
@@ -134,12 +134,6 @@ describe Moses do
134
134
  expect(@dc_app.default_command).to eq(:some_command)
135
135
  end
136
136
 
137
- it "doesn't overwrite the default command when passed arguments" do
138
- ARGV = ['test']
139
- @dc_app.run
140
- expect(@dc_app.command).to be_nil
141
- expect(@dc_app.args.first).to eq('test')
142
- end
143
137
  end
144
138
 
145
139
  describe 'option commands' do
@@ -176,7 +170,7 @@ describe Moses do
176
170
  end
177
171
 
178
172
  it "sets the command to the default option command if the default option is set" do
179
- ARGV = ['-h']
173
+ stub_const("ARGV", ['-h'])
180
174
  @app.run
181
175
  expect(@app.command).to eq(:help)
182
176
  end
@@ -188,7 +182,7 @@ describe Moses do
188
182
  option_commands({ foo: :foo, v: :verbose })
189
183
  end
190
184
  @opt_cmd = OptionCommandsClass.new
191
- ARGV = ['-v']
185
+ stub_const("ARGV", ['-v'])
192
186
  @opt_cmd.run
193
187
  expect(@opt_cmd.command).to eq(:verbose)
194
188
  end
@@ -203,7 +197,7 @@ describe Moses do
203
197
 
204
198
  describe "run" do
205
199
  it "creates a local array of the ARGV array" do
206
- ARGV = ['one', 'two', 'three']
200
+ stub_const("ARGV", ['one', 'two', 'three'])
207
201
  @app.stub(:parse_command)
208
202
  @app.run
209
203
  expect(@app.args).to eq(['one', 'two', 'three'])
@@ -211,7 +205,7 @@ describe Moses do
211
205
 
212
206
  describe "command parsing" do
213
207
  before do
214
- ARGV = ['foo']
208
+ stub_const("ARGV", ['foo'])
215
209
  @app.run
216
210
  end
217
211
 
@@ -227,7 +221,7 @@ describe Moses do
227
221
  describe "option parsing" do
228
222
  describe "single dash flag" do
229
223
  it "creates a boolean option with single dash flags -f" do
230
- ARGV = ['foo', '-f']
224
+ stub_const("ARGV", ['foo', '-f'])
231
225
  @app.run
232
226
  expect(@app.options[:f]).to be_true
233
227
  end
@@ -236,14 +230,14 @@ describe Moses do
236
230
  describe 'double dash flag' do
237
231
 
238
232
  it "removes the flags from the args array" do
239
- ARGV = ['foo', '--flag', '-f']
233
+ stub_const("ARGV", ['foo', '--flag', '-f'])
240
234
  @app.run
241
235
  expect(@app.args).to eq([])
242
236
  end
243
237
 
244
238
  context 'with value' do
245
239
  it "creates a variable option" do
246
- ARGV = ['foo', '--flag', 'value']
240
+ stub_const("ARGV", ['foo', '--flag', 'value'])
247
241
  @app.run
248
242
  expect(@app.options[:flag]).to eq('value')
249
243
  end
@@ -251,7 +245,7 @@ describe Moses do
251
245
 
252
246
  context 'without value' do
253
247
  it "creates a boolean option" do
254
- ARGV = ['foo', '--flag']
248
+ stub_const("ARGV", ['foo', '--flag'])
255
249
  @app.run
256
250
  expect(@app.options[:flag]).to be_true
257
251
  end
@@ -261,29 +255,29 @@ describe Moses do
261
255
 
262
256
  describe "running commands" do
263
257
  it "sends the command if it is in the commands white list" do
264
- ARGV = ['foo']
258
+ stub_const("ARGV", ['foo'])
265
259
  @app.stub(:foo)
266
260
  @app.should_receive(:foo)
267
261
  @app.run
268
262
  end
269
263
 
270
264
  it "does not send a command if it is not in the commands white list" do
271
- ARGV = ['baz']
265
+ stub_const("ARGV", ['baz'])
272
266
  @app.should_not_receive(:baz)
273
267
  @app.run
274
268
  end
275
269
 
276
270
  it "does not send a command if the method is not defined" do
277
- ARGV = ['bar']
271
+ stub_const("ARGV", ['bar'])
278
272
  @app.should_not_receive(:bar)
279
273
  @app.run
280
274
  end
281
275
 
282
276
  it "runs any option commands if the option was passed" do
283
- ARGV = ['-h']
277
+ stub_const("ARGV", ['-h'])
284
278
  @app.should_receive(:help)
285
279
  @app.run
286
280
  end
287
281
  end
288
282
  end
289
- end
283
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moses
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-21 00:00:00.000000000 Z
12
+ date: 2013-10-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -134,7 +134,6 @@ files:
134
134
  - spec/application_spec.rb
135
135
  - spec/moses_spec.rb
136
136
  - spec/spec_helper.rb
137
- - test.rb
138
137
  homepage: http://github.com/daytonn/moses
139
138
  licenses:
140
139
  - Apache 2.0
@@ -150,7 +149,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
149
  version: '0'
151
150
  segments:
152
151
  - 0
153
- hash: -2029242143119377682
152
+ hash: -2311972291789989622
154
153
  required_rubygems_version: !ruby/object:Gem::Requirement
155
154
  none: false
156
155
  requirements:
data/test.rb DELETED
@@ -1,27 +0,0 @@
1
- require 'pry'
2
-
3
- module Foo
4
-
5
- def self.included(base)
6
- base.extend(ClassMethods)
7
- end
8
-
9
- module ClassMethods
10
- def commands(*args)
11
- class_eval %Q{
12
- def commands
13
- @commands ||= #{args}
14
- end
15
- }
16
- end
17
- end
18
- end
19
-
20
- class Bar
21
- include Foo
22
-
23
- commands :foo, :bar
24
- end
25
-
26
- b = Bar.new
27
- puts b.commands