s3cp 1.0.4 → 1.0.5

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/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