s3cp 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,4 +1,8 @@
1
- === 0.1.11 / (Pending)
1
+ === 0.1.12 / (Pending)
2
+
3
+ === 0.1.11 / (2012-02-03)
4
+
5
+ * Added: s3cp --no-overwrite option to prevent overwriting existing files.
2
6
 
3
7
  === 0.1.10 / (2012-01-24)
4
8
 
data/lib/s3cp/s3cp.rb CHANGED
@@ -12,6 +12,7 @@ require 's3cp/utils'
12
12
  options = {}
13
13
  options[:verbose] = $stdout.isatty ? true : false
14
14
  options[:headers] = []
15
+ options[:overwrite] = true
15
16
 
16
17
  op = OptionParser.new do |opts|
17
18
  opts.banner = <<-BANNER
@@ -40,6 +41,10 @@ op = OptionParser.new do |opts|
40
41
  options[:recursive] = true
41
42
  end
42
43
 
44
+ opts.on("--no-overwrite", "Does not overwrite existing files") do
45
+ options[:overwrite] = false
46
+ end
47
+
43
48
  opts.separator ""
44
49
 
45
50
  opts.on('--headers \'Header1: Header1Value\',\'Header2: Header2Value\'', Array, "Headers to set on the item in S3." ) do |h|
@@ -170,6 +175,12 @@ def s3_to_local(bucket_from, key_from, dest)
170
175
  end
171
176
  end
172
177
 
178
+ def s3_exist?(bucket, key)
179
+ metadata = @s3.interface.head(bucket, key)
180
+ puts "exist? #{bucket} #{key} => #{metadata != nil}"
181
+ (metadata != nil)
182
+ end
183
+
173
184
  def copy(from, to, options)
174
185
  bucket_from, key_from = S3CP.bucket_and_key(from)
175
186
  bucket_to, key_to = S3CP.bucket_and_key(to)
@@ -187,10 +198,10 @@ def copy(from, to, options)
187
198
  end
188
199
  keys.each do |key|
189
200
  dest = no_slash(key_to) + '/' + relative(key_from, key)
190
- s3_to_s3(bucket_from, key, bucket_to, dest)
201
+ s3_to_s3(bucket_from, key, bucket_to, dest) unless !options[:overwrite] && s3_exist?(bucket_to, dest)
191
202
  end
192
203
  else
193
- s3_to_s3(bucket_from, key_from, bucket_to, key_to)
204
+ s3_to_s3(bucket_from, key_from, bucket_to, key_to) unless !options[:overwrite] && s3_exist?(bucket_to, key_to)
194
205
  end
195
206
  when :local_to_s3
196
207
  if options[:recursive]
@@ -198,10 +209,10 @@ def copy(from, to, options)
198
209
  files.each do |f|
199
210
  f = File.expand_path(f)
200
211
  key = no_slash(key_to) + '/' + relative(from, f)
201
- local_to_s3(bucket_to, key, f)
212
+ local_to_s3(bucket_to, key, f) unless !options[:overwrite] && s3_exist?(bucket_to, key)
202
213
  end
203
214
  else
204
- local_to_s3(bucket_to, key_to, File.expand_path(from))
215
+ local_to_s3(bucket_to, key_to, File.expand_path(from)) unless !options[:overwrite] && s3_exist?(bucket_to, key_to)
205
216
  end
206
217
  when :s3_to_local
207
218
  if options[:recursive]
@@ -215,12 +226,12 @@ def copy(from, to, options)
215
226
  dir = File.dirname(dest)
216
227
  FileUtils.mkdir_p dir unless File.exist? dir
217
228
  fail "Destination path is not a directory: #{dir}" unless File.directory?(dir)
218
- s3_to_local(bucket_from, key, dest)
229
+ s3_to_local(bucket_from, key, dest) unless !options[:overwrite] && File.exist?(dest)
219
230
  end
220
231
  else
221
232
  dest = File.expand_path(to)
222
233
  dest = File.join(dest, File.basename(key_from)) if File.directory?(dest)
223
- s3_to_local(bucket_from, key_from, dest)
234
+ s3_to_local(bucket_from, key_from, dest) unless !options[:overwrite] && File.exist?(dest)
224
235
  end
225
236
  when :local_to_local
226
237
  if options[:recursive]
data/lib/s3cp/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
 
2
2
  module S3CP
3
- VERSION = "0.1.10"
3
+ VERSION = "0.1.11"
4
4
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3cp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 10
10
- version: 0.1.10
9
+ - 11
10
+ version: 0.1.11
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alex Boisvert
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-01-24 00:00:00 Z
18
+ date: 2012-02-03 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  prerelease: false