arvados 0.1.20150407214339 → 0.1.20150413172135
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/arvados/collection.rb +44 -11
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96584f94e463e7f2b86c1205f0097fe9aa8a840f
|
4
|
+
data.tar.gz: 432ae039f8a6b7eabeace88d57a60c0a85f078fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72bcb43b91f6f0b0e5929ed2baa23c526535ea79417beb89bc034e4141bd0dbae12d734cdd5cec0d05978dbb0738070df9fa556ce8658d1396ba3f223a320f27
|
7
|
+
data.tar.gz: 77256e96f0a6af3c3e613584a3fec6143588472cb9f9ff45d6726ec287f9fa05670d039c0a2a5ae393185af2336e2f6d0814c2a757305474861762bed1ccebce
|
data/lib/arvados/collection.rb
CHANGED
@@ -14,8 +14,13 @@ module Arv
|
|
14
14
|
loc_list = LocatorList.new(locators)
|
15
15
|
file_specs.map { |s| manifest.split_file_token(s) }.
|
16
16
|
each do |file_start, file_len, file_path|
|
17
|
-
|
18
|
-
|
17
|
+
begin
|
18
|
+
@root.file_at(normalize_path(stream_root, file_path)).
|
19
|
+
add_segment(loc_list.segment(file_start, file_len))
|
20
|
+
rescue Errno::ENOTDIR, Errno::EISDIR => error
|
21
|
+
raise ArgumentError.new("%p is both a stream and file" %
|
22
|
+
error.to_s.partition(" - ").last)
|
23
|
+
end
|
19
24
|
end
|
20
25
|
end
|
21
26
|
end
|
@@ -43,6 +48,19 @@ module Arv
|
|
43
48
|
copy(:merge, source.chomp("/"), target, source_collection, opts)
|
44
49
|
end
|
45
50
|
|
51
|
+
def each_file_path(&block)
|
52
|
+
@root.each_file_path(&block)
|
53
|
+
end
|
54
|
+
|
55
|
+
def exist?(path)
|
56
|
+
begin
|
57
|
+
substream, item = find(path)
|
58
|
+
not (substream.leaf? or substream[item].nil?)
|
59
|
+
rescue Errno::ENOENT, Errno::ENOTDIR
|
60
|
+
false
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
46
64
|
def rename(source, target)
|
47
65
|
copy(:add_copy, source, target) { rm_r(source) }
|
48
66
|
end
|
@@ -88,13 +106,19 @@ module Arv
|
|
88
106
|
# is found and can be copied.
|
89
107
|
source_collection = self if source_collection.nil?
|
90
108
|
src_stream, src_tail = source_collection.find(source)
|
91
|
-
|
109
|
+
dst_stream_path, _, dst_tail = normalize_path(target).rpartition("/")
|
110
|
+
if dst_stream_path.empty?
|
111
|
+
dst_stream, dst_tail = @root.find(dst_tail)
|
112
|
+
dst_tail ||= src_tail
|
113
|
+
else
|
114
|
+
dst_stream = @root.stream_at(dst_stream_path)
|
115
|
+
dst_tail = src_tail if dst_tail.empty?
|
116
|
+
end
|
92
117
|
if (source_collection.equal?(self) and
|
93
118
|
(src_stream.path == dst_stream.path) and (src_tail == dst_tail))
|
94
119
|
return self
|
95
120
|
end
|
96
121
|
src_item = src_stream[src_tail]
|
97
|
-
dst_tail ||= src_tail
|
98
122
|
check_method = "check_can_#{copy_method}".to_sym
|
99
123
|
target_name = nil
|
100
124
|
if opts.fetch(:descend_target, true)
|
@@ -272,6 +296,17 @@ module Arv
|
|
272
296
|
end
|
273
297
|
end
|
274
298
|
|
299
|
+
def each_file_path
|
300
|
+
return to_enum(__method__) unless block_given?
|
301
|
+
items.each_value do |item|
|
302
|
+
if item.file?
|
303
|
+
yield item.path
|
304
|
+
else
|
305
|
+
item.each_file_path { |path| yield path }
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
275
310
|
def find(find_path)
|
276
311
|
# Given a POSIX-style path, return the CollectionStream that
|
277
312
|
# contains the object at that path, and the name of the object
|
@@ -283,7 +318,7 @@ module Arv
|
|
283
318
|
|
284
319
|
def stream_at(find_path)
|
285
320
|
key, rest = find_path.split("/", 2)
|
286
|
-
next_stream = get_or_new(key, CollectionStream)
|
321
|
+
next_stream = get_or_new(key, CollectionStream, Errno::ENOTDIR)
|
287
322
|
if rest.nil?
|
288
323
|
next_stream
|
289
324
|
else
|
@@ -294,7 +329,7 @@ module Arv
|
|
294
329
|
def file_at(find_path)
|
295
330
|
stream_path, _, file_name = find_path.rpartition("/")
|
296
331
|
if stream_path.empty?
|
297
|
-
get_or_new(file_name, CollectionFile)
|
332
|
+
get_or_new(file_name, CollectionFile, Errno::EISDIR)
|
298
333
|
else
|
299
334
|
stream_at(stream_path).file_at(file_name)
|
300
335
|
end
|
@@ -377,17 +412,15 @@ module Arv
|
|
377
412
|
items[key] = item
|
378
413
|
end
|
379
414
|
|
380
|
-
def get_or_new(key, klass)
|
415
|
+
def get_or_new(key, klass, err_class)
|
381
416
|
# Return the collection item at `key` and ensure that it's a `klass`.
|
382
417
|
# If `key` does not exist, create a new `klass` there.
|
383
|
-
# If the value for `key` is not a `klass`, raise an
|
418
|
+
# If the value for `key` is not a `klass`, raise an `err_class`.
|
384
419
|
item = items[key]
|
385
420
|
if item.nil?
|
386
421
|
self[key] = klass.new("#{path}/#{key}")
|
387
422
|
elsif not item.is_a?(klass)
|
388
|
-
raise
|
389
|
-
new("in stream %p, %p is a %s, not a %s" %
|
390
|
-
[path, key, items[key].class.human_name, klass.human_name])
|
423
|
+
raise err_class.new(item.path)
|
391
424
|
else
|
392
425
|
item
|
393
426
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arvados
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.20150413172135
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arvados Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-api-client
|
@@ -104,7 +104,7 @@ dependencies:
|
|
104
104
|
- - "<"
|
105
105
|
- !ruby/object:Gem::Version
|
106
106
|
version: 1.0.0
|
107
|
-
description: Arvados client library, git commit
|
107
|
+
description: Arvados client library, git commit 43aa02f5af636f874bac5ffe96cff0061bcd6a44
|
108
108
|
email: gem-dev@curoverse.com
|
109
109
|
executables: []
|
110
110
|
extensions: []
|