s3cp 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 1.0.5 / (2012-06-25)
2
+
3
+ * Added: New command 's3mv' to move files; s3mv is an alias to s3cp --move.
4
+
1
5
  === 1.0.4 / (2012-06-25)
2
6
 
3
7
  * Fixed: Potential "undefined method `finish' for nil:NilClass" error in s3cp.
data/bin/s3mv ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ ARGV.unshift "--move"
3
+ require 's3cp/s3cp'
4
+
data/lib/s3cp/s3cp.rb CHANGED
@@ -40,6 +40,7 @@ options[:retry_backoff] = ENV["S3CP_BACKOFF"] ? ENV["S3CP_BACKOFF"].to_f :
40
40
  options[:include_regex] = []
41
41
  options[:exclude_regex] = []
42
42
  options[:sync] = false
43
+ options[:move] = false
43
44
 
44
45
  op = OptionParser.new do |opts|
45
46
  opts.banner = <<-BANNER
@@ -76,6 +77,10 @@ op = OptionParser.new do |opts|
76
77
  options[:sync] = true
77
78
  end
78
79
 
80
+ opts.on("--move", "Move mode: delete original file(s) after copying.") do
81
+ options[:move] = true
82
+ end
83
+
79
84
  opts.on("--max-attempts N", "Number of attempts to upload/download until checksum matches (default #{options[:retries]})") do |attempts|
80
85
  options[:retries] = attempts.to_i
81
86
  end
@@ -236,13 +241,14 @@ def md5(filename)
236
241
  digest.hexdigest
237
242
  end
238
243
 
239
- def s3_to_s3(bucket_from, key, bucket_to, dest)
244
+ def s3_to_s3(bucket_from, key, bucket_to, dest, options = {})
240
245
  log(with_headers("Copy s3://#{bucket_from}/#{key} to s3://#{bucket_to}/#{dest}"))
241
246
  if @headers.empty?
242
247
  @s3.interface.copy(bucket_from, key, bucket_to, dest)
243
248
  else
244
249
  @s3.interface.copy(bucket_from, key, bucket_to, dest, :copy, @headers)
245
250
  end
251
+ @s3.interface.delete(bucket_from, key) if options[:move]
246
252
  end
247
253
 
248
254
  def local_to_s3(bucket_to, key, file, options = {})
@@ -327,6 +333,7 @@ def local_to_s3(bucket_to, key, file, options = {})
327
333
  else
328
334
  log "Already synchronized."
329
335
  end
336
+ FileUtils.rm file if options[:move]
330
337
  end
331
338
 
332
339
  def s3_to_local(bucket_from, key_from, dest, options = {})
@@ -399,6 +406,8 @@ def s3_to_local(bucket_from, key_from, dest, options = {})
399
406
 
400
407
  retries += 1
401
408
  end until options[:checksum] == false || expected_md5.nil? || md5(dest) == expected_md5
409
+
410
+ @s3.interface.delete(bucket_from, key_from) if options[:move]
402
411
  end
403
412
 
404
413
  def s3_exist?(bucket, key)
@@ -452,11 +461,11 @@ def copy(from, to, options)
452
461
  keys.each do |key|
453
462
  if match(key)
454
463
  dest = key_path key_to, relative(key_from, key)
455
- s3_to_s3(bucket_from, key, bucket_to, dest) unless !options[:overwrite] && s3_exist?(bucket_to, dest)
464
+ s3_to_s3(bucket_from, key, bucket_to, dest, options) unless !options[:overwrite] && s3_exist?(bucket_to, dest)
456
465
  end
457
466
  end
458
467
  else
459
- s3_to_s3(bucket_from, key_from, bucket_to, key_to) unless !options[:overwrite] && s3_exist?(bucket_to, key_to)
468
+ s3_to_s3(bucket_from, key_from, bucket_to, key_to, options) unless !options[:overwrite] && s3_exist?(bucket_to, key_to)
460
469
  end
461
470
  when :local_to_s3
462
471
  if options[:recursive]
@@ -500,8 +509,10 @@ def copy(from, to, options)
500
509
  end
501
510
  if options[:recursive]
502
511
  FileUtils.cp_r from, to
512
+ FileUtils.rm_r from if options[:move]
503
513
  else
504
514
  FileUtils.cp from, to
515
+ FileUtils.rm from if options[:move]
505
516
  end
506
517
  end
507
518
  end
data/lib/s3cp/version.rb CHANGED
@@ -16,5 +16,5 @@
16
16
  # the License.
17
17
 
18
18
  module S3CP
19
- VERSION = "1.0.4"
19
+ VERSION = "1.0.5"
20
20
  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: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 4
10
- version: 1.0.4
9
+ - 5
10
+ version: 1.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alex Boisvert
@@ -139,6 +139,7 @@ executables:
139
139
  - s3du
140
140
  - s3ls
141
141
  - s3mod
142
+ - s3mv
142
143
  - s3rm
143
144
  - s3stat
144
145
  - s3up
@@ -162,6 +163,7 @@ files:
162
163
  - History.txt
163
164
  - README.md
164
165
  - bin/s3up
166
+ - bin/s3mv
165
167
  - bin/s3rm
166
168
  - bin/s3dir
167
169
  - bin/s3mod