mortar 0.15.1 → 0.15.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.
@@ -113,7 +113,7 @@ EOF
113
113
 
114
114
  # Main entry point to perform installation and configuration necessary
115
115
  # to run pig on the users local machine
116
- def install_and_configure(pig_version=nil)
116
+ def install_and_configure(pig_version=nil, command=nil)
117
117
  #To support old watchtower plugins we'll accept nil pig_version
118
118
  if pig_version.nil?
119
119
  pig_version = Mortar::PigVersion::Pig09.new
@@ -124,7 +124,7 @@ EOF
124
124
  end
125
125
 
126
126
  pig = Mortar::Local::Pig.new()
127
- pig.install_or_update(pig_version)
127
+ pig.install_or_update(pig_version, command)
128
128
 
129
129
  py = Mortar::Local::Python.new()
130
130
  unless py.check_or_install
@@ -175,7 +175,7 @@ EOF
175
175
  # Main entry point for user running a pig script
176
176
  def run(pig_script, pig_version, pig_parameters)
177
177
  require_aws_keys
178
- install_and_configure(pig_version)
178
+ install_and_configure(pig_version, 'run')
179
179
  pig = Mortar::Local::Pig.new()
180
180
  pig.run_script(pig_script, pig_version, pig_parameters)
181
181
  end
@@ -183,25 +183,25 @@ EOF
183
183
  # Main entry point for illustrating a pig alias
184
184
  def illustrate(pig_script, pig_alias, pig_version, pig_parameters, skip_pruning, no_browser)
185
185
  require_aws_keys
186
- install_and_configure(pig_version)
186
+ install_and_configure(pig_version, 'illustrate')
187
187
  pig = Mortar::Local::Pig.new()
188
188
  pig.illustrate_alias(pig_script, pig_alias, skip_pruning, no_browser, pig_version, pig_parameters)
189
189
  end
190
190
 
191
191
  def validate(pig_script, pig_version, pig_parameters)
192
- install_and_configure(pig_version)
192
+ install_and_configure(pig_version, 'validate')
193
193
  pig = Mortar::Local::Pig.new()
194
194
  pig.validate_script(pig_script, pig_version, pig_parameters)
195
195
  end
196
196
 
197
197
  def repl(pig_version, pig_parameters)
198
- install_and_configure(pig_version)
198
+ install_and_configure(pig_version, 'repl')
199
199
  pig = Mortar::Local::Pig.new()
200
200
  pig.launch_repl(pig_version, pig_parameters)
201
201
  end
202
202
 
203
203
  def run_luigi(luigi_script, user_script_args)
204
- install_and_configure()
204
+ install_and_configure(nil, 'luigi')
205
205
  py = Mortar::Local::Python.new()
206
206
  py.run_luigi_script(luigi_script, user_script_args)
207
207
  end
@@ -39,7 +39,7 @@ module Mortar
39
39
  end
40
40
 
41
41
  def local_install_directory
42
- File.join(project_root, local_install_directory_name)
42
+ ENV.fetch('MORTAR_LOCAL_DIR', File.join(project_root, local_install_directory_name))
43
43
  end
44
44
 
45
45
  def local_log_dir
@@ -112,8 +112,8 @@ module Mortar
112
112
  end
113
113
 
114
114
  # Downloads the file at a specified url into the supplied directory
115
- def download_file(url, dest_file_path)
116
- response = get_resource(url)
115
+ def download_file(url, dest_file_path, command=nil)
116
+ response = get_resource(url, command)
117
117
 
118
118
  File.open(dest_file_path, "wb") do |dest_file|
119
119
  dest_file.write(response.body)
@@ -122,13 +122,13 @@ module Mortar
122
122
  end
123
123
 
124
124
  # Perform a get request to a url and follow redirects if necessary.
125
- def get_resource(url)
126
- make_call(url, 'get')
125
+ def get_resource(url, command=nil)
126
+ make_call(url, 'get', 0, 0, command)
127
127
  end
128
128
 
129
129
  # Perform a head request to a url and follow redirects if necessary.
130
- def head_resource(url)
131
- make_call(url, 'head')
130
+ def head_resource(url, command=nil)
131
+ make_call(url, 'head', 0, 0, command)
132
132
  end
133
133
 
134
134
  # Make a request to a mortar resource url. Check response for a
