mortar 0.8.7 → 0.8.8

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/auth.rb CHANGED
@@ -88,8 +88,9 @@ class Mortar::Auth
88
88
  get_credentials[1]
89
89
  end
90
90
 
91
- def user_s3_safe
92
- return user.gsub(/[^0-9a-zA-Z]/i, '-')
91
+ def user_s3_safe(local = false)
92
+ user_email = (local && !has_credentials) ? "notloggedin@user.org" : user
93
+ return user_email.gsub(/[^0-9a-zA-Z]/i, '-')
93
94
  end
94
95
 
95
96
  def api_key(user = get_credentials[0], password = get_credentials[1])
@@ -74,8 +74,9 @@ class Mortar::Command::Base
74
74
  paramfile_params = {}
75
75
  if options[:param_file]
76
76
  File.open(options[:param_file], "r").each do |line|
77
+ line = line.chomp
77
78
  # If the line isn't empty
78
- if not line.chomp.empty? and not line.chomp.match(/^;/)
79
+ if not line.empty? and not line.match(/^;/) and not line.start_with?("#")
79
80
  name, value = line.split('=', 2)
80
81
  if not name or not value
81
82
  error("Parameter file is malformed")
@@ -14,6 +14,7 @@
14
14
  # limitations under the License.
15
15
  #
16
16
 
17
+ require "fileutils"
17
18
  require "mortar/generators/generator_base"
18
19
  module Mortar
19
20
  module Generators
@@ -42,7 +43,10 @@ module Mortar
42
43
  mkdir "controlscripts"
43
44
 
44
45
  inside "controlscripts" do
45
- copy_file "gitkeep", ".gitkeep"
46
+ mkdir "lib"
47
+ inside "lib" do
48
+ copy_file "__init__.py", "__init__.py"
49
+ end
46
50
  end
47
51
 
48
52
  mkdir "macros"
@@ -64,6 +68,56 @@ module Mortar
64
68
  inside "python" do
65
69
  copy_file "python_udf.py", "#{project_name}.py"
66
70
  end
71
+
72
+ mkdir "jython"
73
+ inside "jython" do
74
+ copy_file "gitkeep", ".gitkeep"
75
+ end
76
+
77
+ mkdir "java"
78
+ inside "java" do
79
+ copy_file "gitkeep", ".gitkeep"
80
+ end
81
+ end
82
+
83
+ mkdir "vendor"
84
+
85
+ inside "vendor" do
86
+ mkdir "controlscripts"
87
+ inside "controlscripts" do
88
+ mkdir "lib"
89
+ inside "lib" do
90
+ copy_file "__init__.py", "__init__.py"
91
+ end
92
+ end
93
+
94
+ mkdir "pigscripts"
95
+ inside "pigscripts" do
96
+ copy_file "gitkeep", ".gitkeep"
97
+ end
98
+
99
+ mkdir "macros"
100
+ inside "macros" do
101
+ copy_file "gitkeep", ".gitkeep"
102
+ end
103
+
104
+ mkdir "udfs"
105
+ inside "udfs" do
106
+ mkdir "python"
107
+ inside "python" do
108
+ copy_file "gitkeep", ".gitkeep"
109
+ end
110
+
111
+ mkdir "jython"
112
+ inside "jython" do
113
+ copy_file "gitkeep", ".gitkeep"
114
+ end
115
+
116
+ mkdir "java"
117
+ inside "java" do
118
+ copy_file "gitkeep", ".gitkeep"
119
+ end
120
+ end
67
121
  end
68
122
 
69
123
  rescue => e
data/lib/mortar/git.rb CHANGED
@@ -154,6 +154,10 @@ module Mortar
154
154
  if File.directory?('controlscripts') and not contents.include?('controlscripts')
155
155
  manifest.puts "controlscripts"
156
156
  end
157
+
158
+ if File.directory?("vendor") and not contents.include?("vendor")
159
+ manifest.puts "vendor"
160
+ end
157
161
  end
158
162
  else
