mortar 0.15.1 → 0.15.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+