@@ -136,7 +136,7 @@ module Mortar
136
136
  # support automatically following redirects. Adds parameter that
137
137
  # checks an environment variable to identify the test making this call
138
138
  # (if being run by a test).
139
- def make_call(url, call_func, redirect_times=0, errors=0)
139
+ def make_call(url, call_func, redirect_times=0, errors=0, command=nil)
140
140
  if redirect_times >= 5
141
141
  raise RuntimeError, "Too many redirects. Last url: #{url}"
142
142
  end
@@ -150,6 +150,12 @@ module Mortar
150
150
  if test_name
151
151
  query[:test_name] = test_name
152
152
  end
153
+ if command
154
+ query[:command] = command
155
+ if Mortar::Auth.has_credentials
156
+ query[:user] = Mortar::Auth.user
157
+ end
158
+ end
153
159
 
154
160
  headers = {'User-Agent' => Mortar::USER_AGENT}
155
161
  if call_func == 'head'
@@ -190,21 +196,21 @@ module Mortar
190
196
  return Time.httpdate(date_str).to_i
191
197
  end
192
198
 
193
- def url_date(url)
194
- result = head_resource(url)
199
+ def url_date(url, command=nil)
200
+ result = head_resource(url, command)
195
201
  http_date_to_epoch(result.get_header('Last-Modified'))
196
202
  end
197
203
 
198
204
  # Given a subdirectory where we have installed some software
199
205
  # and a url to the tgz file it's sourced from, check if the
200
206
  # remote version is newer than the installed version
201
- def is_newer_version(subdir, url)
207
+ def is_newer_version(subdir, url, command=nil)
202
208
  existing_install_date = install_date(subdir)
203
209
  if not existing_install_date then
204
210
  # There is no existing install
205
211
  return true
206
212
  end
207
- remote_archive_date = url_date(url)
213
+ remote_archive_date = url_date(url, command)
208
214
  return existing_install_date < remote_archive_date
209
215
  end
210
216
 
@@ -111,20 +111,20 @@ class Mortar::Local::Pig
111
111
 
112
112
  # Determines if a pig install needs to occur, true if server side
113
113
  # pig tgz is newer than date of the existing install
114
- def should_do_pig_update?(pig_version)
115
- return is_newer_version(pig_version.name, pig_archive_url(pig_version))
114
+ def should_do_pig_update?(pig_version, command=nil)
115
+ return is_newer_version(pig_version.name, pig_archive_url(pig_version), command)
116
116
  end
117
117
 
118
118
  def should_do_lib_update?
119
119
  return is_newer_version('lib-common', lib_archive_url)
120
120
  end
121
121
 
122
- def install_or_update(pig_version)
122
+ def install_or_update(pig_version, command=nil)
123
123
  if should_do_pig_install?(pig_version)
124
124
  action "Installing #{pig_version.name} to #{local_install_directory_name}" do
125
- install_pig(pig_version)
125
+ install_pig(pig_version, command)
126
126
  end
127
- elsif should_do_pig_update?(pig_version)
127
+ elsif should_do_pig_update?(pig_version, command)
128
128
  action "Updating to latest #{pig_version.name} in #{local_install_directory_name}" do
129
129
  install_pig(pig_version)
130
130
  end
@@ -142,7 +142,7 @@ class Mortar::Local::Pig
142
142
  end
143
143
 
144
144
  # Installs pig for this project if it is not already present
145
- def install_pig(pig_version)
145
+ def install_pig(pig_version, command=nil)
146
146
  #Delete the directory if it already exists to ensure cruft isn't left around.
147
147
  if File.directory? pig_directory(pig_version)
148
148
  FileUtils.rm_rf pig_directory(pig_version)
@@ -150,7 +150,7 @@ class Mortar::Local::Pig
150
150
 
151
151
  FileUtils.mkdir_p(local_install_directory)
152
152
  local_tgz = File.join(local_install_directory, pig_version.tgz_name)
153
- download_file(pig_archive_url(pig_version), local_tgz)
153
+ download_file(pig_archive_url(pig_version), local_tgz, command)
154
154
  extract_tgz(local_tgz, local_install_directory)
155
155
 
156
156
  # This has been seening coming out of the tgz w/o +x so we do
@@ -366,8 +366,14 @@ class Mortar::Local::Pig
366
366
  opts['python.home'] = jython_directory
