s3sync-cf 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/bin/s3sync +90 -86
  2. metadata +3 -19
data/bin/s3sync CHANGED
@@ -416,102 +416,106 @@ ENDUSAGE
416
416
  end
417
417
 
418
418
  if $S3syncOptions['--cf-invalidate'] && $S3syncOptions['--cf-dist-id']
419
- puts "Invalidating following assets from s3 - #{filesToInvalidateOnCloudfront.inspect}" if $S3syncOptions['--verbose']
420
- unless false && $S3syncOptions['--dryrun']
421
- acf = RightAws::AcfInterface.new($AWS_ACCESS_KEY_ID, $AWS_SECRET_ACCESS_KEY)
422
- invalidate_resp = acf.create_invalidation($S3syncOptions['--cf-dist-id'], :path => filesToInvalidateOnCloudfront)
423
- puts invalidate_resp.inspect
424
- end
419
+ puts "Invalidating following assets from s3 - #{filesToInvalidateOnCloudfront.inspect}" if $S3syncOptions['--verbose']
420
+ unless false && $S3syncOptions['--dryrun']
421
+ begin
422
+ acf = RightAws::AcfInterface.new($AWS_ACCESS_KEY_ID, $AWS_SECRET_ACCESS_KEY)
423
+ invalidate_resp = acf.create_invalidation($S3syncOptions['--cf-dist-id'], :path => filesToInvalidateOnCloudfront)
424
+ puts invalidate_resp.inspect
425
+ rescue Exception => xcp
426
+ puts xcp.message
427
+ end
428
+ end
425
429
  end
426
430
  end #main
427
431
 
428
432
 
429
433
  # ---------- NODE ---------- #
430
434
  class Node
431
- attr_reader :name
432
- attr_reader :size
433
- attr_reader :tag
434
- attr_reader :date
435
- def initialize(name='', size = 0, tag = '', date = Time.now.utc)
436
- @name = name
437
- @size = size
438
- @tag = tag
439
- @date = date
440
- end
441
- def directory?()
442
- @tag == $S3syncDirTag and @size == $S3syncDirString.length
443
- end
435
+ attr_reader :name
436
+ attr_reader :size
437
+ attr_reader :tag
438
+ attr_reader :date
439
+ def initialize(name='', size = 0, tag = '', date = Time.now.utc)
440
+ @name = name
441
+ @size = size
442
+ @tag = tag
443
+ @date = date
444
+ end
445
+ def directory?()
446
+ @tag == $S3syncDirTag and @size == $S3syncDirString.length
447
+ end
444
448
  end
445
449
 
446
450
  # ---------- S3Node ---------- #
447
451
  class S3Node < Node
