mothership 0.3.1 → 0.3.2

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.
data/lib/mothership.rb CHANGED
@@ -28,7 +28,7 @@ class Mothership
28
28
  name, *argv = global_parser.parse_flags(argv, @@commands)
29
29
 
30
30
  global = new
31
- global.input = Inputs.new(@@global, global, global_parser.given)
31
+ global.input = Inputs.new(@@global, global, global_parser)
32
32
 
33
33
  return global.default_action unless name
34
34
 
@@ -66,7 +66,7 @@ class Mothership
66
66
  end
67
67
  end
68
68
 
69
- val = get(name, @context, *args)
69
+ found, val = get(name, @context, *args)
70
70
 
71
71
  @inputs[name] = val unless meta && meta[:forget]
72
72
 
@@ -99,16 +99,18 @@ class Mothership
99
99
 
100
100
  if @command && meta = @command.inputs[name]
101
101
  found, val = find_in(@given, name, meta, context, *args)
102
- elsif meta = Mothership.global_option(name)
103
- found, val = find_in(@global, name, meta, context, *args)
102
+ elsif @global.is_a?(self.class)
103
+ found, val = @global.get(name, context, *args)
104
+ elsif @global.key?(name)
105
+ return [true, @global[name]]
104
106
  end
105
107
 
106
- return val if not found
108
+ return [false, val] if not found
107
109
 
108
110
  if val == :interact && interact = meta[:interact]
109
- context.instance_exec(*args, &interact)
111
+ [true, context.instance_exec(*args, &interact)]
110
112
  else
111
- convert_given(meta, context, val, *args)
113
+ [true, convert_given(meta, context, val, *args)]
112
114
  end
113
115
  ensure
114
116
  @current_input = before_input
@@ -1,3 +1,3 @@
1
1
  class Mothership
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/spec/flags_spec.rb CHANGED
@@ -5,33 +5,33 @@ describe Mothership::Parser do
5
5
  describe "any" do
6
6
  it "accepts --foo=bar and --foo bar" do
7
7
  command(:foo => {}) do |c|
8
- inputs(c, "--foo=bar").should == {:foo => "bar"}
9
- inputs(c, "--foo", "bar").should == {:foo => "bar"}
8
+ inputs(c, "--foo=bar").should == { :foo => "bar" }
9
+ inputs(c, "--foo", "bar").should == { :foo => "bar" }
10
10
  end
11
11
  end
12
12
 
13
13
  it "accepts --foo-bar bar as :foo_bar => \"bar\"" do
14
14
  command(:foo_bar => {}) do |c|
15
- inputs(c, "--foo-bar", "bar").should == {:foo_bar => "bar"}
15
+ inputs(c, "--foo-bar", "bar").should == { :foo_bar => "bar" }
16
16
  end
17
17
  end
18
18
 
19
19
  it "accepts --foo as :foo => \"\"" do
20
20
  command(:foo => {}) do |c|
21
- inputs(c, "--foo").should == {:foo => ""}
21
+ inputs(c, "--foo").should == { :foo => "" }
22
22
  end
23
23
  end
24
24
  end
25
25
 
26
26
  describe :integer do
27
27
  it "interprets --foo 1 as :foo => 1" do
28
- command(:foo => {:type => :integer}) do |c|
29
- inputs(c, "--foo", "1").should == {:foo => 1}
28
+ command(:foo => { :type => :integer }) do |c|
29
+ inputs(c, "--foo", "1").should == { :foo => 1 }
30
30
  end
31
31
  end
32
32
 
33
33
  it "fails with --foo bar" do
34
- command(:foo => {:type => :integer}) do |c|
34
+ command(:foo => { :type => :integer }) do |c|
35
35
  proc {
36
36
  inputs(c, "--foo", "bar")
37
37
  }.should raise_error(Mothership::TypeMismatch)
@@ -39,7 +39,7 @@ describe Mothership::Parser do
39
39
  end
40
40
 
41
41
  it "fails with --foo" do
42
- command(:foo => {:type => :integer}) do |c|
42
+ command(:foo => { :type => :integer }) do |c|
43
43
  proc {
44
44
  inputs(c, "--foo")
45
45
  }.should raise_error(Mothership::TypeMismatch)
@@ -49,25 +49,25 @@ describe Mothership::Parser do
49
49
 
50
50
  describe :float do
51
51
  it "interprets --foo 1 as :foo => 1.0" do
52
- command(:foo => {:type => :float}) do |c|
53
- inputs(c, "--foo", "1").should == {:foo => 1.0}
52
+ command(:foo => { :type => :float }) do |c|
53
+ inputs(c, "--foo", "1").should == { :foo => 1.0 }
54
54
  end
55
55
  end
56
56
 
57
57
  it "interprets --foo 1. as :foo => 1.0" do
58
- command(:foo => {:type => :float}) do |c|
59
- inputs(c, "--foo", "1.").should == {:foo => 1.0}
58
+ command(:foo => { :type => :float }) do |c|
59
+ inputs(c, "--foo", "1.").should == { :foo => 1.0 }
60
60
  end
61
61
  end
