jekyll-s3 2.4.3 → 2.5.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/README.md +27 -1
- data/changelog.md +4 -0
- data/jekyll-s3.gemspec +1 -1
- data/lib/jekyll-s3/uploader.rb +18 -4
- data/spec/lib/uploader_spec.rb +11 -0
- metadata +9 -3
data/README.md
CHANGED
@@ -96,6 +96,15 @@ s3_endpoint: ap-northeast-1
|
|
96
96
|
The valid `s3_endpoint` values consist of the [S3 location constraint
|
97
97
|
values](http://docs.amazonwebservices.com/general/latest/gr/rande.html#s3_region).
|
98
98
|
|
99
|
+
### Ignoring files you want to keep on AWS
|
100
|
+
|
101
|
+
Sometimes there are files or directories you want to keep on S3, but not on
|
102
|
+
your local machine. You may define a regular expression to ignore files like so:
|
103
|
+
|
104
|
+
```yaml
|
105
|
+
ignore_on_server: that_folder_of_stuff_i_dont_keep_locally
|
106
|
+
```
|
107
|
+
|
99
108
|
### Reduced Redundancy
|
100
109
|
|
101
110
|
You can reduce the cost of hosting your blog on S3 by using Reduced Redundancy Storage:
|
@@ -125,16 +134,32 @@ bucket that are not on your local computer.
|
|
125
134
|
Enable the headless mode by adding the `--headless` or `-h` argument after
|
126
135
|
`jekyll-s3`.
|
127
136
|
|
128
|
-
|
137
|
+
### Using `jekyll-s3` as a library
|
129
138
|
|
130
139
|
By nature, `jekyll-s3` is a command-line interface tool. You can, however, use
|
131
140
|
it programmatically by calling the same API as the executable `jekyll-s3` does:
|
132
141
|
|
133
142
|
````ruby
|
143
|
+
require 'jekyll-s3'
|
134
144
|
is_headless = true
|
135
145
|
Jekyll::S3::CLI.new.run('/path/to/your/jekyll-site/_site/', is_headless)
|
136
146
|
````
|
137
147
|
|
148
|
+
You can also use a basic `Hash` instead of a `_jekyll_s3.yml` file:
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
config = {
|
152
|
+
"s3_id" => YOUR_AWS_S3_ACCESS_KEY_ID,
|
153
|
+
"s3_secret" => YOUR_AWS_S3_SECRET_ACCESS_KEY,
|
154
|
+
"s3_bucket" => your.blog.bucket.com
|
155
|
+
}
|
156
|
+
in_headless = true
|
157
|
+
Jekyll::S3::Uploader.run('/path/to/your/jekyll-site/_site/', config, in_headless)
|
158
|
+
```
|
159
|
+
|
160
|
+
The code above will assume that you have the `_jekyll_s3.yml` in the directory
|
161
|
+
`/path/to/your/jekyll-site`.
|
162
|
+
|
138
163
|
## Known issues
|
139
164
|
|
140
165
|
None. Please send a pull request if you spot any.
|
@@ -175,6 +200,7 @@ MIT
|
|
175
200
|
Copyright (c) 2011 VersaPay, Philippe Creux.
|
176
201
|
|
177
202
|
Contributors (in alphabetical order)
|
203
|
+
* Alan deLevie
|
178
204
|
* Cory Kaufman-Schofield
|
179
205
|
* Chris Kelly
|
180
206
|
* Chris Moos
|
data/changelog.md
CHANGED
data/jekyll-s3.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "jekyll-s3"
|
6
|
-
s.version = "2.
|
6
|
+
s.version = "2.5.0"
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.authors = ["Philippe Creux", "Lauri Lehmijoki"]
|
9
9
|
s.email = ["pcreux@gmail.com", "lauri.lehmijoki@iki.fi"]
|
data/lib/jekyll-s3/uploader.rb
CHANGED
@@ -12,8 +12,10 @@ module Jekyll
|
|
12
12
|
s3, config, site_dir
|
13
13
|
)
|
14
14
|
|
15
|
-
deleted_files_count = remove_superfluous_files(
|
16
|
-
|
15
|
+
deleted_files_count = remove_superfluous_files(s3, { :s3_bucket => config['s3_bucket'],
|
16
|
+
:site_dir => site_dir,
|
17
|
+
:in_headless_mode => in_headless_mode,
|
18
|
+
:ignore_on_server => config["ignore_on_server"] })
|
17
19
|
|
18
20
|
print_done_report config
|
19
21
|
|
@@ -63,10 +65,16 @@ module Jekyll
|
|
63
65
|
end
|
64
66
|
end
|
65
67
|
|
66
|
-
def self.remove_superfluous_files(s3,
|
68
|
+
def self.remove_superfluous_files(s3, options)
|
69
|
+
s3_bucket_name = options.fetch(:s3_bucket)
|
70
|
+
site_dir = options.fetch(:site_dir)
|
71
|
+
in_headless_mode = options.fetch(:in_headless_mode)
|
72
|
+
|
67
73
|
remote_files = s3.buckets[s3_bucket_name].objects.map { |f| f.key }
|
68
74
|
local_files = load_all_local_files(site_dir)
|
69
|
-
files_to_delete = remote_files
|
75
|
+
files_to_delete = build_list_of_files_to_delete(remote_files, local_files, options[:ignore_on_server])
|
76
|
+
|
77
|
+
|
70
78
|
deleted_files_count = 0
|
71
79
|
if in_headless_mode
|
72
80
|
files_to_delete.each { |s3_object_key|
|
@@ -82,6 +90,12 @@ module Jekyll
|
|
82
90
|
deleted_files_count
|
83
91
|
end
|
84
92
|
|
93
|
+
def self.build_list_of_files_to_delete(remote_files, local_files, ignore_on_server = nil)
|
94
|
+
ignore_on_server = Regexp.new(ignore_on_server || "a_string_that_should_never_match_ever")
|
95
|
+
files_to_delete = remote_files - local_files
|
96
|
+
files_to_delete.reject { |file| ignore_on_server.match(file) }
|
97
|
+
end
|
98
|
+
|
85
99
|
def self.delete_s3_object(s3, s3_bucket_name, s3_object_key)
|
86
100
|
Retry.run_with_retry do
|
87
101
|
s3.buckets[s3_bucket_name].objects[s3_object_key].delete
|
data/spec/lib/uploader_spec.rb
CHANGED
@@ -16,4 +16,15 @@ describe Jekyll::S3::Uploader do
|
|
16
16
|
files.should include('.vimrc')
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
context "#build_list_of_files_to_delete" do
|
21
|
+
it "ignores files which match a regular expression" do
|
22
|
+
files_to_delete = Jekyll::S3::Uploader.build_list_of_files_to_delete(["a", "b", "ignored"], ["a"], "ignored")
|
23
|
+
files_to_delete.should eq ["b"]
|
24
|
+
end
|
25
|
+
it "does not ignore when you don't provide an ignored regex" do
|
26
|
+
files_to_delete = Jekyll::S3::Uploader.build_list_of_files_to_delete(["a", "b", "ignored"], ["a"])
|
27
|
+
files_to_delete.should eq ["b", "ignored"]
|
28
|
+
end
|
29
|
+
end
|
19
30
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-s3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-04-
|
13
|
+
date: 2013-04-18 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: aws-sdk
|
@@ -331,15 +331,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
331
331
|
- - ! '>='
|
332
332
|
- !ruby/object:Gem::Version
|
333
333
|
version: '0'
|
334
|
+
segments:
|
335
|
+
- 0
|
336
|
+
hash: 392463145716040126
|
334
337
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
335
338
|
none: false
|
336
339
|
requirements:
|
337
340
|
- - ! '>='
|
338
341
|
- !ruby/object:Gem::Version
|
339
342
|
version: '0'
|
343
|
+
segments:
|
344
|
+
- 0
|
345
|
+
hash: 392463145716040126
|
340
346
|
requirements: []
|
341
347
|
rubyforge_project:
|
342
|
-
rubygems_version: 1.8.
|
348
|
+
rubygems_version: 1.8.25
|
343
349
|
signing_key:
|
344
350
|
specification_version: 3
|
345
351
|
summary: Push your Jekyll blog to S3
|