367
367
  opts['python.path'] = "#{local_install_directory}/../controlscripts/lib:#{local_install_directory}/../vendor/controlscripts/lib"
368
368
  opts['python.cachedir'] = jython_cache_directory
369
- opts['java.security.krb5.realm'] = ''
370
- opts['java.security.krb5.kdc'] = ''
369
+ if osx? then
370
+ opts['java.security.krb5.realm'] = 'OX.AC.UK'
371
+ opts['java.security.krb5.kdc'] = 'kdc0.ox.ac.uk:kdc1.ox.ac.uk'
372
+ opts['java.security.krb5.conf'] = '/dev/null'
373
+ else
374
+ opts['java.security.krb5.realm'] = ''
375
+ opts['java.security.krb5.kdc'] = ''
376
+ end
371
377
  return opts
372
378
  end
373
379
 
@@ -16,5 +16,5 @@
16
16
 
17
17
  module Mortar
18
18
  # see http://semver.org/
19
- VERSION = "0.15.1"
19
+ VERSION = "0.15.2"
20
20
  end
@@ -198,7 +198,7 @@ PARAMS
198
198
  pigscript = Mortar::Project::PigScript.new(script_name, script_path)
199
199
  mock(Mortar::Project::PigScript).new(script_name, script_path).returns(pigscript)
200
200
  any_instance_of(Mortar::Local::Controller) do |u|
201
- mock(u).install_and_configure(is_a(Mortar::PigVersion::Pig09))
201
+ mock(u).install_and_configure(is_a(Mortar::PigVersion::Pig09), 'validate')
202
202
  end
203
203
  any_instance_of(Mortar::Local::Pig) do |u|
204
204
  mock(u).run_pig_command(" -check #{pigscript.path}", is_a(Mortar::PigVersion::Pig09), [])
@@ -216,7 +216,7 @@ PARAMS
216
216
  pigscript = Mortar::Project::PigScript.new(script_name, script_path)
217
217
  mock(Mortar::Project::PigScript).new(script_name, script_path).returns(pigscript)
218
218
  any_instance_of(Mortar::Local::Controller) do |u|
219
- mock(u).install_and_configure(is_a(Mortar::PigVersion::Pig09))
219
+ mock(u).install_and_configure(is_a(Mortar::PigVersion::Pig09), 'validate')
220
220
  end
221
221
  any_instance_of(Mortar::Local::Pig) do |u|
222
222
  mock(u).run_pig_command(" -check #{pigscript.path}", is_a(Mortar::PigVersion::Pig09), [])
@@ -261,7 +261,7 @@ STDERR
261
261
  mock(u).run_luigi_script(luigi_script, %W{--myoption 2 --myotheroption 3})
262
262
  end
263
263
  any_instance_of(Mortar::Local::Controller) do |u|
264
- mock(u).install_and_configure
264
+ mock(u).install_and_configure(nil,'luigi')
265
265
  end
266
266
  stderr, stdout = execute("local:luigi some_luigi_script -p myoption=2 -p myotheroption=3", p)
267
267
  stderr.should == ""
@@ -136,7 +136,7 @@ module Mortar::Local
136
136
  mock(j).check_install.returns(true)
137
137
  end
138
138
  any_instance_of(Mortar::Local::Pig) do |p|
139
- mock(p).install_or_update(is_a(Mortar::PigVersion::Pig09))
139
+ mock(p).install_or_update(is_a(Mortar::PigVersion::Pig09), nil)
140
140
  end
141
141
  any_instance_of(Mortar::Local::Python) do |p|
142
142
  mock(p).check_or_install.returns(true)
@@ -156,7 +156,7 @@ module Mortar::Local
156
156
  it "checks for aws keys, checks depenendency installation, runs script" do
157
157
  c = Mortar::Local::Controller.new
158
158
  mock(c).require_aws_keys
159
- mock(c).install_and_configure("0.9")
159
+ mock(c).install_and_configure("0.9", "run")
160
160
  test_script = "foobar-script"
161
161
  the_parameters = []
162
162
  any_instance_of(Mortar::Local::Pig) do |p|
@@ -171,7 +171,7 @@ module Mortar::Local
171
171
  it "checks for aws keys, checks depenendency installation, runs the illustrate process" do
