bcl 0.3.6 → 0.3.7
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.
- checksums.yaml +4 -4
- data/lib/bcl/component_methods.rb +153 -170
- data/lib/bcl/tar_ball.rb +26 -26
- data/lib/bcl/version.rb +1 -1
- metadata +17 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10d084384705465f95b8b328994161d836c98c83
|
4
|
+
data.tar.gz: ffdd20227e95f5b995f0c1bf0f228af53b287bc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19cfe476429d53381ff893040138977fddd2a9a6aab330f965e012c7dc346ee61624fc522aa13c92e7dd9df1bd16ab5cb9b7cb278d9ef8c68e64ed5920a3f5e6
|
7
|
+
data.tar.gz: 55a8758853dd04845cfbcd9fce45187a63970d87c4f734bbca024322346d7ddc9b2051d80620e5a8d7b1448e9bdf369262e62967e2ea69150ea464bc7fdf7e86
|
@@ -64,15 +64,13 @@ module BCL
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def default_yaml
|
67
|
-
settings = {
|
67
|
+
settings = {:server => {:url => "https://bcl.nrel.gov", :user => {:username => "ENTER_BCL_USERNAME", :password => "ENTER_BCL_PASSWORD"}}}
|
68
68
|
|
69
69
|
settings
|
70
70
|
end
|
71
|
-
|
72
|
-
|
73
|
-
def login(username=nil, password=nil, url=nil)
|
74
71
|
|
75
|
-
|
72
|
+
|
73
|
+
def login(username=nil, password=nil, url=nil)
|
76
74
|
#figure out what url to use
|
77
75
|
if url.nil?
|
78
76
|
url = @config[:server][:url]
|
@@ -103,7 +101,7 @@ module BCL
|
|
103
101
|
|
104
102
|
data = %Q({"username":"#{username}","password":"#{password}"})
|
105
103
|
#data = {"username" => username, "password" => password}
|
106
|
-
|
104
|
+
|
107
105
|
login_path = "/api/user/login.json"
|
108
106
|
headers = {'Content-Type' => 'application/json'}
|
109
107
|
|
@@ -118,50 +116,19 @@ module BCL
|
|
118
116
|
#res = RestClient.post "#{@config[:server][:url]}/api/user/login", data.to_json, :content_type => :json, :accept => :json
|
119
117
|
if res.code == '200'
|
120
118
|
puts "Login Successful"
|
121
|
-
|
122
|
-
#OLD RESTCLIENT CODE
|
123
|
-
#pull out the session key
|
124
|
-
res_j = JSON.parse(res.body)
|
125
|
-
sessid = res_j["sessid"]
|
126
|
-
session_name = res_j["session_name"]
|
127
|
-
|
128
|
-
puts "**** RETURNED COOKIES: #{res.cookies.inspect}"
|
129
|
-
#pull out the BNES key and BNI key
|
130
|
-
bnes_name = ""
|
131
|
-
bnesid = ""
|
132
|
-
bni_name = ""
|
133
|
-
bni_id = ""
|
134
|
-
junkout = res.cookies
|
135
|
-
junkout.each do |key, val|
|
136
|
-
if key.include?("BNES_SESS")
|
137
|
-
bnes_name = key.to_s
|
138
|
-
bnesid = val.to_s
|
139
|
-
end
|
140
|
-
end
|
141
|
-
junkout.each do |key, val|
|
142
|
-
if key.include?("BNI_bcl")
|
143
|
-
bni_name = key.to_s
|
144
|
-
bni_id = val.to_s
|
145
|
-
end
|
146
|
-
end
|
147
|
-
#@session = { session_name => sessid, bnes_name => bnesid }
|
148
|
-
#@session = {session_name => URI.unescape(sessid), bnes_name => URI.unescape(bnesid)}
|
149
|
-
@session = {session_name => sessid,bnes_name => bnesid,bni_name => bni_id}
|
150
|
-
|
151
|
-
=end
|
152
|
-
|
119
|
+
|
153
120
|
bnes = ""
|
154
121
|
bni = ""
|
155
122
|
junkout = res["set-cookie"].split(";")
|
156
123
|
junkout.each do |line|
|
157
124
|
if line =~ /BNES_SESS/
|
158
|
-
|
125
|
+
bnes = line.match(/(BNES_SESS.*)/)[0]
|
159
126
|
end
|
160
127
|
end
|
161
128
|
|
162
129
|
junkout.each do |line|
|
163
130
|
if line =~ /BNI/
|
164
|
-
|
131
|
+
bni = line.match(/(BNI.*)/)[0]
|
165
132
|
end
|
166
133
|
end
|
167
134
|
|
@@ -169,7 +136,7 @@ module BCL
|
|
169
136
|
session_name = ""
|
170
137
|
sessid = ""
|
171
138
|
json = JSON.parse(res.body)
|
172
|
-
json.each do |key, val|
|
139
|
+
json.each do |key, val|
|
173
140
|
if key == 'session_name'
|
174
141
|
session_name = val
|
175
142
|
elsif key == 'sessid'
|
@@ -177,13 +144,13 @@ module BCL
|
|
177
144
|
end
|
178
145
|
end
|
179
146
|
|
180
|
-
@session = session_name + '=' + sessid + ';' + bni + ";" + bnes
|
181
|
-
|
147
|
+
@session = session_name + '=' + sessid + ';' + bni + ";" + bnes
|
148
|
+
|
182
149
|
#get access token
|
183
150
|
token_path = "/services/session/token"
|
184
151
|
token_headers = {'Content-Type' => 'application/json', 'Cookie' => @session}
|
185
152
|
#puts "token_headers = #{token_headers.inspect}"
|
186
|
-
access_token = @http.post(token_path,"",token_headers)
|
153
|
+
access_token = @http.post(token_path, "", token_headers)
|
187
154
|
if access_token.code == '200'
|
188
155
|
@access_token = access_token.body
|
189
156
|
else
|
@@ -191,16 +158,17 @@ module BCL
|
|
191
158
|
puts "error code: #{access_token.code}"
|
192
159
|
puts "error info: #{access_token.body}"
|
193
160
|
end
|
194
|
-
|
161
|
+
|
195
162
|
#puts "access_token = *#{@access_token}*"
|
196
163
|
#puts "cookie = #{@session}"
|
197
|
-
|
164
|
+
|
198
165
|
res
|
199
166
|
else
|
200
|
-
|
167
|
+
|
201
168
|
puts "error code: #{res.code}"
|
202
169
|
puts "error info: #{res.body}"
|
203
|
-
|
170
|
+
puts "continuing as unauthenticated sessions (you can still search and download)"
|
171
|
+
|
204
172
|
res
|
205
173
|
end
|
206
174
|
end
|
@@ -219,37 +187,37 @@ module BCL
|
|
219
187
|
file = File.open(filename_and_path, 'rb')
|
220
188
|
file_b64 = Base64.encode64(file.read)
|
221
189
|
@data = {
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
190
|
+
"file" =>
|
191
|
+
{
|
192
|
+
"file" => "#{file_b64}",
|
193
|
+
"filesize" => "#{File.size(filename_and_path)}",
|
194
|
+
"filename" => filename
|
195
|
+
},
|
196
|
+
"node" =>
|
197
|
+
{
|
198
|
+
"type" => "#{content_type}",
|
199
|
+
#"field_component_tags" => #TODO remove this field_component_tags once BCL is fixed
|
200
|
+
# {
|
201
|
+
# "und" => "1289"
|
202
|
+
# },
|
203
|
+
"og_group_ref" =>
|
204
|
+
{
|
205
|
+
"und" =>
|
206
|
+
["target_id" => @group_id],
|
207
|
+
|
208
|
+
},
|
209
|
+
"publish" => 1 #NOTE THIS ONLY WORKS IF YOU ARE A BCL SITE ADMIN
|
210
|
+
}
|
211
|
+
|
212
|
+
}
|
245
213
|
#restclient not working
|
246
214
|
#res = RestClient.post "#{@config[:server][:url]}/api/content.json", @data.to_json, :content_type => :json, :cookies => @session
|
247
|
-
|
248
|
-
path = "/api/content.json"
|
249
|
-
headers = {'Content-Type' => 'application/json','X-CSRF-Token' => @access_token, 'Cookie' => @session}
|
215
|
+
|
216
|
+
path = "/api/content.json"
|
217
|
+
headers = {'Content-Type' => 'application/json', 'X-CSRF-Token' => @access_token, 'Cookie' => @session}
|
250
218
|
#puts headers.inspect
|
251
219
|
res = @http.post(path, @data.to_json, headers)
|
252
|
-
|
220
|
+
|
253
221
|
res_j = "could not get json from http post response"
|
254
222
|
if res.code == '200'
|
255
223
|
res_j = JSON.parse(res.body)
|
@@ -260,14 +228,14 @@ module BCL
|
|
260
228
|
puts " 404 - check these common causes first:"
|
261
229
|
puts " the filename contains periods (other than the ones before the file extension)"
|
262
230
|
puts " you are not an 'administrator member' of the group you're trying to upload to"
|
263
|
-
valid = false
|
231
|
+
valid = false
|
264
232
|
elsif res.code == '500'
|
265
233
|
puts " error code: #{res.code} - #{res.body}"
|
266
234
|
raise "server exception"
|
267
235
|
valid = false
|
268
236
|
else
|
269
237
|
puts " error code: #{res.code} - #{res.body}"
|
270
|
-
valid = false
|
238
|
+
valid = false
|
271
239
|
end
|
272
240
|
|
273
241
|
if valid
|
@@ -302,7 +270,7 @@ module BCL
|
|
302
270
|
|
303
271
|
logs
|
304
272
|
end
|
305
|
-
|
273
|
+
|
306
274
|
# pushes updated content to the bcl and publishes it (if logged-in as BCL Website Admin user).
|
307
275
|
# username and password set in ~/.bcl/config.yml file
|
308
276
|
def update_content(filename_and_path, write_receipt_file, uuid)
|
@@ -316,36 +284,36 @@ module BCL
|
|
316
284
|
file = File.open(filename_and_path, 'rb')
|
317
285
|
file_b64 = Base64.encode64(file.read)
|
318
286
|
@data = {
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
}
|
287
|
+
"file" =>
|
288
|
+
{
|
289
|
+
"file" => "#{file_b64}",
|
290
|
+
"filesize" => "#{File.size(filename_and_path)}",
|
291
|
+
"filename" => filename
|
292
|
+
},
|
293
|
+
"node" =>
|
294
|
+
{
|
295
|
+
"uuid" => "#{uuid}",
|
296
|
+
#"field_component_tags" => #TODO remove this field_component_tags once BCL is fixed
|
297
|
+
# {
|
298
|
+
# "und" => "1289"
|
299
|
+
# },
|
300
|
+
"og_group_ref" =>
|
301
|
+
{
|
302
|
+
"und" =>
|
303
|
+
["target_id" => @group_id],
|
304
|
+
},
|
305
|
+
"publish" => 1 #NOTE THIS ONLY WORKS IF YOU ARE A BCL SITE ADMIN
|
339
306
|
}
|
340
|
-
|
341
|
-
#restclient not working
|
342
|
-
#res = RestClient.post "#{@config[:server][:url]}/api/content", @data.to_json, :content_type => :json, :cookies => @session, :accept => :json
|
307
|
+
}
|
343
308
|
|
344
|
-
|
345
|
-
|
309
|
+
#restclient not working
|
310
|
+
#res = RestClient.post "#{@config[:server][:url]}/api/content", @data.to_json, :content_type => :json, :cookies => @session, :accept => :json
|
311
|
+
|
312
|
+
path = "/api/content.json"
|
313
|
+
headers = {'Content-Type' => 'application/json', 'Cookie' => @session, 'X-CSRF-Token' => @access_token}
|
314
|
+
|
315
|
+
res = @http.post(path, @data.to_json, headers)
|
346
316
|
|
347
|
-
res = @http.post(path, @data.to_json, headers)
|
348
|
-
|
349
317
|
res_j = "could not get json from http post response"
|
350
318
|
if res.code == '200'
|
351
319
|
res_j = JSON.parse(res.body)
|
@@ -356,15 +324,15 @@ module BCL
|
|
356
324
|
puts " 404 - check these common causes first:"
|
357
325
|
puts " the filename contains periods (other than the ones before the file extension)"
|
358
326
|
puts " you are not an 'administrator member' of the group you're trying to upload to"
|
359
|
-
valid = false
|
327
|
+
valid = false
|
360
328
|
elsif res.code == '500'
|
361
329
|
puts " error code: #{res.code} - #{res.body}"
|
362
330
|
raise "server exception"
|
363
331
|
valid = false
|
364
332
|
else
|
365
333
|
puts " error code: #{res.code} - #{res.body}"
|
366
|
-
valid = false
|
367
|
-
end
|
334
|
+
valid = false
|
335
|
+
end
|
368
336
|
|
369
337
|
if valid
|
370
338
|
#write out a receipt file into the same directory of the component with the same file name as
|
@@ -378,78 +346,93 @@ module BCL
|
|
378
346
|
|
379
347
|
[valid, res_j]
|
380
348
|
end
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
puts log_message
|
390
|
-
else
|
391
|
-
#extract uuid from the .tar.gz file
|
392
|
-
uuid = nil
|
393
|
-
tgz = Zlib::GzipReader.open(comp)
|
394
|
-
Archive::Tar::Minitar::Reader.open(tgz).each do |entry|
|
395
|
-
if entry.name == "component.xml" or entry.name == "measure.xml"
|
396
|
-
xml_file = LibXML::XML::Document.string(entry.read)
|
397
|
-
uid_node = xml_file.find('uid').first
|
398
|
-
uuid = uid_node.content
|
399
|
-
#vid_node = xml_file.find('version_id').first
|
400
|
-
#vid = vid_node.content
|
401
|
-
#puts "uuid = #{uuid}; vid = #{vid}"
|
402
|
-
end
|
403
|
-
end
|
404
|
-
if uuid == nil
|
405
|
-
log_message = "ERROR: uuid not found for #{File.basename(comp)}"
|
349
|
+
|
350
|
+
def update_contents(array_of_components, skip_files_with_receipts)
|
351
|
+
logs = []
|
352
|
+
array_of_components.each do |comp|
|
353
|
+
receipt_file = File.dirname(comp) + "/" + File.basename(comp, '.tar.gz') + ".receipt"
|
354
|
+
log_message = ""
|
355
|
+
if skip_files_with_receipts && File.exists?(receipt_file)
|
356
|
+
log_message = "skipping update because found receipt #{File.basename(comp)}"
|
406
357
|
puts log_message
|
407
358
|
else
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
359
|
+
#extract uuid from the .tar.gz file
|
360
|
+
uuid = nil
|
361
|
+
tgz = Zlib::GzipReader.open(comp)
|
362
|
+
Archive::Tar::Minitar::Reader.open(tgz).each do |entry|
|
363
|
+
if entry.name == "component.xml" or entry.name == "measure.xml"
|
364
|
+
xml_file = LibXML::XML::Document.string(entry.read)
|
365
|
+
uid_node = xml_file.find('uid').first
|
366
|
+
uuid = uid_node.content
|
367
|
+
#vid_node = xml_file.find('version_id').first
|
368
|
+
#vid = vid_node.content
|
369
|
+
#puts "uuid = #{uuid}; vid = #{vid}"
|
370
|
+
end
|
371
|
+
end
|
372
|
+
if uuid == nil
|
373
|
+
log_message = "ERROR: uuid not found for #{File.basename(comp)}"
|
374
|
+
puts log_message
|
375
|
+
else
|
376
|
+
log_message = "pushing updated content #{File.basename(comp)}"
|
377
|
+
puts log_message
|
378
|
+
valid, res = update_content(comp, true, uuid, @group_id)
|
379
|
+
log_message += " #{valid} #{res.inspect.chomp}"
|
380
|
+
end
|
412
381
|
end
|
382
|
+
logs << log_message
|
413
383
|
end
|
414
|
-
logs
|
415
|
-
end
|
416
|
-
logs
|
417
|
-
end
|
418
|
-
|
419
|
-
# Simple method to search bcl and return the result as an XML object
|
420
|
-
def search(search_str=nil, filter_str=nil)
|
421
|
-
full_url = "/api/search.json"
|
422
|
-
|
423
|
-
#add search term
|
424
|
-
if !search_str.nil?
|
425
|
-
full_url = full_url + "/" + search_str
|
384
|
+
logs
|
426
385
|
end
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
386
|
+
|
387
|
+
# Simple method to search bcl and return the result as an XML object
|
388
|
+
def search(search_str=nil, filter_str=nil)
|
389
|
+
full_url = "/api/search.json"
|
390
|
+
|
391
|
+
#add search term
|
392
|
+
if !search_str.nil?
|
393
|
+
full_url = full_url + "/" + search_str
|
394
|
+
end
|
395
|
+
#add api_version
|
396
|
+
full_url = full_url + "?api_version=#{@api_version}"
|
397
|
+
#add filters
|
398
|
+
if !filter_str.nil?
|
399
|
+
full_url = full_url + "&" + filter_str
|
400
|
+
end
|
401
|
+
|
402
|
+
res = @http.get(full_url)
|
403
|
+
|
404
|
+
#retrieve in json
|
405
|
+
res.body
|
432
406
|
end
|
433
407
|
|
434
|
-
|
408
|
+
# Delete receipt files
|
409
|
+
def delete_receipts(array_of_components)
|
410
|
+
array_of_components.each do |comp|
|
411
|
+
receipt_file = File.dirname(comp) + "/" + File.basename(comp, '.tar.gz') + ".receipt"
|
412
|
+
if File.exists?(receipt_file)
|
413
|
+
FileUtils.remove_file(receipt_file)
|
414
|
+
|
415
|
+
end
|
416
|
+
end
|
417
|
+
end
|
435
418
|
|
436
|
-
|
437
|
-
|
438
|
-
end
|
439
|
-
|
440
|
-
# Delete receipt files
|
441
|
-
def delete_receipts(array_of_components)
|
442
|
-
array_of_components.each do |comp|
|
443
|
-
receipt_file = File.dirname(comp) + "/" + File.basename(comp, '.tar.gz') + ".receipt"
|
444
|
-
if File.exists?(receipt_file)
|
445
|
-
FileUtils.remove_file(receipt_file)
|
419
|
+
def list_all_measures()
|
420
|
+
json = JSON.parse(search(nil, "f[0]=bundle%3Anrel_measure&show_rows=100"), :symbolize_names => true)
|
446
421
|
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
422
|
+
json
|
423
|
+
end
|
424
|
+
|
425
|
+
def download_component(uid)
|
426
|
+
result = @http.get("/api/component/download?uids=#{uid}")
|
427
|
+
|
428
|
+
#https://bcl.nrel.gov/api/component/download?uids=a667a52f-aa04-4997-9292-c81671d75f84
|
429
|
+
result.body ? result.body : nil
|
430
|
+
end
|
431
|
+
|
451
432
|
end #class ComponentMethods
|
452
433
|
|
434
|
+
|
435
|
+
|
453
436
|
# TODO make this extend the component_xml class (or create a super class around components)
|
454
437
|
|
455
438
|
def BCL.gather_components(component_dir, chunk_size = 0, delete_previousgather = false, destination=nil)
|
@@ -492,7 +475,7 @@ module BCL
|
|
492
475
|
#gather all the .tar.gz files into a single tar.gz
|
493
476
|
(1..chunk_cnt).each do |cnt|
|
494
477
|
currentdir = Dir.pwd
|
495
|
-
|
478
|
+
|
496
479
|
paths = []
|
497
480
|
Pathname.glob("./gather/#{cnt}/*.tar.gz").each do |pt|
|
498
481
|
paths << File.basename(pt.to_s)
|
data/lib/bcl/tar_ball.rb
CHANGED
@@ -19,40 +19,40 @@
|
|
19
19
|
|
20
20
|
require 'rubygems'
|
21
21
|
|
22
|
-
require 'zlib' #gem install zliby
|
22
|
+
require 'zlib' #gem install zliby # need to convert this to another library (this is olllld)
|
23
23
|
require 'archive/tar/minitar' #gem install archive-tar-minitar
|
24
24
|
|
25
25
|
module BCL
|
26
26
|
|
27
|
-
module_function
|
27
|
+
module_function
|
28
28
|
|
29
|
-
def tarball(destination, paths)
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
29
|
+
def tarball(destination, paths)
|
30
|
+
|
31
|
+
#check for filepath length limit
|
32
|
+
full_destination = File.expand_path(destination)
|
33
|
+
if full_destination.length > 259 #256 chars max; "C:\" doesn't count
|
34
|
+
puts "[TarBall] ERROR cannot generate #{destination} because path exceeds 256 char limit. shorten component name by at least by #{full_destination.length - 259} chars"
|
35
|
+
return
|
36
|
+
end
|
37
|
+
|
38
|
+
Zlib::GzipWriter.open(destination) do |gzip|
|
39
|
+
out = Archive::Tar::Minitar::Output.new(gzip)
|
40
|
+
|
41
|
+
paths.each do |fi|
|
42
|
+
if File.exists?(fi)
|
43
|
+
Archive::Tar::Minitar.pack_file(fi, out)
|
44
|
+
else
|
45
|
+
puts "[TarBall] ERROR Could not file file: #{fi}"
|
46
|
+
end
|
46
47
|
end
|
48
|
+
out.close
|
47
49
|
end
|
48
|
-
out.close
|
49
50
|
end
|
50
|
-
end
|
51
51
|
|
52
|
-
def extract_tarball(filename, destination)
|
53
|
-
|
52
|
+
def extract_tarball(filename, destination)
|
53
|
+
Zlib::GzipReader.open(filename) { |gz|
|
54
54
|
Archive::Tar::Minitar.unpack(gz, destination)
|
55
|
-
|
56
|
-
end
|
55
|
+
}
|
56
|
+
end
|
57
57
|
|
58
|
-
end # module BCL
|
58
|
+
end # module BCL
|
data/lib/bcl/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bcl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Macumber
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-11-
|
14
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: uuid
|
@@ -111,6 +111,20 @@ dependencies:
|
|
111
111
|
- - '>='
|
112
112
|
- !ruby/object:Gem::Version
|
113
113
|
version: '0'
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: libxml-ruby
|
116
|
+
requirement: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
type: :runtime
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
114
128
|
description: This gem contains helper methods for generating the Component XML file
|
115
129
|
needed to upload files to the Building Component Library. It also contains the classes
|
116
130
|
needed for logging in via the api and uploading generating components
|
@@ -151,9 +165,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
165
|
version: '0'
|
152
166
|
requirements: []
|
153
167
|
rubyforge_project:
|
154
|
-
rubygems_version: 2.0.
|
168
|
+
rubygems_version: 2.0.2
|
155
169
|
signing_key:
|
156
170
|
specification_version: 4
|
157
171
|
summary: Classes for creating component XML files for the BCL
|
158
172
|
test_files: []
|
159
|
-
has_rdoc:
|