microstatic 0.0.1.pre1 → 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 +2 -0
- data/.rvmrc +1 -0
- data/README.md +4 -0
- data/lib/microstatic/s3_deployer.rb +57 -0
- data/lib/microstatic/version.rb +1 -1
- data/lib/microstatic.rb +1 -4
- data/microstatic.gemspec +7 -0
- data/spec/integration/fixtures/example_file.txt +4 -0
- data/spec/integration/fixtures/subdir/another_file.txt +1 -0
- data/spec/integration/fixtures/subdir/foo.txt +0 -0
- data/spec/integration/fixtures/subdir/subsubdir/deep.txt +1 -0
- data/spec/integration/spec_helper.rb +3 -0
- data/spec/integration/upload_to_test_bucket_spec.rb +27 -0
- metadata +100 -7
data/.gitignore
CHANGED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use --create default@microstatic
|
data/README.md
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'digest/md5'
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
require 'aws/s3'
|
5
|
+
|
6
|
+
# The following is based on code generously
|
7
|
+
# shared by Giles Alexander (@gga)
|
8
|
+
class Microstatic::S3Deployer
|
9
|
+
def initialize( local_dir, bucket, aws_creds )
|
10
|
+
[:access_key_id,:secret_access_key].each do |required_key|
|
11
|
+
raise ArgumentError, "must supply :#{required_key}" unless aws_creds.key?(required_key)
|
12
|
+
end
|
13
|
+
|
14
|
+
@local_dir = Pathname.new(local_dir)
|
15
|
+
@bucket = bucket
|
16
|
+
@aws_creds = aws_creds
|
17
|
+
end
|
18
|
+
|
19
|
+
def upload
|
20
|
+
AWS::S3::Base.establish_connection!(@aws_creds)
|
21
|
+
|
22
|
+
Pathname.glob(@local_dir+"**/*") do |child|
|
23
|
+
upload_file(child) unless child.directory?
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def upload_file( file )
|
28
|
+
s3_key = file.relative_path_from(@local_dir).to_s
|
29
|
+
|
30
|
+
begin
|
31
|
+
s3_object = AWS::S3::S3Object.find(s3_key, @bucket)
|
32
|
+
rescue AWS::S3::NoSuchKey
|
33
|
+
s3_object = false
|
34
|
+
end
|
35
|
+
|
36
|
+
if !s3_object
|
37
|
+
log_action('CREATE', s3_key)
|
38
|
+
AWS::S3::S3Object.store(s3_key, file.open, @bucket)
|
39
|
+
else
|
40
|
+
s3_md5 = s3_object.about['etag'].sub(/"(.*)"/,'\1')
|
41
|
+
local_md5 = Digest::MD5.hexdigest( file.read )
|
42
|
+
|
43
|
+
if( s3_md5 == local_md5 )
|
44
|
+
log_action('NO CHANGE', s3_key)
|
45
|
+
else
|
46
|
+
log_action('UPDATE', s3_key)
|
47
|
+
AWS::S3::S3Object.store(s3_key, file.open, @bucket)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def log_action(action,file)
|
53
|
+
message = action.to_s.rjust(10) + " " + file
|
54
|
+
puts message
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
data/lib/microstatic/version.rb
CHANGED
data/lib/microstatic.rb
CHANGED
data/microstatic.gemspec
CHANGED
@@ -14,4 +14,11 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.name = "microstatic"
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = Microstatic::VERSION
|
17
|
+
|
18
|
+
gem.add_runtime_dependency "aws-s3", "~>0.6.3"
|
19
|
+
|
20
|
+
gem.add_development_dependency "rake"
|
21
|
+
gem.add_development_dependency "bundler"
|
22
|
+
gem.add_development_dependency "rspec", "~>2.13.0"
|
23
|
+
gem.add_development_dependency "pry-nav", "~> 0.2.3"
|
17
24
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
asdafsaad
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
deep
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
require_relative '../../lib/microstatic/s3_deployer'
|
3
|
+
|
4
|
+
module Microstatic
|
5
|
+
describe 'uploading to a test bucket' do
|
6
|
+
def test_bucket
|
7
|
+
'microstatic-test-bucket'
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_dir
|
11
|
+
File.expand_path( "../fixtures", __FILE__ )
|
12
|
+
end
|
13
|
+
|
14
|
+
def aws_creds
|
15
|
+
{
|
16
|
+
:access_key_id => ENV.fetch('AWS_ACCESS_KEY_ID'),
|
17
|
+
:secret_access_key => ENV.fetch('AWS_SECRET_ACCESS_KEY')
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'succeeds' do
|
22
|
+
deployer = S3Deployer.new( test_dir, test_bucket, aws_creds )
|
23
|
+
deployer.upload
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: microstatic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Pete Hodgson
|
@@ -10,7 +10,87 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
date: 2013-05-26 00:00:00.000000000 Z
|
13
|
-
dependencies:
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: aws-s3
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.6.3
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.6.3
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: bundler
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.13.0
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.13.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: pry-nav
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.2.3
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.2.3
|
14
94
|
description: The microstatic gem turns generating your static site and deploying it
|
15
95
|
to S3 into a one-liner.
|
16
96
|
email:
|
@@ -20,13 +100,21 @@ extensions: []
|
|
20
100
|
extra_rdoc_files: []
|
21
101
|
files:
|
22
102
|
- .gitignore
|
103
|
+
- .rvmrc
|
23
104
|
- Gemfile
|
24
105
|
- LICENSE
|
25
106
|
- README.md
|
26
107
|
- Rakefile
|
27
108
|
- lib/microstatic.rb
|
109
|
+
- lib/microstatic/s3_deployer.rb
|
28
110
|
- lib/microstatic/version.rb
|
29
111
|
- microstatic.gemspec
|
112
|
+
- spec/integration/fixtures/example_file.txt
|
113
|
+
- spec/integration/fixtures/subdir/another_file.txt
|
114
|
+
- spec/integration/fixtures/subdir/foo.txt
|
115
|
+
- spec/integration/fixtures/subdir/subsubdir/deep.txt
|
116
|
+
- spec/integration/spec_helper.rb
|
117
|
+
- spec/integration/upload_to_test_bucket_spec.rb
|
30
118
|
homepage: https://github.com/moredip/microstatic
|
31
119
|
licenses: []
|
32
120
|
post_install_message:
|
@@ -42,14 +130,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
42
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
131
|
none: false
|
44
132
|
requirements:
|
45
|
-
- - ! '
|
133
|
+
- - ! '>='
|
46
134
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
135
|
+
version: '0'
|
48
136
|
requirements: []
|
49
137
|
rubyforge_project:
|
50
138
|
rubygems_version: 1.8.24
|
51
139
|
signing_key:
|
52
140
|
specification_version: 3
|
53
141
|
summary: Generate static sites from git and deploy them to an S3 bucket.
|
54
|
-
test_files:
|
55
|
-
|
142
|
+
test_files:
|
143
|
+
- spec/integration/fixtures/example_file.txt
|
144
|
+
- spec/integration/fixtures/subdir/another_file.txt
|
145
|
+
- spec/integration/fixtures/subdir/foo.txt
|
146
|
+
- spec/integration/fixtures/subdir/subsubdir/deep.txt
|
147
|
+
- spec/integration/spec_helper.rb
|
148
|
+
- spec/integration/upload_to_test_bucket_spec.rb
|