guard-s3 0.1.0
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/.gitignore +4 -0
- data/Gemfile +2 -0
- data/README.md +24 -0
- data/Rakefile +2 -0
- data/guard-s3.gemspec +25 -0
- data/lib/guard/s3.rb +61 -0
- data/lib/guard/s3/templates/Guardfile +11 -0
- data/lib/guard/s3/version.rb +5 -0
- metadata +75 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# guard-s3
|
2
|
+
|
3
|
+
guard-s3 is a simple guard library that syncs local directories with S3 as files are changed.
|
4
|
+
|
5
|
+
# Usage
|
6
|
+
|
7
|
+
This is a sample Guardfile
|
8
|
+
|
9
|
+
opts = {
|
10
|
+
:access_key_id => 'ACCESS_KEY_ID_XXXXXX',
|
11
|
+
:secret_access_key => 'SECRET_ACCESS_KEY_XXXXXXXXXXXXXXXXXXXXXX',
|
12
|
+
:bucket => "mybucket",
|
13
|
+
:s3_permissions => :public_read
|
14
|
+
}
|
15
|
+
|
16
|
+
guard 's3', opts do
|
17
|
+
watch(/.*/)
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
# Dependencies
|
22
|
+
|
23
|
+
- guard
|
24
|
+
- aws-s3
|
data/Rakefile
ADDED
data/guard-s3.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require 'guard/s3/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "guard-s3"
|
7
|
+
s.version = Guard::S3::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["James Welsh"]
|
10
|
+
s.email = ["james at supermatter dot com"]
|
11
|
+
s.homepage = "http://github.com/guard/guard-s3"
|
12
|
+
s.summary = %q{A simple guard library for syncing files with s3}
|
13
|
+
s.description = %q{A simple guard library for syncing files with s3}
|
14
|
+
|
15
|
+
s.required_rubygems_version = '>= 1.3.6'
|
16
|
+
s.rubyforge_project = "guard-s3"
|
17
|
+
|
18
|
+
s.files = `git ls-files`.split("\n")
|
19
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
|
23
|
+
s.add_dependency 'aws-s3'
|
24
|
+
s.add_dependency 'guard'
|
25
|
+
end
|
data/lib/guard/s3.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
begin
|
2
|
+
require 'aws/s3'
|
3
|
+
rescue LoadError => e
|
4
|
+
e.message << " (You may need to install the aws-s3 gem)"
|
5
|
+
raise e
|
6
|
+
end unless defined?(AWS::S3)
|
7
|
+
|
8
|
+
require 'guard'
|
9
|
+
require 'guard/guard'
|
10
|
+
|
11
|
+
module ::Guard
|
12
|
+
class S3 < Guard
|
13
|
+
include AWS::S3
|
14
|
+
attr_reader :s3_connection, :pwd
|
15
|
+
|
16
|
+
def initialize(watchers = [], options = {})
|
17
|
+
super
|
18
|
+
@s3_connection = Base.establish_connection!(
|
19
|
+
:access_key_id => options[:access_key_id],
|
20
|
+
:secret_access_key => options[:secret_access_key]
|
21
|
+
)
|
22
|
+
@bucket = options[:bucket]
|
23
|
+
@s3_permissions = :public_read
|
24
|
+
@debug = true
|
25
|
+
@pwd = Dir.pwd
|
26
|
+
end
|
27
|
+
|
28
|
+
def run_on_change(paths)
|
29
|
+
paths.each do |path|
|
30
|
+
file = File.join(pwd, path)
|
31
|
+
begin
|
32
|
+
if exists?(file)
|
33
|
+
log "Nothing uploaded. #{file} already exists!"
|
34
|
+
else
|
35
|
+
log "Syncing #{path}"
|
36
|
+
S3Object.store(path, open(file), @bucket)
|
37
|
+
#S3Object.store(file, open(file), @bucket, {:content_type => file.content_type.to_s.strip, :access => @s3_permissions})
|
38
|
+
end
|
39
|
+
rescue Exception => e
|
40
|
+
log e.message
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def exists?(filename)
|
46
|
+
filename.nil? ? false : AWS::S3::S3Object.exists?(filename, @bucket)
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def debug?
|
52
|
+
@debug || false
|
53
|
+
end
|
54
|
+
|
55
|
+
def log(msg)
|
56
|
+
return unless debug?
|
57
|
+
puts "[#{Time.now}] #{msg}"
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# guard-s3 configuration options
|
2
|
+
opts = {
|
3
|
+
:access_key_id => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX',
|
4
|
+
:secret_access_key => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
|
5
|
+
:bucket => "mybucket",
|
6
|
+
:s3_permissions => :public_read
|
7
|
+
}
|
8
|
+
|
9
|
+
guard 's3', opts do
|
10
|
+
watch(/.*/)
|
11
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: guard-s3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- James Welsh
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-09-24 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: aws-s3
|
16
|
+
requirement: &70196145999740 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70196145999740
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: guard
|
27
|
+
requirement: &70196145999160 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70196145999160
|
36
|
+
description: A simple guard library for syncing files with s3
|
37
|
+
email:
|
38
|
+
- james at supermatter dot com
|
39
|
+
executables: []
|
40
|
+
extensions: []
|
41
|
+
extra_rdoc_files: []
|
42
|
+
files:
|
43
|
+
- .gitignore
|
44
|
+
- Gemfile
|
45
|
+
- README.md
|
46
|
+
- Rakefile
|
47
|
+
- guard-s3.gemspec
|
48
|
+
- lib/guard/s3.rb
|
49
|
+
- lib/guard/s3/templates/Guardfile
|
50
|
+
- lib/guard/s3/version.rb
|
51
|
+
homepage: http://github.com/guard/guard-s3
|
52
|
+
licenses: []
|
53
|
+
post_install_message:
|
54
|
+
rdoc_options: []
|
55
|
+
require_paths:
|
56
|
+
- lib
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.3.6
|
69
|
+
requirements: []
|
70
|
+
rubyforge_project: guard-s3
|
71
|
+
rubygems_version: 1.8.6
|
72
|
+
signing_key:
|
73
|
+
specification_version: 3
|
74
|
+
summary: A simple guard library for syncing files with s3
|
75
|
+
test_files: []
|