62
62
 
63
63
  it "interprets --foo 2.5 as :foo => 2.5" do
64
- command(:foo => {:type => :float}) do |c|
65
- inputs(c, "--foo", "2.5").should == {:foo => 2.5}
64
+ command(:foo => { :type => :float }) do |c|
65
+ inputs(c, "--foo", "2.5").should == { :foo => 2.5 }
66
66
  end
67
67
  end
68
68
 
69
69
  it "fails with --foo bar" do
70
- command(:foo => {:type => :float}) do |c|
70
+ command(:foo => { :type => :float }) do |c|
71
71
  proc {
72
72
  inputs(c, "--foo", "bar")
73
73
  }.should raise_error(Mothership::TypeMismatch)
@@ -75,7 +75,7 @@ describe Mothership::Parser do
75
75
  end
76
76
 
77
77
  it "fails with --foo" do
78
- command(:foo => {:type => :float}) do |c|
78
+ command(:foo => { :type => :float }) do |c|
79
79
  proc {
80
80
  inputs(c, "--foo")
81
81
  }.should raise_error(Mothership::TypeMismatch)
@@ -85,36 +85,36 @@ describe Mothership::Parser do
85
85
 
86
86
  describe :boolean do
87
87
  it "interprets --foo as :foo => true" do
88
- command(:foo => {:type => :boolean}) do |c|
89
- inputs(c, "--foo").should == {:foo => true}
88
+ command(:foo => { :type => :boolean }) do |c|
89
+ inputs(c, "--foo").should == { :foo => true }
90
90
  end
91
91
  end
92
92
 
93
93
  it "interprets --no-foo as :foo => false" do
94
- command(:foo => {:type => :boolean}) do |c|
95
- inputs(c, "--no-foo").should == {:foo => false}
94
+ command(:foo => { :type => :boolean }) do |c|
95
+ inputs(c, "--no-foo").should == { :foo => false }
96
96
  end
97
97
  end
98
98
  it "interprets --foo true as :foo => true" do
99
- command(:foo => {:type => :boolean}) do |c|
100
- inputs(c, "--foo", "true").should == {:foo => true}
99
+ command(:foo => { :type => :boolean }) do |c|
100
+ inputs(c, "--foo", "true").should == { :foo => true }
101
101
  end
102
102
  end
103
103
 
104
104
  it "interprets --no-foo true as :foo => false" do
105
- command(:foo => {:type => :boolean}) do |c|
106
- inputs(c, "--no-foo", "true").should == {:foo => false}
105
+ command(:foo => { :type => :boolean }) do |c|
106
+ inputs(c, "--no-foo", "true").should == { :foo => false }
107
107
  end
108
108
  end
109
109
  it "interprets --foo false as :foo => false" do
110
- command(:foo => {:type => :boolean}) do |c|
111
- inputs(c, "--foo", "false").should == {:foo => false}
110
+ command(:foo => { :type => :boolean }) do |c|
111
+ inputs(c, "--foo", "false").should == { :foo => false }
112
112
  end
113
113
  end
114
114
 
115
115
  it "interprets --no-foo false as :foo => true" do
116
- command(:foo => {:type => :boolean}) do |c|
117
- inputs(c, "--no-foo", "false").should == {:foo => true}
116
+ command(:foo => { :type => :boolean }) do |c|
117
+ inputs(c, "--no-foo", "false").should == { :foo => true }
118
118
  end
119
119
  end
120
120
  end
@@ -0,0 +1,31 @@
1
+ require "mothership"
2
+
3
+ module MothershipHelpers
4
+ def command(inputs = {})
5
+ cmd = Mothership::Command.new(Mothership)
6
+
7
+ inputs.each do |name, opts|
8
+ cmd.add_input(name, opts)
9
+ end
10
+
11
+ if block_given?
12
+ yield cmd
13
+ else
14
+ cmd
15
+ end
16
+ end
17
+
18
+ def inputs(cmd, *argv)
19
+ input_hash = {}
20
+ given = Mothership::Parser.new(cmd).parse_argv(argv)
21
+ inputs = Mothership::Inputs.new(cmd, nil, {}, given)
22
+ given.each_key do |k|
23
+ input_hash[k] = inputs[k]
24
+ end
25
+ input_hash
26
+ end
27
+ end
28
+
29
+ RSpec.configure do |c|
30
+ c.include MothershipHelpers
31
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mothership
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 1
10
- version: 0.3.1
9
+ - 2
10
+ version: 0.3.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alex Suraci
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-12-04 00:00:00 Z
18
+ date: 2012-12-05 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rake
@@ -73,6 +73,7 @@ files:
73
73
  - spec/combination_spec.rb
74
74
  - spec/flags_spec.rb
75
75
  - spec/Rakefile
76
+ - spec/spec_helper.rb
76
77
  homepage: https://github.com/vito/mothership
77
78
  licenses: []
78
79
 
@@ -111,3 +112,4 @@ test_files:
111
112
  - spec/combination_spec.rb
112
113
  - spec/flags_spec.rb
113
114
  - spec/Rakefile
115
+ - spec/spec_helper.rb