octopress-deploy 1.0.0.rc.8 → 1.0.0.rc.9

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3c93a257c3f64bcde00586e19181c10ab9ab2d9
4
- data.tar.gz: 00eee66f5704f5be8315653acfaa8551d15c6ee6
3
+ metadata.gz: 9ef41485f860af0564de3ea78c84c486da797d39
4
+ data.tar.gz: 588bc538b038234a285f95aaff34f7b38631d5be
5
5
  SHA512:
6
- metadata.gz: e69984f331b0ed90ffd675d73bb866f90d160a79bc174b8c3aa2990e54f0202d4e1faafb26eee05e40b014f13a890748db999e8e3e57c8123e2c5c9bcdc4cf33
7
- data.tar.gz: f9ba5ecfe4ba887c63bc9c48830856f63611ffb5d61209b641e562044b218057b529275b55151e7ec6251306a75472cb0c7b829be04f68f55fa49c746b598763
6
+ metadata.gz: fe6a2c50c206d7c38d7ed6249701a2751fcc1efa46311ba1108170000e69b401998f23b515e0d5f9e3410066079033af062eed5f580d9528a95efa4f17ded850
7
+ data.tar.gz: fdd2b7dc8bf51523c018bd0062497993873ef64fc771832eac33df6b560fb8bc8751e9cc80d313a72c2b6ac24c65e319cbc43dab5a2372735a1276c753bd574a
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
 
4
4
  ## Current version