172
172
  c = Mortar::Local::Controller.new
173
173
  mock(c).require_aws_keys
174
- mock(c).install_and_configure("0.9")
174
+ mock(c).install_and_configure("0.9", "illustrate")
175
175
  test_script = "foobar-script"
176
176
  script_alias = "some_alias"
177
177
  prune = false
@@ -31,6 +31,34 @@ module Mortar::Local
31
31
  @installutil.extend(Mortar::Local::InstallUtil)
32
32
  end
33
33
 
34
+ context("install directory") do
35
+ @old_local_dir = nil
36
+
37
+ before(:each) do
38
+ if ENV.has_key?('MORTAR_LOCAL_DIR')
39
+ @old_local_dir = ENV['MORTAR_LOCAL_DIR']
40
+ end
41
+ end
42
+
43
+ after(:all) do
44
+ if nil != @old_local_dir
45
+ ENV['MORTAR_LOCAL_DIR'] = @old_local_dir
46
+ end
47
+ end
48
+
49
+ it "Uses Environment override if specified" do
50
+ ENV['MORTAR_LOCAL_DIR'] = "/tmp/mortar-local"
51
+ expect(@installutil.local_install_directory).to eq("/tmp/mortar-local")
52
+ end
53
+
54
+ it "Uses the default project directory otherwise" do
55
+ ENV.delete('MORTAR_LOCAL_DIR')
56
+ with_blank_project do |p|
57
+ expect(@installutil.local_install_directory).to eq("#{p.root_path}/.mortar-local")
58
+ end
59
+ end
60
+ end
61
+
34
62
  context("install_date") do
35
63
 
36
64
  it "nil if never installed" do
@@ -37,7 +37,7 @@ module Mortar::Local
37
37
  pig = Mortar::Local::Pig.new
38
38
  pig09 = Mortar::PigVersion::Pig09.new
39
39
  local_pig_archive = File.join(pig.local_install_directory, pig09.tgz_name)
40
- mock(pig).download_file(pig.pig_archive_url(pig09), local_pig_archive) do
40
+ mock(pig).download_file(pig.pig_archive_url(pig09), local_pig_archive, nil) do
41
41
  # Simulate the tgz file being downloaded, this should be deleted
42
42
  # before the method finishes executing
43
43
  FileUtils.touch(local_pig_archive)
@@ -64,7 +64,7 @@ module Mortar::Local
64
64
  pig09 = Mortar::PigVersion::Pig09.new
65
65
 
66
66
  mock(pig).should_do_pig_install?(pig09).returns(false)
67
- mock(pig).should_do_pig_update?(pig09).returns(false)
67
+ mock(pig).should_do_pig_update?(pig09, nil).returns(false)
68
68
  mock(pig).should_do_lib_install?.returns(false)
69
69
  mock(pig).should_do_lib_update?.returns(false)
70
70
  FakeFS do
@@ -84,7 +84,7 @@ module Mortar::Local
84
84
  mock(pig).should_do_pig_install?(pig09).returns(true)
85
85
  mock(pig).should_do_lib_install?.returns(true)
86
86
 
87
- mock(pig).install_pig(pig09)
87
+ mock(pig).install_pig(pig09, nil)
88
88
  mock(pig).install_lib
89
89
  capture_stdout do
90
90
  pig.install_or_update(pig09)
@@ -96,7 +96,7 @@ module Mortar::Local
96
96
  pig09 = Mortar::PigVersion::Pig09.new
97
97
 
98
98
  mock(pig).should_do_pig_install?(pig09).returns(false)
99
- mock(pig).should_do_pig_update?(pig09).returns(true)
99
+ mock(pig).should_do_pig_update?(pig09, nil).returns(true)
100
100
  mock(pig).should_do_lib_install?.returns(false)
101
101
  mock(pig).should_do_lib_update?.returns(true)
102
102
  mock(pig).install_pig(pig09)
metadata CHANGED
@@ -1,199 +1,196 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mortar
3
- version: !ruby/object:Gem::Version
4
- version: 0.15.1
3
+ version: !ruby/object:Gem::Version
4
+ hash: 39
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 15
9
+ - 2
10
+ version: 0.15.2
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Mortar Data
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2014-03-04 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2014-03-11 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: rdoc
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: 4.0.0
22
- type: :runtime
23
22
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
23
+ requirement: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 63
29
+ segments:
30
+ - 4
31
+ - 0
32
+ - 0
29
33
  version: 4.0.0
