s3cp 0.1.10 → 0.1.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/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