wojtekmach-cli 0.1.3 → 0.2.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.
- data/lib/cli/app.rb +8 -1
- data/lib/cli/version.rb +1 -1
- data/spec/cli/app_spec.rb +30 -0
- metadata +2 -2
data/lib/cli/app.rb
CHANGED
@@ -10,6 +10,7 @@ module CLI
|
|
10
10
|
@binary = binary
|
11
11
|
@name = binary
|
12
12
|
@actions = {}
|
13
|
+
@use_actions = false
|
13
14
|
@proxy = Proxy.new(self)
|
14
15
|
@args = []
|
15
16
|
@opts = OptionParser.new
|
@@ -24,6 +25,8 @@ module CLI
|
|
24
25
|
|
25
26
|
# Defines an action
|
26
27
|
def action(name, &block)
|
28
|
+
@use_actions = true if name != "default"
|
29
|
+
|
27
30
|
@actions[name] = block
|
28
31
|
end
|
29
32
|
|
@@ -32,6 +35,10 @@ module CLI
|
|
32
35
|
block = @actions[action_name]
|
33
36
|
|
34
37
|
unless block
|
38
|
+
if action_name == "default"
|
39
|
+
raise RuntimeError, "Error: you have to define 'default' action"
|
40
|
+
end
|
41
|
+
|
35
42
|
raise ArgumentError, "action '#{action_name}' not found"
|
36
43
|
end
|
37
44
|
|
@@ -45,7 +52,7 @@ module CLI
|
|
45
52
|
@args = args
|
46
53
|
|
47
54
|
begin
|
48
|
-
if args == []
|
55
|
+
if args == [] || @use_actions == false
|
49
56
|
run "default"
|
50
57
|
else
|
51
58
|
run args[0]
|
data/lib/cli/version.rb
CHANGED
data/spec/cli/app_spec.rb
CHANGED
@@ -79,4 +79,34 @@ module CLI
|
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
82
|
+
|
83
|
+
describe App, "a simple app" do
|
84
|
+
before do
|
85
|
+
@app = App.new("hello") do
|
86
|
+
default do
|
87
|
+
puts args[0]
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
it "always runs the default action" do
|
93
|
+
$stdout.should_receive(:puts).with("Hello, World!")
|
94
|
+
@app.run!(["Hello, World!"])
|
95
|
+
|
96
|
+
$stdout.should_receive(:puts).with("1")
|
97
|
+
@app.run!(%w(1 2 3))
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe App, "blank app" do
|
102
|
+
describe "run!" do
|
103
|
+
it "should fail" do
|
104
|
+
@app = App.new("blank") do
|
105
|
+
end
|
106
|
+
|
107
|
+
$stdout.should_receive(:puts).with("Error: you have to define 'default' action")
|
108
|
+
@app.run!([])
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
82
112
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: wojtekmach-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Wojciech Mach
|
@@ -87,6 +87,6 @@ rubyforge_project: cli
|
|
87
87
|
rubygems_version: 1.3.9.1
|
88
88
|
signing_key:
|
89
89
|
specification_version: 3
|
90
|
-
summary: cli-0.
|
90
|
+
summary: cli-0.2.0
|
91
91
|
test_files: []
|
92
92
|
|