30
- - !ruby/object:Gem::Dependency
31
- name: mortar-api-ruby
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: 0.8.0
38
34
  type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: mortar-api-ruby
39
38
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
41
40
  none: false
42
- requirements:
41
+ requirements:
43
42
  - - ~>
44
- - !ruby/object:Gem::Version
43
+ - !ruby/object:Gem::Version
44
+ hash: 63
45
+ segments:
46
+ - 0
47
+ - 8
48
+ - 0
45
49
  version: 0.8.0
46
- - !ruby/object:Gem::Dependency
47
- name: netrc
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: '0.7'
54
50
  type: :runtime
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: netrc
55
54
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: '0.7'
62
- - !ruby/object:Gem::Dependency
63
- name: launchy
64
- requirement: !ruby/object:Gem::Requirement
55
+ requirement: &id003 !ruby/object:Gem::Requirement
65
56
  none: false
66
- requirements:
57
+ requirements:
67
58
  - - ~>
68
- - !ruby/object:Gem::Version
69
- version: '2.1'
59
+ - !ruby/object:Gem::Version
60
+ hash: 5
61
+ segments:
62
+ - 0
63
+ - 7
64
+ version: "0.7"
70
65
  type: :runtime
66
+ version_requirements: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ name: launchy
71
69
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
70
+ requirement: &id004 !ruby/object:Gem::Requirement
73
71
  none: false
74
- requirements:
72
+ requirements:
75
73
  - - ~>
76
- - !ruby/object:Gem::Version
77
- version: '2.1'
78
- - !ruby/object:Gem::Dependency
79
- name: parseconfig
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ~>
84
- - !ruby/object:Gem::Version
85
- version: 1.0.2
74
+ - !ruby/object:Gem::Version
75
+ hash: 1
76
+ segments:
77
+ - 2
78
+ - 1
79
+ version: "2.1"
86
80
  type: :runtime
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ name: parseconfig
87
84
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
85
+ requirement: &id005 !ruby/object:Gem::Requirement
89
86
  none: false
90
- requirements:
87
+ requirements:
91
88
  - - ~>
92
- - !ruby/object:Gem::Version
89
+ - !ruby/object:Gem::Version
90
+ hash: 19
91
+ segments:
92
+ - 1
93
+ - 0
94
+ - 2
93
95
  version: 1.0.2
94
- - !ruby/object:Gem::Dependency
96
+ type: :runtime
97
+ version_requirements: *id005
98
+ - !ruby/object:Gem::Dependency
95
99
  name: excon
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ~>
100
- - !ruby/object:Gem::Version
101
- version: '0.28'
102
- type: :development
103
100
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- version: '0.28'
110
- - !ruby/object:Gem::Dependency
111
- name: fakefs
112
- requirement: !ruby/object:Gem::Requirement
101
+ requirement: &id006 !ruby/object:Gem::Requirement
113
102
  none: false
114
- requirements:
103
+ requirements:
115
104
  - - ~>
116
- - !ruby/object:Gem::Version
117
- version: 0.4.2
105
+ - !ruby/object:Gem::Version
106
+ hash: 51
107
+ segments:
108
+ - 0
109
+ - 28
110
+ version: "0.28"
118
111
  type: :development
112
+ version_requirements: *id006
113
+ - !ruby/object:Gem::Dependency
114
+ name: fakefs
119
115
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
116
+ requirement: &id007 !ruby/object:Gem::Requirement
121
117
  none: false
122
- requirements:
118
+ requirements:
123
119
  - - ~>
124
- - !ruby/object:Gem::Version
120
+ - !ruby/object:Gem::Version
121
+ hash: 11
122
+ segments:
123
+ - 0
124
+ - 4
125
+ - 2
125
126
  version: 0.4.2
126
- - !ruby/object:Gem::Dependency
127
- name: gem-release
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ! '>='
132
- - !ruby/object:Gem::Version
133
- version: '0'
134
127
  type: :development
128
+ version_requirements: *id007
129
+ - !ruby/object:Gem::Dependency
130
+ name: gem-release
135
131
  prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
132
+ requirement: &id008 !ruby/object:Gem::Requirement
137
133
  none: false