5
+ ### 1.0.0 RC9 - 2014-05-31
6
+
7
+ - New: S3 header configuration options. [#25](https://github.com/octopress/deploy/issues/25')
8
+ - Fix: `site_dir` defaults to `'_site'`. [#29](https://github.com/octopress/deploy/issues/29')
9
+ - Fix: A Windows OS issue. [#30](https://github.com/octopress/deploy/pull/30).
10
+
11
+ ## Past versions
5
12
 
6
13
  ### 1.0.0 RC8 - 2014-05-08
7
14
 
@@ -16,8 +23,6 @@
16
23
 
17
24
  - Fixed: CLI options now override config file settings.
18
25
 
19
- ## Past versions
20
-
21
26
  ### 1.0.0 RC5 - 2014-04-01
22
27
 
23
28
  - Fixed: `site_dir` config didn't work.
data/README.md CHANGED
@@ -77,12 +77,40 @@ account access information.
77
77
  | `verbose` | [optional] Display all file actions during deploy. | true |
78
78
  | `region` | [optional] Region for your AWS bucket | us-east-1 |
79
79
  | `delete` | Delete files in `remote_path` not found in `site_dir` | false |
80
+ | `headers` | Set headers for matched files | [] |
80
81
 
81
82
  If you choose a bucket which doesn't yet exist, Octopress Deploy will offer to create it for you, and offer to configure it as a static website.
82
83
 
83
84
  If you configure Octopress to delete files, all files found in the `remote_path` on S3 bucket will be removed unless they match local site files.
84
85
  If `remote_path` is a subdirectory, only files in that subdirectory will be evaluated for deletion.
85
86
 
87
+
88
+ ### S3 Headers
89
+
90
+ You can create an array of header congifs to set expiration, content and cache settings for any paths matching the `filename`.
91
+
92
+ | Header Config | Description | Default
93
+ |:--------------------|:------------------------------------------------------|:-------------|
94
+ | `filename` | A regex or a substring of the file to match | |
95
+ | `site_dir` | An http date or a number of years or days from now | |
96
+ | `content_type` | A string which is passed through to the headers | |
97
+ | `content_encoding` | A string which is passed through to the headers | |
98
+ | `cache_control` | A string which is passed through to the headers | |
99
+
100
+ Here is how you might set expriation and cache controls for CSS and Javascript files.
101
+
102
+ ```yaml
103
+ headers:
104
+ - filename: '^assets.*\.js$'
105
+ expires: '+3 years'
106
+ cache_control: 'max-age=94608000'
107
+ content_type: 'application/javascript'
108
+ - filename: '^assets.*\.css$'
109
+ expires: '+3 years'
110
+ cache_control: 'max-age=94608000'
111
+ content_type: 'text/css'
112
+ ```
113
+
86
114
  ### AWS config via ENV
87
115
 
88
116
  If you prefer, you can store AWS access credentials in environment variables instead of a conifiguration file.
@@ -5,6 +5,13 @@ permalink: /changelog/
5
5
 
6
6
 
7
7
  ## Current version
8
+ ### 1.0.0 RC9 - 2014-05-31
9
+
10
+ - New: S3 header configuration options. [#25](https://github.com/octopress/deploy/issues/25')
11
+ - Fix: `site_dir` defaults to `'_site'`. [#29](https://github.com/octopress/deploy/issues/29')
12
+ - Fix: A Windows OS issue. [#30](https://github.com/octopress/deploy/pull/30).
13
+
14
+ ## Past versions
8
15
 
9
16
  ### 1.0.0 RC8 - 2014-05-08
10
17
 
@@ -19,8 +26,6 @@ permalink: /changelog/
19
26
 
20
27
  - Fixed: CLI options now override config file settings.
21
28
 
22
- ## Past versions
23
-
24
29
  ### 1.0.0 RC5 - 2014-04-01
25
30
 
26
31
  - Fixed: `site_dir` config didn't work.
@@ -79,12 +79,40 @@ account access information.
79
79
  | `verbose` | [optional] Display all file actions during deploy. | true |
80
80
  | `region` | [optional] Region for your AWS bucket | us-east-1 |
81
81
  | `delete` | Delete files in `remote_path` not found in `site_dir` | false |
82
+ | `headers` | Set headers for matched files | [] |
82
83
 
83
84
  If you choose a bucket which doesn't yet exist, Octopress Deploy will offer to create it for you, and offer to configure it as a static website.
84
85
 
85
86
  If you configure Octopress to delete files, all files found in the `remote_path` on S3 bucket will be removed unless they match local site files.
86
87
  If `remote_path` is a subdirectory, only files in that subdirectory will be evaluated for deletion.
87
88
 
89
+
90
+ ### S3 Headers
91
+
92
+ You can create an array of header congifs to set expiration, content and cache settings for any paths matching the `filename`.
93
+
94
+ | Header Config | Description | Default
95
+ |:--------------------|:------------------------------------------------------|:-------------|
96
+ | `filename` | A regex or a substring of the file to match | |
97
+ | `site_dir` | An http date or a number of years or days from now | |
98
+ | `content_type` | A string which is passed through to the headers | |
99
+ | `content_encoding` | A string which is passed through to the headers | |
100
+ | `cache_control` | A string which is passed through to the headers | |
101
+
102
+ Here is how you might set expriation and cache controls for CSS and Javascript files.
103
+
104
+ ```yaml
105
+ headers:
106
+ - filename: '^assets.*\.js$'
107
+ expires: '+3 years'
108
+ cache_control: 'max-age=94608000'
109
+ content_type: 'application/javascript'
110
+ - filename: '^assets.*\.css$'
111
+ expires: '+3 years'
112
+ cache_control: 'max-age=94608000'
113
+ content_type: 'text/css'
114
+ ```
115
+
88
116
  ### AWS config via ENV
89
117
 
90
118
  If you prefer, you can store AWS access credentials in environment variables instead of a conifiguration file.
@@ -9,7 +9,7 @@ module Octopress
9
9
  @remote = @options[:remote] || 'deploy'
10
10
  @remote_path = @options[:remote_path] || ''
11
11
  @remote_path = @remote_path.sub(/^\//,'') #remove leading slash
12
- @site_dir = File.expand_path(@options[:site_dir]) || '_site'
12
+ @site_dir = File.expand_path(@options[:site_dir] || '_site')
13
13
  @deploy_dir = File.expand_path(@options[:deploy_dir] || '.deploy')
14
14
  @pull_dir = @options[:dir]
15
15
  abort "Deploy Failed: Configure a git_url in #{@options[:config_file]} before deploying.".red if @repo.nil?
@@ -19,7 +19,7 @@ module Octopress
19
19
  #
20
20
  def push
21
21
  init_repo
22
- puts "Syncing #{@site_dir.sub(`pwd`.strip+'/', '')} files to #{@repo}."
22
+ puts "Syncing #{@site_dir.sub(Dir.pwd.strip+'/', '')} files to #{@repo}."
23
23
  FileUtils.cd @deploy_dir do
24
24
  git_pull
25
25
  clean_deploy
@@ -67,7 +67,8 @@ CONFIG
67
67
 
68
68
  # initialize the repository and add the remote.
69
69
  #
70
- `git init; git remote add #{@remote} #{@repo}`
70
+ `git init`
71
+ `git remote add #{@remote} #{@repo}`
71
72
 
72
73
  # Attempt to pull from the remote.
73
74
  #
@@ -77,9 +78,12 @@ CONFIG
77
78
  # If no branch exists on remote, create one locally.
78
79
  else
79
80
  `echo "initialize deploy repo" > _`
80
- `git add .; git commit -m 'initial commit'`
81
+ `git add .`
82
+ `git commit -m \"initial commit\"`
81
83
  `git branch -m #{@branch}`
82
- `git rm _; git add -u; git commit -m 'cleanup'`
84
+ `git rm _`
85
+ `git add -u`
86
+ `git commit -m 'cleanup'`
83
87
  end
84
88
  end
85
89
  end
@@ -110,7 +114,8 @@ CONFIG
110
114
  target_dir = File.join(@deploy_dir, @remote_path).sub(/\/$/,'')
111
115
  FileUtils.cp_r @site_dir + '/.', target_dir
112
116
  message = "Site updated at: #{Time.now.utc}"
113
- `git add --all :/; git commit -m '#{message}'`
117
+ `git add --all :/`
118
+ `git commit -m \"#{message}\"`
114
119
  end
115
120
  end
116
121
  end
@@ -7,7 +7,7 @@ module Octopress
7
7
  @flags = @options[:flags] || ' -avz'
8
8
  @user = @options[:user]
9
9
  @port = @options[:port]
10
- @local = @options[:site_dir]
10
+ @local = @options[:site_dir] || '_site'
11
11
  @remote_path = @options[:remote_path]
12
12
  @exclude = @options[:exclude]
13
13
  @exclude_file = @options[:exclude_file]
@@ -12,7 +12,7 @@ module Octopress
12
12
  abort "Deploying to S3 requires aws-sdk. Install with `gem install aws-sdk`."
13
13
  end
14
14
  @options = options
15
- @local = options[:site_dir]
15
+ @local = options[:site_dir] || '_site'
16
16
  @bucket_name = options[:bucket_name]
17
17
  @access_key = options[:access_key_id] || ENV['AWS_ACCESS_KEY_ID']
18
18
  @secret_key = options[:secret_access_key] || ENV['AWS_SECRET_ACCESS_KEY']
@@ -20,6 +20,7 @@ module Octopress
20
20
  @remote_path = (options[:remote_path] || '/').sub(/^\//,'')
21
21
  @verbose = options[:verbose] || true
22
22
  @delete = options[:delete]
23
+ @headers = options[:headers] || []
23
24
  @remote_path = @remote_path.sub(/^\//,'') # remove leading slash
24
25
  @pull_dir = options[:dir]
25
26
  connect
@@ -65,9 +66,12 @@ module Octopress
65
66
  #
66
67
  def write_files
67
68
  puts "Writing #{pluralize('file', site_files.size)}:" if @verbose
68
- site_files.each do |file|
69
- o = @bucket.objects[remote_path(file)]
70
- o.write(file: file)
69
+ site_files.each do |file|
70
+ s3_filename = remote_path(file)
71
+ o = @bucket.objects[s3_filename]
72
+ file_with_options = get_file_with_metadata(file, s3_filename);
73
+
74
+ o.write(file_with_options)
71
75
  if @verbose
72
76
  puts "+ #{remote_path(file)}"
73
77
  else
@@ -76,6 +80,48 @@ module Octopress
76
80
  end
77
81
  end
78
82
 
83
+ def get_file_with_metadata(file, s3_filename)
84
+ file_with_options = {:file => file }
85
+
86
+ @headers.each do |conf|
87
+ if conf.has_key? 'filename' and s3_filename.match(conf['filename'])
88
+ if @verbose
89
+ puts "+ #{remote_path(file)} matched pattern #{conf['filename']}"
90
+ end
91
+
92
+ if conf.has_key? 'expires'
93
+ expireDate = conf['expires']
94
+
95
+ relative_years = /^\+(\d+) year(s)?$/.match(conf['expires'])
96
+ if relative_years
97
+ expireDate = (Time.now + (60 * 60 * 24 * 365 * relative_years[1].to_i)).httpdate
98
+ end
99
+
100
+ relative_days = /^\+(\d+) day(s)?$/.match(conf['expires'])
101
+ if relative_days
102
+ expireDate = (Time.now + (60 * 60 * 24 * relative_days[1].to_i)).httpdate
103
+ end
104
+
105
+ file_with_options[:expires] = expireDate
106
+ end
107
+
108
+ if conf.has_key? 'content_type'
109
+ file_with_options[:content_type] = conf['content_type']
110
+ end
111
+
112
+ if conf.has_key? 'cache_control'
113
+ file_with_options[:cache_control] = conf['cache_control']
114
+ end
115
+
116
+ if conf.has_key? 'content_encoding'
117
+ file_with_options[:content_encoding] = conf['content_encoding']
118
+ end
119
+ end
120
+ end
121
+
122
+ return file_with_options
123
+ end
124
+
79
125
  # Delete files from the bucket, to ensure a 1:1 match with site files
80
126
  #
81
127
  def delete_files
@@ -183,4 +229,3 @@ CONFIG
183
229
  end
184
230
  end
185
231
  end
186
-
@@ -1,5 +1,5 @@
1
1
  module Octopress
2
2
  module Deploy
3
- VERSION = "1.0.0.rc.8"
3
+ VERSION = "1.0.0.rc.9"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octopress-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc.8
4
+ version: 1.0.0.rc.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Mathis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-08 00:00:00.000000000 Z
11
+ date: 2014-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octopress