159
163
  create_mortar_project_manifest('.')
@@ -174,6 +178,9 @@ module Mortar
174
178
  manifest.puts "pigscripts"
175
179
  manifest.puts "macros"
176
180
  manifest.puts "udfs"
181
+ if File.directory? "#{path}/vendor"
182
+ manifest.puts "vendor"
183
+ end
177
184
  end
178
185
  end
179
186
 
@@ -305,7 +305,7 @@ class Mortar::Local::Pig
305
305
  opts['python.verbose'] = 'error'
306
306
  opts['jython.output'] = true
307
307
  opts['python.home'] = jython_directory
308
- opts['python.path'] = local_install_directory + "/../controlscripts"
308
+ opts['python.path'] = "#{local_install_directory}/../controlscripts/lib:#{local_install_directory}/../vendor/controlscripts/lib"
309
309
  opts['python.cachedir'] = jython_cache_directory
310
310
  return opts
311
311
  end
@@ -318,13 +318,7 @@ class Mortar::Local::Pig
318
318
  if ENV['MORTAR_EMAIL_S3_ESCAPED']
319
319
  params['MORTAR_EMAIL_S3_ESCAPED'] = ENV['MORTAR_EMAIL_S3_ESCAPED']
320
320
  else
321
- params['MORTAR_EMAIL_S3_ESCAPED'] = Mortar::Auth.user_s3_safe
322
- end
323
-
324
- if ENV['MORTAR_SOFTWARE_MIRROR']
325
- params['BACON_BITS'] = "s3n://" + ENV['MORTAR_SOFTWARE_MIRROR'] + "/bacon-bits"
326
- else
327
- params['BACON_BITS'] = "s3n://mhc-software-mirror/bacon-bits"
321
+ params['MORTAR_EMAIL_S3_ESCAPED'] = Mortar::Auth.user_s3_safe(true)
328
322
  end
329
323
 
330
324
  # Coerce into the same format as pig parameters that were
File without changes
File without changes
@@ -16,5 +16,5 @@
16
16
 
17
17
  module Mortar
18
18
  # see http://semver.org/
19
- VERSION = "0.8.7"
19
+ VERSION = "0.8.8"
20
20
  end
@@ -388,7 +388,7 @@ STDOUT
388
388
  cluster_size = 5
389
389
 
390
390
  mock(Mortar::Auth.api).post_job_new_cluster("myproject", "my_script", is_a(String), cluster_size,
391
- :parameters => match_array([{"name" => "FIRST", "value" => "FOO"}, {"name" => "SECOND", "value" => "BAR"}, {"name" => "THIRD", "value" => "BEAR\n"}]),
391
+ :parameters => match_array([{"name" => "FIRST", "value" => "FOO"}, {"name" => "SECOND", "value" => "BAR"}, {"name" => "THIRD", "value" => "BEAR"}]),
392
392
  :cluster_type => Jobs::CLUSTER_TYPE__PERSISTENT,
393
393
  :notify_on_job_finish => true,
394
394
  :is_control_script=>false) {Excon::Response.new(:body => {"job_id" => job_id})}
@@ -413,7 +413,7 @@ PARAMS
413
413
  cluster_size = 5
414
414
 
415
415
  mock(Mortar::Auth.api).post_job_new_cluster("myproject", "my_script", is_a(String), cluster_size,
416
- :parameters => match_array([{"name" => "FIRST", "value" => "FOO"}, {"name" => "SECOND", "value" => "BAR"}, {"name" => "THIRD", "value" => "BEAR\n"}]),
416
+ :parameters => match_array([{"name" => "FIRST", "value" => "FOO"}, {"name" => "SECOND", "value" => "BAR"}, {"name" => "THIRD", "value" => "BEAR"}]),
417
417
  :cluster_type => Jobs::CLUSTER_TYPE__PERSISTENT,
418
418
  :notify_on_job_finish => true,
419
419
  :is_control_script=>false) {Excon::Response.new(:body => {"job_id" => job_id})}