138
- requirements:
139
- - - ! '>='
140
- - !ruby/object:Gem::Version
141
- version: '0'
142
- - !ruby/object:Gem::Dependency
143
- name: rake
144
- requirement: !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
147
- - - ! '>='
148
- - !ruby/object:Gem::Version
149
- version: '0'
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ hash: 3
138
+ segments:
139
+ - 0
140
+ version: "0"
150
141
  type: :development
142
+ version_requirements: *id008
143
+ - !ruby/object:Gem::Dependency
144
+ name: rake
151
145
  prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
- requirements:
155
- - - ! '>='
156
- - !ruby/object:Gem::Version
157
- version: '0'
158
- - !ruby/object:Gem::Dependency
159
- name: rr
160
- requirement: !ruby/object:Gem::Requirement
146
+ requirement: &id009 !ruby/object:Gem::Requirement
161
147
  none: false
162
- requirements:
163
- - - ! '>='
164
- - !ruby/object:Gem::Version
165
- version: '0'
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ hash: 3
152
+ segments:
153
+ - 0
154
+ version: "0"
166
155
  type: :development
156
+ version_requirements: *id009
157
+ - !ruby/object:Gem::Dependency
158
+ name: rr
167
159
  prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
- requirements:
171
- - - ! '>='
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- - !ruby/object:Gem::Dependency
175
- name: rspec
176
- requirement: !ruby/object:Gem::Requirement
160
+ requirement: &id010 !ruby/object:Gem::Requirement
177
161
  none: false
178
- requirements:
179
- - - ! '>='
180
- - !ruby/object:Gem::Version
181
- version: '0'
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ hash: 3
166
+ segments:
167
+ - 0
168
+ version: "0"
182
169
  type: :development
170
+ version_requirements: *id010
171
+ - !ruby/object:Gem::Dependency
172
+ name: rspec
183
173
  prerelease: false
184
- version_requirements: !ruby/object:Gem::Requirement
174
+ requirement: &id011 !ruby/object:Gem::Requirement
185
175
  none: false
186
- requirements:
187
- - - ! '>='
188
- - !ruby/object:Gem::Version
189
- version: '0'
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ hash: 3
180
+ segments:
181
+ - 0
182
+ version: "0"
183
+ type: :development
184
+ version_requirements: *id011
190
185
  description: Client library and command-line tool to interact with the Mortar service.
191
186
  email: support@mortardata.com
192
- executables:
187
+ executables:
193
188
  - mortar
194
189
  extensions: []
190
+
195
191
  extra_rdoc_files: []
196
- files:
192
+
193
+ files:
197
194
  - README.md
198
195
  - bin/mortar
199
196
  - css/illustrate.css
@@ -322,26 +319,38 @@ files:
322
319
  - spec/support/display_message_matcher.rb
323
320
  homepage: http://mortardata.com/
324
321
  licenses: []
322
+
325
323
  post_install_message:
326
324
  rdoc_options: []
327
- require_paths:
325
+
326
+ require_paths:
328
327
  - lib
329
- required_ruby_version: !ruby/object:Gem::Requirement
328
+ required_ruby_version: !ruby/object:Gem::Requirement
330
329
  none: false
331
- requirements:
332
- - - ! '>='
333
- - !ruby/object:Gem::Version
330
+ requirements:
331
+ - - ">="
332
+ - !ruby/object:Gem::Version
333
+ hash: 57
334
+ segments:
335
+ - 1
336
+ - 8
337
+ - 7
334
338
  version: 1.8.7
335
- required_rubygems_version: !ruby/object:Gem::Requirement
339
+ required_rubygems_version: !ruby/object:Gem::Requirement
336
340
  none: false
337
- requirements:
338
- - - ! '>='
339
- - !ruby/object:Gem::Version
340
- version: '0'
341
+ requirements:
342
+ - - ">="
343
+ - !ruby/object:Gem::Version
344
+ hash: 3
345
+ segments:
346
+ - 0
347
+ version: "0"
341
348
  requirements: []
349
+
342
350
  rubyforge_project:
343
- rubygems_version: 1.8.23
351
+ rubygems_version: 1.8.24
344
352
  signing_key:
345
353
  specification_version: 3
346
354
  summary: Client library and CLI to interact with the Mortar service.
347
355
  test_files: []
356
+