448
- @path = nil
449
- @bucket = nil
450
- @result = nil
451
- def initialize(bucket, prefix, itemOrName)
452
- @bucket = bucket
453
- if itemOrName.kind_of? String
454
- @name = itemOrName
455
- @name.sub!(%r{/$}, "") # don't create directories with a slash on the end
456
- #6/2007. the prefix can be filled but the name empty, in the case of s3sync -r somedir somebucket:
457
- if (not prefix.empty? and @name.empty?)
458
- @name = prefix
459
- itemOrName = prefix
460
- prefix = ""
461
- end
462
- slash = prefix.empty? ? "" : "/"
463
- @path = prefix + slash + itemOrName
464
- else
465
- @name = (itemOrName.name.slice((prefix.length)..itemOrName.name.length) or '')
466
- # depending whether the prefix is / tailed, the name might need trimming
467
- @name.sub!(%r{^/},"") # get rid of leading slash in name if there (from above simplistic split)
468
- @name.sub!(%r{/$}, "") # don't create directories with a slash on the end
469
- @path = itemOrName.name
470
- @path.sub!(%r{/$}, "") # don't create directories with a slash on the end
471
- @size = itemOrName.size
472
- @tag = itemOrName.tag.gsub(/"/,'')
473
- @date = Time.xmlschema(itemOrName.date)
474
- end
475
- debug("s3 node object init. Name:#{@name} Path:#{@path} Size:#{@size} Tag:#{@tag} Date:#{@date}")
476
- end
477
- # get this item from s3 into the provided stream
478
- # S3 pushes to the local item, due to how http streaming is implemented
479
- def to_stream(s)
480
- @result = S3sync.S3try(:get_stream, @bucket, @path, {}, s)
481
- end
482
- def symlink?()
483
- unless @result
484
- @result = S3sync.S3try(:head, @bucket, @path)
485
- end
486
- debug("symlink value is: #{@result.object.metadata['symlink']}")
487
- @result.object.metadata['symlink'] == 'true'
488
- end
489
- def owner
490
- unless @result
491
- @result = S3sync.S3try(:head, @bucket, @path)
492
- end
493
- debug("Owner of this s3 node is #{@result.object.metadata['owner']}")
494
- @result.object.metadata['owner'].to_i # if not there, will be nil => 0 which == root so good default
495
- end
496
- def group
497
- unless @result
498
- @result = S3sync.S3try(:head, @bucket, @path)
499
- end
500
- @result.object.metadata['group'].to_i # 0 default ok
501
- end
502
- def permissions
503
- g = @result.object.metadata['permissions']
504
- g ? g.to_i : 600 # default to owner only
505
- end
506
- def updateFrom(fromNode)
507
- if fromNode.respond_to?(:stream)
508
- meta = Hash.new
509
- meta['owner'] = fromNode.owner.to_s
510
- meta['group'] = fromNode.group.to_s
511
- meta['permissions'] = fromNode.permissions.to_s
512
- meta['symlink'] = 'true' if fromNode.symlink?
513
- begin
514
- theStream = fromNode.stream
452
+ @path = nil
453
+ @bucket = nil
454
+ @result = nil
455
+ def initialize(bucket, prefix, itemOrName)
456
+ @bucket = bucket
457
+ if itemOrName.kind_of? String
458
+ @name = itemOrName
459
+ @name.sub!(%r{/$}, "") # don't create directories with a slash on the end
460
+ #6/2007. the prefix can be filled but the name empty, in the case of s3sync -r somedir somebucket:
461
+ if (not prefix.empty? and @name.empty?)
462
+ @name = prefix
463
+ itemOrName = prefix
464
+ prefix = ""
465
+ end
466
+ slash = prefix.empty? ? "" : "/"
467
+ @path = prefix + slash + itemOrName
468
+ else
469
+ @name = (itemOrName.name.slice((prefix.length)..itemOrName.name.length) or '')
470
+ # depending whether the prefix is / tailed, the name might need trimming
471
+ @name.sub!(%r{^/},"") # get rid of leading slash in name if there (from above simplistic split)
472
+ @name.sub!(%r{/$}, "") # don't create directories with a slash on the end
473
+ @path = itemOrName.name
474
+ @path.sub!(%r{/$}, "") # don't create directories with a slash on the end
475
+ @size = itemOrName.size
476
+ @tag = itemOrName.tag.gsub(/"/,'')
477
+ @date = Time.xmlschema(itemOrName.date)
478
+ end
479
+ debug("s3 node object init. Name:#{@name} Path:#{@path} Size:#{@size} Tag:#{@tag} Date:#{@date}")
480
+ end
481
+ # get this item from s3 into the provided stream
482
+ # S3 pushes to the local item, due to how http streaming is implemented
483
+ def to_stream(s)
484
+ @result = S3sync.S3try(:get_stream, @bucket, @path, {}, s)
485
+ end
486
+ def symlink?()
487
+ unless @result
488
+ @result = S3sync.S3try(:head, @bucket, @path)
489
+ end
490
+ debug("symlink value is: #{@result.object.metadata['symlink']}")
491
+ @result.object.metadata['symlink'] == 'true'
492
+ end
493
+ def owner
494
+ unless @result
495
+ @result = S3sync.S3try(:head, @bucket, @path)
496
+ end
497
+ debug("Owner of this s3 node is #{@result.object.metadata['owner']}")
498
+ @result.object.metadata['owner'].to_i # if not there, will be nil => 0 which == root so good default
499
+ end
500
+ def group
501
+ unless @result
502
+ @result = S3sync.S3try(:head, @bucket, @path)
503
+ end
504
+ @result.object.metadata['group'].to_i # 0 default ok
505
+ end
506
+ def permissions
507
+ g = @result.object.metadata['permissions']
508
+ g ? g.to_i : 600 # default to owner only
509
+ end
510
+ def updateFrom(fromNode)
511
+ if fromNode.respond_to?(:stream)
512
+ meta = Hash.new
513
+ meta['owner'] = fromNode.owner.to_s
514
+ meta['group'] = fromNode.group.to_s
515
+ meta['permissions'] = fromNode.permissions.to_s
516
+ meta['symlink'] = 'true' if fromNode.symlink?
517
+ begin
518
+ theStream = fromNode.stream
515
519
  theStream = ProgressStream.new(theStream, fromNode.size) if $S3syncOptions['--progress']
516
520
 
517
521
  s3o = S3::S3Object.new(theStream, meta)
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3sync-cf
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 0
10
- version: 0.0.0
4
+ prerelease:
5
+ version: 0.0.1
11
6
  platform: ruby
12
7
  authors:
13
8
  - arvindj
@@ -26,11 +21,6 @@ dependencies:
26
21
  requirements:
27
22
  - - ~>
28
23
  - !ruby/object:Gem::Version
29
- hash: 11
30
- segments:
31
- - 2
32
- - 1
33
- - 0
34
24
  version: 2.1.0
35
25
  type: :runtime
36
26
  version_requirements: *id001
@@ -81,23 +71,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
71
  requirements:
82
72
  - - ">="
83
73
  - !ruby/object:Gem::Version
84
- hash: 3
85
- segments:
86
- - 0
87
74
  version: "0"
88
75
  required_rubygems_version: !ruby/object:Gem::Requirement
89
76
  none: false
90
77
  requirements:
91
78
  - - ">="
92
79
  - !ruby/object:Gem::Version
93
- hash: 3
94
- segments:
95
- - 0
96
80
  version: "0"
97
81
  requirements: []
98
82
 
99
83
  rubyforge_project:
100
- rubygems_version: 1.3.7
84
+ rubygems_version: 1.5.0
101
85
  signing_key:
102
86
  specification_version: 3
103
87
  summary: Fork of s3sync to add cloudfront invalidation