mortar 0.7.4 → 0.7.5
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/mortar/command/illustrate.rb +3 -4
- data/lib/mortar/command/local.rb +5 -3
- data/lib/mortar/local/pig.rb +7 -1
- data/lib/mortar/version.rb +1 -1
- data/spec/mortar/command/illustrate_spec.rb +34 -12
- data/spec/mortar/command/local_spec.rb +16 -12
- metadata +138 -84
@@ -22,7 +22,7 @@ class Mortar::Command::Illustrate < Mortar::Command::Base
|
|
22
22
|
|
23
23
|
include Mortar::Git
|
24
24
|
|
25
|
-
# illustrate
|
25
|
+
# illustrate PIGSCRIPT [ALIAS]
|
26
26
|
#
|
27
27
|
# Illustrate the effects and output of a pigscript.
|
28
28
|
#
|
@@ -43,9 +43,8 @@ class Mortar::Command::Illustrate < Mortar::Command::Base
|
|
43
43
|
validate_arguments!
|
44
44
|
pigscript = validate_script!(pigscript_name)
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
error("Usage: mortar illustrate PIGSCRIPT ALIAS\nMust specify PIGSCRIPT and ALIAS.")
|
46
|
+
unless pigscript_name
|
47
|
+
error("Usage: mortar illustrate PIGSCRIPT [ALIAS]\nMust specify PIGSCRIPT.")
|
49
48
|
end
|
50
49
|
|
51
50
|
if pigscript.is_a? Mortar::Project::ControlScript
|
data/lib/mortar/command/local.rb
CHANGED
@@ -54,9 +54,11 @@ class Mortar::Command::Local < Mortar::Command::Base
|
|
54
54
|
ctrl.run(script, pig_parameters)
|
55
55
|
end
|
56
56
|
|
57
|
-
# local:illustrate
|
57
|
+
# local:illustrate PIGSCRIPT [ALIAS]
|
58
58
|
#
|
59
59
|
# Locally illustrate the effects and output of a pigscript.
|
60
|
+
# If an alias is specified, will show data flow from the ancestor LOAD statements to the alias itself.
|
61
|
+
# If no alias is specified, will show data flow through all aliases in the script.
|
60
62
|
#
|
61
63
|
# -s, --skippruning # Don't try to reduce the illustrate results to the smallest size possible.
|
62
64
|
# -p, --parameter NAME=VALUE # Set a pig parameter value in your script.
|
@@ -72,8 +74,8 @@ class Mortar::Command::Local < Mortar::Command::Base
|
|
72
74
|
alias_name = shift_argument
|
73
75
|
skip_pruning = options[:skippruning] ||= false
|
74
76
|
|
75
|
-
unless pigscript_name
|
76
|
-
error("Usage: mortar local:illustrate PIGSCRIPT ALIAS\nMust specify PIGSCRIPT
|
77
|
+
unless pigscript_name
|
78
|
+
error("Usage: mortar local:illustrate PIGSCRIPT [ALIAS]\nMust specify PIGSCRIPT.")
|
77
79
|
end
|
78
80
|
|
79
81
|
validate_arguments!
|
data/lib/mortar/local/pig.rb
CHANGED
@@ -213,10 +213,16 @@ class Mortar::Local::Pig
|
|
213
213
|
# Now point us at the script/alias to illustrate
|
214
214
|
illustrate_outpath = create_illustrate_output_path()
|
215
215
|
cmd += "-script #{pig_script.path} -out #{illustrate_outpath} "
|
216
|
+
|
216
217
|
if skip_pruning
|
217
218
|
cmd += " -skipPruning "
|
218
219
|
end
|
219
|
-
|
220
|
+
|
221
|
+
if pig_alias
|
222
|
+
cmd += " #{pig_alias} "
|
223
|
+
end
|
224
|
+
|
225
|
+
cmd += "'"
|
220
226
|
|
221
227
|
result = run_pig_command(cmd, [], false)
|
222
228
|
if result
|
data/lib/mortar/version.rb
CHANGED
@@ -29,18 +29,6 @@ module Mortar::Command
|
|
29
29
|
end
|
30
30
|
|
31
31
|
context("index") do
|
32
|
-
|
33
|
-
it "errors when an alias is not provided" do
|
34
|
-
with_git_initialized_project do |p|
|
35
|
-
write_file(File.join(p.pigscripts_path, "my_script.pig"))
|
36
|
-
stderr, stdout = execute("illustrate my_script", p)
|
37
|
-
stderr.should == <<-STDERR
|
38
|
-
! Usage: mortar illustrate PIGSCRIPT ALIAS
|
39
|
-
! Must specify PIGSCRIPT and ALIAS.
|
40
|
-
STDERR
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
32
|
it "errors when no remote exists in the project" do
|
45
33
|
with_git_initialized_project do |p|
|
46
34
|
@git.git('remote rm mortar')
|
@@ -159,6 +147,40 @@ Starting illustrate... done
|
|
159
147
|
\r\e[0KStatus: Pending... /\r\e[0KStatus: Succeeded
|
160
148
|
|
161
149
|
Results available at https://api.mortardata.com/illustrates/c571a8c7f76a4fd4a67c103d753e2dd5
|
150
|
+
STDOUT
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
it "requests and reports on a successful illustrate without an alias" do
|
155
|
+
with_git_initialized_project do |p|
|
156
|
+
# stub api requests
|
157
|
+
illustrate_id = "c571a8c7f76a4fd4a67c103d753e2dd5"
|
158
|
+
illustrate_url = "https://api.mortardata.com/illustrates/#{illustrate_id}"
|
159
|
+
parameters = ["name"=>"key", "value"=>"value" ]
|
160
|
+
|
161
|
+
# These don't test the validity of the error message, it only tests that the CLI can handle a message returned from the server
|
162
|
+
mock(Mortar::Auth.api).post_illustrate("myproject", "my_script", nil, false, is_a(String), :parameters => parameters) {Excon::Response.new(:body => {"illustrate_id" => illustrate_id})}
|
163
|
+
mock(Mortar::Auth.api).get_illustrate(illustrate_id, :exclude_result => true).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Illustrate::STATUS_QUEUED, "status_description" => "Pending"})).ordered
|
164
|
+
mock(Mortar::Auth.api).get_illustrate(illustrate_id, :exclude_result => true).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Illustrate::STATUS_GATEWAY_STARTING, "status_description" => "GATEWAY_STARTING"})).ordered
|
165
|
+
mock(Mortar::Auth.api).get_illustrate(illustrate_id, :exclude_result => true).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Illustrate::STATUS_PROGRESS, "status_description" => "In progress"})).ordered
|
166
|
+
mock(Mortar::Auth.api).get_illustrate(illustrate_id, :exclude_result => true).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Illustrate::STATUS_READING_DATA, "status_description" => "Reading data"})).ordered
|
167
|
+
mock(Mortar::Auth.api).get_illustrate(illustrate_id, :exclude_result => true).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Illustrate::STATUS_PRUNING_DATA, "status_description" => "Pruning data"})).ordered
|
168
|
+
mock(Mortar::Auth.api).get_illustrate(illustrate_id, :exclude_result => true).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Illustrate::STATUS_SUCCESS, "status_description" => "Succeeded", "web_result_url" => illustrate_url})).ordered
|
169
|
+
|
170
|
+
# stub launchy
|
171
|
+
mock(Launchy).open(illustrate_url) {Thread.new {}}
|
172
|
+
|
173
|
+
write_file(File.join(p.pigscripts_path, "my_script.pig"))
|
174
|
+
stderr, stdout = execute("illustrate my_script --polling_interval 0.05 -p key=value", p, @git)
|
175
|
+
stdout.should == <<-STDOUT
|
176
|
+
Taking code snapshot... done
|
177
|
+
Sending code snapshot to Mortar... done
|
178
|
+
Starting illustrate... done
|
179
|
+
|
180
|
+
\r\e[0KStatus: Pending... /\r\e[0KStatus: GATEWAY_STARTING... -\r\e[0KStatus: In progress... \\\r\e[0KStatus: Reading data... |\r\e[0KStatus: Pruning data... /\r\e[0KStatus: Succeeded
|
181
|
+
|
182
|
+
Results available at https://api.mortardata.com/illustrates/c571a8c7f76a4fd4a67c103d753e2dd5
|
183
|
+
Opening web browser to show results... done
|
162
184
|
STDOUT
|
163
185
|
end
|
164
186
|
end
|
@@ -23,17 +23,6 @@ module Mortar::Command
|
|
23
23
|
describe Local do
|
24
24
|
|
25
25
|
context("illustrate") do
|
26
|
-
it "errors when an alias is not provided" do
|
27
|
-
with_git_initialized_project do |p|
|
28
|
-
write_file(File.join(p.pigscripts_path, "my_script.pig"))
|
29
|
-
stderr, stdout = execute("local:illustrate my_script", p)
|
30
|
-
stderr.should == <<-STDERR
|
31
|
-
! Usage: mortar local:illustrate PIGSCRIPT ALIAS
|
32
|
-
! Must specify PIGSCRIPT and ALIAS.
|
33
|
-
STDERR
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
26
|
it "errors when the script doesn't exist" do
|
38
27
|
with_git_initialized_project do |p|
|
39
28
|
write_file(File.join(p.pigscripts_path, "my_other_script.pig"))
|
@@ -46,7 +35,7 @@ STDERR
|
|
46
35
|
end
|
47
36
|
end
|
48
37
|
|
49
|
-
it "calls the illustrate command when envoked
|
38
|
+
it "calls the illustrate command when envoked with an alias" do
|
50
39
|
with_git_initialized_project do |p|
|
51
40
|
script_name = "some_script"
|
52
41
|
script_path = File.join(p.pigscripts_path, "#{script_name}.pig")
|
@@ -61,6 +50,21 @@ STDERR
|
|
61
50
|
end
|
62
51
|
end
|
63
52
|
|
53
|
+
it "calls the illustrate command when envoked without an alias" do
|
54
|
+
with_git_initialized_project do |p|
|
55
|
+
script_name = "some_script"
|
56
|
+
script_path = File.join(p.pigscripts_path, "#{script_name}.pig")
|
57
|
+
write_file(script_path)
|
58
|
+
pigscript = Mortar::Project::PigScript.new(script_name, script_path)
|
59
|
+
mock(Mortar::Project::PigScript).new(script_name, script_path).returns(pigscript)
|
60
|
+
any_instance_of(Mortar::Local::Controller) do |u|
|
61
|
+
mock(u).illustrate(pigscript, nil, [], false).returns(nil)
|
62
|
+
end
|
63
|
+
stderr, stdout = execute("local:illustrate #{script_name}", p)
|
64
|
+
stderr.should == ""
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
64
68
|
# illustrate
|
65
69
|
end
|
66
70
|
|
metadata
CHANGED
@@ -1,122 +1,164 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: mortar
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 9
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 7
|
9
|
+
- 5
|
10
|
+
version: 0.7.5
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Mortar Data
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2013-04-18 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: mortar-api-ruby
|
16
|
-
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
24
|
none: false
|
18
|
-
requirements:
|
25
|
+
requirements:
|
19
26
|
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 1
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 6
|
32
|
+
- 3
|
21
33
|
version: 0.6.3
|
22
34
|
type: :runtime
|
23
|
-
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
26
37
|
name: netrc
|
27
|
-
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
40
|
none: false
|
29
|
-
requirements:
|
41
|
+
requirements:
|
30
42
|
- - ~>
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 5
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
- 7
|
48
|
+
version: "0.7"
|
33
49
|
type: :runtime
|
34
|
-
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
37
52
|
name: launchy
|
38
|
-
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
55
|
none: false
|
40
|
-
requirements:
|
56
|
+
requirements:
|
41
57
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 1
|
60
|
+
segments:
|
61
|
+
- 2
|
62
|
+
- 1
|
63
|
+
version: "2.1"
|
44
64
|
type: :runtime
|
45
|
-
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
65
|
+
version_requirements: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
48
67
|
name: excon
|
49
|
-
|
68
|
+
prerelease: false
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
70
|
none: false
|
51
|
-
requirements:
|
71
|
+
requirements:
|
52
72
|
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 21
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
- 15
|
78
|
+
version: "0.15"
|
55
79
|
type: :development
|
56
|
-
|
57
|
-
|
58
|
-
- !ruby/object:Gem::Dependency
|
80
|
+
version_requirements: *id004
|
81
|
+
- !ruby/object:Gem::Dependency
|
59
82
|
name: fakefs
|
60
|
-
|
83
|
+
prerelease: false
|
84
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
61
85
|
none: false
|
62
|
-
requirements:
|
86
|
+
requirements:
|
63
87
|
- - ~>
|
64
|
-
- !ruby/object:Gem::Version
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
hash: 11
|
90
|
+
segments:
|
91
|
+
- 0
|
92
|
+
- 4
|
93
|
+
- 2
|
65
94
|
version: 0.4.2
|
66
95
|
type: :development
|
67
|
-
|
68
|
-
|
69
|
-
- !ruby/object:Gem::Dependency
|
96
|
+
version_requirements: *id005
|
97
|
+
- !ruby/object:Gem::Dependency
|
70
98
|
name: gem-release
|
71
|
-
|
99
|
+
prerelease: false
|
100
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
72
101
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
hash: 3
|
106
|
+
segments:
|
107
|
+
- 0
|
108
|
+
version: "0"
|
77
109
|
type: :development
|
78
|
-
|
79
|
-
|
80
|
-
- !ruby/object:Gem::Dependency
|
110
|
+
version_requirements: *id006
|
111
|
+
- !ruby/object:Gem::Dependency
|
81
112
|
name: rake
|
82
|
-
|
113
|
+
prerelease: false
|
114
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
83
115
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
hash: 3
|
120
|
+
segments:
|
121
|
+
- 0
|
122
|
+
version: "0"
|
88
123
|
type: :development
|
89
|
-
|
90
|
-
|
91
|
-
- !ruby/object:Gem::Dependency
|
124
|
+
version_requirements: *id007
|
125
|
+
- !ruby/object:Gem::Dependency
|
92
126
|
name: rr
|
93
|
-
|
127
|
+
prerelease: false
|
128
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
hash: 3
|
134
|
+
segments:
|
135
|
+
- 0
|
136
|
+
version: "0"
|
99
137
|
type: :development
|
100
|
-
|
101
|
-
|
102
|
-
- !ruby/object:Gem::Dependency
|
138
|
+
version_requirements: *id008
|
139
|
+
- !ruby/object:Gem::Dependency
|
103
140
|
name: rspec
|
104
|
-
|
141
|
+
prerelease: false
|
142
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
105
143
|
none: false
|
106
|
-
requirements:
|
107
|
-
- -
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
|
144
|
+
requirements:
|
145
|
+
- - ">="
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
hash: 3
|
148
|
+
segments:
|
149
|
+
- 0
|
150
|
+
version: "0"
|
110
151
|
type: :development
|
111
|
-
|
112
|
-
version_requirements: *71977380
|
152
|
+
version_requirements: *id009
|
113
153
|
description: Client library and command-line tool to interact with the Mortar service.
|
114
154
|
email: support@mortardata.com
|
115
|
-
executables:
|
155
|
+
executables:
|
116
156
|
- mortar
|
117
157
|
extensions: []
|
158
|
+
|
118
159
|
extra_rdoc_files: []
|
119
|
-
|
160
|
+
|
161
|
+
files:
|
120
162
|
- README.md
|
121
163
|
- bin/mortar
|
122
164
|
- css/illustrate.css
|
@@ -207,26 +249,38 @@ files:
|
|
207
249
|
- spec/support/display_message_matcher.rb
|
208
250
|
homepage: http://mortardata.com/
|
209
251
|
licenses: []
|
252
|
+
|
210
253
|
post_install_message:
|
211
254
|
rdoc_options: []
|
212
|
-
|
255
|
+
|
256
|
+
require_paths:
|
213
257
|
- lib
|
214
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
258
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
215
259
|
none: false
|
216
|
-
requirements:
|
217
|
-
- -
|
218
|
-
- !ruby/object:Gem::Version
|
260
|
+
requirements:
|
261
|
+
- - ">="
|
262
|
+
- !ruby/object:Gem::Version
|
263
|
+
hash: 57
|
264
|
+
segments:
|
265
|
+
- 1
|
266
|
+
- 8
|
267
|
+
- 7
|
219
268
|
version: 1.8.7
|
220
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
221
270
|
none: false
|
222
|
-
requirements:
|
223
|
-
- -
|
224
|
-
- !ruby/object:Gem::Version
|
225
|
-
|
271
|
+
requirements:
|
272
|
+
- - ">="
|
273
|
+
- !ruby/object:Gem::Version
|
274
|
+
hash: 3
|
275
|
+
segments:
|
276
|
+
- 0
|
277
|
+
version: "0"
|
226
278
|
requirements: []
|
279
|
+
|
227
280
|
rubyforge_project:
|
228
|
-
rubygems_version: 1.8.
|
281
|
+
rubygems_version: 1.8.24
|
229
282
|
signing_key:
|
230
283
|
specification_version: 3
|
231
284
|
summary: Client library and CLI to interact with the Mortar service.
|
232
285
|
test_files: []
|
286
|
+
|