@@ -128,7 +128,8 @@ STDOUT
128
128
  \e[1;32m create\e[0m pigscripts
129
129
  \e[1;32m create\e[0m pigscripts/some_new_project.pig
130
130
  \e[1;32m create\e[0m controlscripts
131
- \e[1;32m create\e[0m controlscripts/.gitkeep
131
+ \e[1;32m create\e[0m controlscripts/lib
132
+ \e[1;32m create\e[0m controlscripts/lib/__init__.py
132
133
  \e[1;32m create\e[0m macros
133
134
  \e[1;32m create\e[0m macros/.gitkeep
134
135
  \e[1;32m create\e[0m fixtures
@@ -136,6 +137,25 @@ STDOUT
136
137
  \e[1;32m create\e[0m udfs
137
138
  \e[1;32m create\e[0m udfs/python
138
139
  \e[1;32m create\e[0m udfs/python/some_new_project.py
140
+ \e[1;32m create\e[0m udfs/jython
141
+ \e[1;32m create\e[0m udfs/jython/.gitkeep
142
+ \e[1;32m create\e[0m udfs/java
143
+ \e[1;32m create\e[0m udfs/java/.gitkeep
144
+ \e[1;32m create\e[0m vendor
145
+ \e[1;32m create\e[0m vendor/controlscripts
146
+ \e[1;32m create\e[0m vendor/controlscripts/lib
147
+ \e[1;32m create\e[0m vendor/controlscripts/lib/__init__.py
148
+ \e[1;32m create\e[0m vendor/pigscripts
149
+ \e[1;32m create\e[0m vendor/pigscripts/.gitkeep
150
+ \e[1;32m create\e[0m vendor/macros
151
+ \e[1;32m create\e[0m vendor/macros/.gitkeep
152
+ \e[1;32m create\e[0m vendor/udfs
153
+ \e[1;32m create\e[0m vendor/udfs/python
154
+ \e[1;32m create\e[0m vendor/udfs/python/.gitkeep
155
+ \e[1;32m create\e[0m vendor/udfs/jython
156
+ \e[1;32m create\e[0m vendor/udfs/jython/.gitkeep
157
+ \e[1;32m create\e[0m vendor/udfs/java
158
+ \e[1;32m create\e[0m vendor/udfs/java/.gitkeep
139
159
  Sending request to register project: some_new_project... done\n\n\r\e[0KStatus: ACTIVE \n\nYour project is ready for use. Type 'mortar help' to see the commands you can perform on the project.\n
140
160
  NOTE: You'll need to change to the new directory to use your project:
141
161
  cd some_new_project
@@ -17,14 +17,13 @@
17
17
  require 'spec_helper'
18
18
  require 'fakefs/spec_helpers'
19
19
  require 'mortar/local/pig'
20
+ require 'mortar/auth'
20
21
  require 'launchy'
21
22
 
22
-
23
23
  class Mortar::Local::Pig
24
24
  attr_reader :command
25
25
  end
26
26
 
27
-
28
27
  module Mortar::Local
29
28
  describe Pig do
30
29
 
@@ -199,6 +198,16 @@ module Mortar::Local
199
198
  pig.illustrate_alias(script, 'my_alias', false, [])
200
199
  end
201
200
 
201
+ it "does not require login credentials for illustration" do
202
+ any_instance_of(Mortar::Project::PigScripts, :elements => nil, :path => "/foo/bar/baz.pig")
203
+ script = Mortar::Project::PigScripts.new('/foo/bar/baz.pig', 'baz', 'pig')
204
+ pig = Mortar::Local::Pig.new
205
+ mock(Mortar::Auth).user_s3_safe(true).returns('notloggedin-user-org')
206
+ mock(pig).run_pig_command.with_any_args.returns(true)
207
+ mock(pig).show_illustrate_output.with_any_args
208
+ pig.illustrate_alias(script, 'my_alias', false, [])
209
+ end
210
+
202
211
  end
203
212
 
204
213
  context "reset_local_logs" do
metadata CHANGED
@@ -1,164 +1,167 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mortar
3
- version: !ruby/object:Gem::Version
4
- hash: 49
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.8
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 8
9
- - 7
10
- version: 0.8.7
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Mortar Data
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-06-20 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-06-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: mortar-api-ruby
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 1
29
- segments:
30
- - 0
31
- - 6
32
- - 3
20
+ - !ruby/object:Gem::Version
33
21
  version: 0.6.3
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: netrc
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
40
25
  none: false
41
- requirements:
26
+ requirements:
42
27
  - - ~>
43
- - !ruby/object:Gem::Version
44
- hash: 5
45
- segments:
46
- - 0
47
- - 7
48
- version: "0.7"
28
+ - !ruby/object:Gem::Version
29
+ version: 0.6.3
30
+ - !ruby/object:Gem::Dependency
31
+ name: netrc
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '0.7'
49
38
  type: :runtime
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: launchy
53
39
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
55
41
  none: false
56
- requirements:
42
+ requirements:
57
43
  - - ~>
58
- - !ruby/object:Gem::Version
59
- hash: 1
60
- segments:
61
- - 2
62
- - 1
63
- version: "2.1"
44
+ - !ruby/object:Gem::Version
45
+ version: '0.7'
46
+ - !ruby/object:Gem::Dependency
47
+ name: launchy
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '2.1'
64
54
  type: :runtime
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: excon
68
55
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '2.1'
62
+ - !ruby/object:Gem::Dependency
63
+ name: excon
64
+ requirement: !ruby/object:Gem::Requirement
70
65
  none: false
71
- requirements:
66
+ requirements:
72
67
  - - ~>
73
- - !ruby/object:Gem::Version
74
- hash: 21
75
- segments:
76
- - 0
77
- - 15
78
- version: "0.15"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.15'
79
70
  type: :development
80
- version_requirements: *id004
81
- - !ruby/object:Gem::Dependency
82
- name: fakefs
83
71
  prerelease: false
84
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '0.15'
78
+ - !ruby/object:Gem::Dependency
79
+ name: fakefs
80
+ requirement: !ruby/object:Gem::Requirement
85
81
  none: false
86
- requirements:
82
+ requirements:
87
83
  - - ~>
88
- - !ruby/object:Gem::Version
89
- hash: 11
90
- segments:
91
- - 0
92
- - 4
93
- - 2
84
+ - !ruby/object:Gem::Version
94
85
  version: 0.4.2
95
86
  type: :development
96
- version_requirements: *id005
97
- - !ruby/object:Gem::Dependency
98
- name: gem-release
99
87
  prerelease: false
100
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
101
89
  none: false
102
- requirements:
103
- - - ">="
104
- - !ruby/object:Gem::Version
105
- hash: 3
106
- segments:
107
- - 0
108
- version: "0"
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.4.2
94
+ - !ruby/object:Gem::Dependency
95
+ name: gem-release
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
109
102
  type: :development
110
- version_requirements: *id006
111
- - !ruby/object:Gem::Dependency
112
- name: rake
113
103
  prerelease: false
114
- requirement: &id007 !ruby/object:Gem::Requirement
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rake
112
+ requirement: !ruby/object:Gem::Requirement
115
113
  none: false
116
- requirements:
117
- - - ">="
118
- - !ruby/object:Gem::Version
119
- hash: 3
120
- segments:
121
- - 0
122
- version: "0"
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
123
118
  type: :development
124
- version_requirements: *id007
125
- - !ruby/object:Gem::Dependency
126
- name: rr
127
119
  prerelease: false
128
- requirement: &id008 !ruby/object:Gem::Requirement
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rr
128
+ requirement: !ruby/object:Gem::Requirement
129
129
  none: false
130
- requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- hash: 3
134
- segments:
135
- - 0
136
- version: "0"
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
137
134
  type: :development
138
- version_requirements: *id008
139
- - !ruby/object:Gem::Dependency
140
- name: rspec
141
135
  prerelease: false
142
- requirement: &id009 !ruby/object:Gem::Requirement
136
+ version_requirements: !ruby/object:Gem::Requirement
143
137
  none: false
144
- requirements:
145
- - - ">="
146
- - !ruby/object:Gem::Version
147
- hash: 3
148
- segments:
149
- - 0
150
- version: "0"
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rspec
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
151
150
  type: :development
152
- version_requirements: *id009
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
153
158
  description: Client library and command-line tool to interact with the Mortar service.
154
159
  email: support@mortardata.com
155
- executables:
160
+ executables:
156
161
  - mortar
157
162
  extensions: []
158
-
159
163
  extra_rdoc_files: []
160
-
161
- files:
164
+ files:
162
165
  - README.md
163
166
  - bin/mortar
164
167
  - css/illustrate.css
@@ -207,12 +210,20 @@ files:
207
210
  - lib/mortar/templates/pigscript/pigscript.pig
208
211
  - lib/mortar/templates/pigscript/python_udf.py
209
212
  - lib/mortar/templates/project/README.md
210
- - lib/mortar/templates/project/controlscripts/gitkeep
213
+ - lib/mortar/templates/project/controlscripts/lib/__init__.py
211
214
  - lib/mortar/templates/project/fixtures/gitkeep
212
215
  - lib/mortar/templates/project/gitignore
213
216
  - lib/mortar/templates/project/macros/gitkeep
214
217
  - lib/mortar/templates/project/pigscripts/pigscript.pig
218
+ - lib/mortar/templates/project/udfs/java/gitkeep
219
+ - lib/mortar/templates/project/udfs/jython/gitkeep
215
220
  - lib/mortar/templates/project/udfs/python/python_udf.py
221
+ - lib/mortar/templates/project/vendor/controlscripts/lib/__init__.py
222
+ - lib/mortar/templates/project/vendor/macros/gitkeep
223
+ - lib/mortar/templates/project/vendor/pigscripts/gitkeep
224
+ - lib/mortar/templates/project/vendor/udfs/java/gitkeep
225
+ - lib/mortar/templates/project/vendor/udfs/jython/gitkeep
226
+ - lib/mortar/templates/project/vendor/udfs/python/gitkeep
216
227
  - lib/mortar/templates/report/illustrate-report.html
217
228
  - lib/mortar/templates/script/runpig.sh
218
229
  - lib/mortar/templates/udf/python_udf.py
@@ -249,38 +260,26 @@ files:
249
260
  - spec/support/display_message_matcher.rb
250
261
  homepage: http://mortardata.com/
251
262
  licenses: []
252
-
253
263
  post_install_message:
254
264
  rdoc_options: []
255
-
256
- require_paths:
265
+ require_paths:
257
266
  - lib
258
- required_ruby_version: !ruby/object:Gem::Requirement
267
+ required_ruby_version: !ruby/object:Gem::Requirement
259
268
  none: false
260
- requirements:
261
- - - ">="
262
- - !ruby/object:Gem::Version
263
- hash: 57
264
- segments:
265
- - 1
266
- - 8
267
- - 7
269
+ requirements:
270
+ - - ! '>='
271
+ - !ruby/object:Gem::Version
268
272
  version: 1.8.7
269
- required_rubygems_version: !ruby/object:Gem::Requirement
273
+ required_rubygems_version: !ruby/object:Gem::Requirement
270
274
  none: false
271
- requirements:
272
- - - ">="
273
- - !ruby/object:Gem::Version
274
- hash: 3
275
- segments:
276
- - 0
277
- version: "0"
275
+ requirements:
276
+ - - ! '>='
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
278
279
  requirements: []
279
-
280
280
  rubyforge_project:
281
- rubygems_version: 1.8.24
281
+ rubygems_version: 1.8.23
282
282
  signing_key:
283
283
  specification_version: 3
284
284
  summary: Client library and CLI to interact with the Mortar service.
285
285
  test_files: []
286
-