imw 0.2.10 → 0.2.11
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/Gemfile +9 -4
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/lib/imw/schemes/local.rb +2 -3
- data/lib/imw/schemes/s3.rb +8 -6
- data/lib/imw/tools/aggregator.rb +4 -4
- data/lib/imw/tools/extension_analyzer.rb +2 -1
- data/lib/imw/utils.rb +2 -1
- data/spec/support/random.rb +4 -4
- metadata +4 -4
data/Gemfile
CHANGED
@@ -2,15 +2,20 @@
|
|
2
2
|
source :gemcutter
|
3
3
|
gem 'activesupport', '2.3.5', :require => 'active_support'
|
4
4
|
gem 'addressable', :require => 'addressable/uri'
|
5
|
-
gem 'rake'
|
6
|
-
gem 'rest-client', '>= 1.6.1', :require => 'restclient'
|
7
5
|
gem 'uuidtools'
|
6
|
+
gem 'rake'
|
7
|
+
|
8
|
+
# The following Gems qre required for specific transport schemes and
|
9
|
+
# are not used by core IMW functions.
|
10
|
+
group :schemes do
|
11
|
+
gem 'aws-s3', :require => 'aws/s3'
|
12
|
+
gem 'dbi'
|
13
|
+
gem 'rest-client', '>= 1.6.1', :require => 'restclient'
|
14
|
+
end
|
8
15
|
|
9
16
|
# The following Gems qre required for specific data formats and are
|
10
17
|
# not used by core IMW functions.
|
11
18
|
group :formats do
|
12
|
-
gem 'aws-s3', :require => 'aws/s3'
|
13
|
-
gem 'dbi'
|
14
19
|
gem 'fastercsv'
|
15
20
|
gem 'hpricot'
|
16
21
|
gem 'json'
|
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.11
|
data/lib/imw/schemes/local.rb
CHANGED
@@ -127,10 +127,9 @@ module IMW
|
|
127
127
|
# Write the text with a trailing newline to this resource.
|
128
128
|
#
|
129
129
|
# @param [String, #to_s] text
|
130
|
-
def
|
130
|
+
def << text
|
131
131
|
io.write text.to_s + "\n"
|
132
132
|
end
|
133
|
-
alias_method :<<, :puts
|
134
133
|
|
135
134
|
# Return the lines in this file.
|
136
135
|
#
|
@@ -160,7 +159,7 @@ module IMW
|
|
160
159
|
# @param [String, Array, #each] data object to emit
|
161
160
|
def emit data, options={}
|
162
161
|
data.each do |element| # works if data is an Array or a String
|
163
|
-
io
|
162
|
+
io << (element.to_s)
|
164
163
|
end
|
165
164
|
end
|
166
165
|
|
data/lib/imw/schemes/s3.rb
CHANGED
@@ -29,13 +29,14 @@ module IMW
|
|
29
29
|
# @param [String, IMW::Resource] new_uri
|
30
30
|
# @return [IMW::Resource] the new resource
|
31
31
|
def cp new_uri
|
32
|
-
IMW::Tools::Transferer.new(:cp, self, new_uri).transfer!
|
32
|
+
#IMW::Tools::Transferer.new(:cp, self, new_uri).transfer!
|
33
|
+
IMW::Schemes::S3.get(self, new_uri)
|
33
34
|
end
|
34
35
|
|
35
36
|
# The AWS::S3::S3Object corresponding to this resource.
|
36
37
|
def s3_object
|
37
|
-
|
38
|
-
@s3_object ||= AWS::S3::S3Object.new(path, bucket)
|
38
|
+
::IMW::Schemes::S3.make_connection!
|
39
|
+
@s3_object ||= AWS::S3::S3Object.new(path, :bucket => bucket)
|
39
40
|
end
|
40
41
|
|
41
42
|
# Does this resource exist on S3?
|
@@ -80,7 +81,7 @@ module IMW
|
|
80
81
|
def self.put source, destination
|
81
82
|
source = IMW.open(source)
|
82
83
|
destintation = IMW.open(destination)
|
83
|
-
raise IMW::ArgumentError.new("destination must be on S3 -- #{destination
|
84
|
+
raise IMW::ArgumentError.new("destination must be on S3 -- #{destination} given") unless destination.on_s3?
|
84
85
|
make_connection!
|
85
86
|
AWS::S3::S3Object.store(destination.path, source.io, destination.bucket)
|
86
87
|
destination
|
@@ -93,9 +94,10 @@ module IMW
|
|
93
94
|
# @return [IMW::Resource] the new resource
|
94
95
|
def self.get source, destination
|
95
96
|
source = IMW.open(source)
|
96
|
-
destination = IMW.open(destination)
|
97
|
+
destination = IMW.open!(destination)
|
98
|
+
raise IMW::ArgumentError.new("source must be on S3 -- #{source} given") unless source.on_s3?
|
97
99
|
make_connection!
|
98
|
-
AWS::S3::
|
100
|
+
AWS::S3::S3Object.stream(source.path, source.bucket) do |chunk|
|
99
101
|
destination.write(chunk)
|
100
102
|
end
|
101
103
|
destination.close
|
data/lib/imw/tools/aggregator.rb
CHANGED
@@ -11,12 +11,12 @@ module IMW
|
|
11
11
|
#
|
12
12
|
# Any remote resources will be downloaded into the directory.
|
13
13
|
#
|
14
|
-
# If any of the resources are
|
14
|
+
# If any of the resources are archives, they will first be
|
15
15
|
# extracted, with only their contents winding up in the final
|
16
16
|
# directory (the file hierarchy of the archive will be preserved).
|
17
17
|
#
|
18
|
-
# If any of the resources are
|
19
|
-
#
|
18
|
+
# If any of the resources are compressed, they will first be
|
19
|
+
# uncompressed before being added to the directory.
|
20
20
|
#
|
21
21
|
# As an example:
|
22
22
|
#
|
@@ -90,7 +90,7 @@ module IMW
|
|
90
90
|
# @return [IMW::Tools::Aggregator]
|
91
91
|
def aggregate *paths_or_inputs
|
92
92
|
@errors = []
|
93
|
-
paths_or_inputs.each do |path_or_input|
|
93
|
+
paths_or_inputs.flatten.compact.each do |path_or_input|
|
94
94
|
input = IMW.open(path_or_input)
|
95
95
|
if input.is_local?
|
96
96
|
aggregate_local_input(input)
|
@@ -38,8 +38,9 @@ module IMW
|
|
38
38
|
# @return [Hash]
|
39
39
|
def normalized_extension_counts
|
40
40
|
@normalized_extension_counts ||= returning({}) do |weighted|
|
41
|
+
num_files = resources.reject(&:is_directory?).length.to_f
|
41
42
|
extension_counts.each_pair do |extension, count|
|
42
|
-
weighted[extension] = count.to_f / num_files
|
43
|
+
weighted[extension] = count.to_f / num_files
|
43
44
|
end
|
44
45
|
end
|
45
46
|
end
|
data/lib/imw/utils.rb
CHANGED
data/spec/support/random.rb
CHANGED
@@ -24,11 +24,11 @@ module IMWTest
|
|
24
24
|
# length of the filename returned.
|
25
25
|
def self.basename options = {}
|
26
26
|
length = (options[:length] or FILENAME_MAX_LENGTH)
|
27
|
-
filename = (1..length).map { |i| FILENAME_CHARS.
|
27
|
+
filename = (1..length).map { |i| FILENAME_CHARS.choice }.join
|
28
28
|
|
29
29
|
# filenames beginning with hyphens suck
|
30
30
|
while (filename[0,1] == '-') do
|
31
|
-
filename[0] = FILENAME_CHARS.
|
31
|
+
filename[0] = FILENAME_CHARS.choice
|
32
32
|
end
|
33
33
|
filename
|
34
34
|
end
|
@@ -38,7 +38,7 @@ module IMWTest
|
|
38
38
|
def self.text options = {}
|
39
39
|
length = (options[:length] or TEXT_MAX_LENGTH)
|
40
40
|
char_pool = options[:newlines] ? TEXT_CHARS : STRING_CHARS
|
41
|
-
(1..length).map { |i| char_pool.
|
41
|
+
(1..length).map { |i| char_pool.choice }.join
|
42
42
|
end
|
43
43
|
|
44
44
|
# Create a random file by matching the extension of the given
|
@@ -190,7 +190,7 @@ module IMWTest
|
|
190
190
|
FileUtils.mkdir_p(directory)
|
191
191
|
|
192
192
|
(rand(options[:num_files]) + 2).times do
|
193
|
-
ext = options[:extensions].
|
193
|
+
ext = options[:extensions].choice
|
194
194
|
name = self.basename
|
195
195
|
if ext == 'dir' then
|
196
196
|
if depth <= options[:max_depth] then
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 11
|
10
|
+
version: 0.2.11
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dhruv Bansal
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-
|
19
|
+
date: 2010-11-15 00:00:00 -06:00
|
20
20
|
default_executable: imw
|
21
21
|
dependencies: []
|
22
22
|
|