wp-capistrano 0.3.0 → 0.3.1
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.rdoc +4 -0
- data/VERSION +1 -1
- data/lib/manifest-yml.rb +46 -0
- data/lib/wp-capistrano.rb +7 -1
- data/lib/wp-capistrano/deploy.rb +10 -3
- data/lib/wp-capistrano/feature/cforms.rb +2 -0
- data/lib/wp-capistrano/feature/compass.rb +53 -0
- data/lib/wp-capistrano/feature/htaccess.rb +51 -0
- data/lib/wp-capistrano/feature/makefile-manifest.rb +24 -0
- data/lib/wp-capistrano/feature/plugin-install.rb +2 -0
- data/lib/wp-capistrano/feature/sass.rb +2 -0
- data/lib/wp-capistrano/feature/shared-dirs.rb +2 -4
- data/lib/wp-capistrano/feature/wp-super-cache.rb +10 -8
- data/lib/wp-capistrano/setup.rb +3 -1
- data/lib/wp-config.rb +1 -1
- data/lib/wp_capistrano/deploy.rb +2 -0
- metadata +11 -7
- data/.gitignore +0 -2
data/README.rdoc
CHANGED
@@ -56,6 +56,10 @@ If there exists wp-content/themes/*/*/sass_output.php it will be executed locall
|
|
56
56
|
|
57
57
|
A sample sass_output.php can be found in wp-generate ( http://github.com/dxw/wp-generate ).
|
58
58
|
|
59
|
+
=== Compass
|
60
|
+
|
61
|
+
If there's a compass config file in the theme, it will be found and compiled locally, and the stylesheets directory will be uploaded to the correct place.
|
62
|
+
|
59
63
|
=== htaccess
|
60
64
|
|
61
65
|
Uploads ./htaccess to .htaccess if it exists.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
data/lib/manifest-yml.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class ManifestYML
|
4
|
+
attr_accessor :files
|
5
|
+
|
6
|
+
def initialize f
|
7
|
+
@files = []
|
8
|
+
y = YAML.load_file f
|
9
|
+
|
10
|
+
# Files is deprecated
|
11
|
+
files = %w[Files Static Executable Invisible]
|
12
|
+
for f in files
|
13
|
+
if y[f]
|
14
|
+
@files += glob(y[f])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
if y['Manifests']
|
19
|
+
glob(y['Manifests']).each do |m|
|
20
|
+
pwd = File.dirname(m)
|
21
|
+
Dir.chdir pwd do
|
22
|
+
newfiles = ManifestYML.new(File.basename(m)).files
|
23
|
+
@files += newfiles.map{|f|File.join(pwd, f)}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def each_file &block
|
30
|
+
@files.each &block
|
31
|
+
end
|
32
|
+
|
33
|
+
def glob patterns
|
34
|
+
fi = []
|
35
|
+
patterns.each do |pat|
|
36
|
+
f = Dir.glob pat
|
37
|
+
|
38
|
+
if f.length < 1
|
39
|
+
raise RuntimeError, "Pattern #{pat} returned no matches"
|
40
|
+
end
|
41
|
+
fi += f
|
42
|
+
end
|
43
|
+
|
44
|
+
fi
|
45
|
+
end
|
46
|
+
end
|
data/lib/wp-capistrano.rb
CHANGED
@@ -1,14 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'erb'
|
2
4
|
require 'digest'
|
3
5
|
require 'digest/sha1'
|
4
6
|
|
7
|
+
require 'manifest-yml'
|
5
8
|
require 'wp-config'
|
6
9
|
require 'wp-capistrano/deploy'
|
7
10
|
require 'wp-capistrano/setup'
|
8
11
|
|
9
12
|
# Features
|
10
13
|
require 'wp-capistrano/feature/cforms'
|
14
|
+
require 'wp-capistrano/feature/compass'
|
11
15
|
require 'wp-capistrano/feature/htaccess'
|
16
|
+
require 'wp-capistrano/feature/makefile-manifest'
|
12
17
|
require 'wp-capistrano/feature/plugin-install'
|
13
18
|
require 'wp-capistrano/feature/sass'
|
14
19
|
require 'wp-capistrano/feature/shared-dirs'
|
@@ -24,6 +29,7 @@ Capistrano::Configuration.instance.load do
|
|
24
29
|
def set_target target
|
25
30
|
tt = WPConfig.instance.h['deploy'][target]
|
26
31
|
if tt
|
32
|
+
set :deploy_target, target
|
27
33
|
t = OpenStruct.new(tt)
|
28
34
|
set :domain, t.ssh_domain
|
29
35
|
set :user, t.ssh_user
|
@@ -61,11 +67,11 @@ Capistrano::Configuration.instance.load do
|
|
61
67
|
set :wordpress_version, WPConfig.wordpress.version
|
62
68
|
set :wordpress_git_url, WPConfig.wordpress.repository
|
63
69
|
set :repository, WPConfig.application.repository
|
70
|
+
set :branch, WPConfig.application.version
|
64
71
|
|
65
72
|
# Everything else
|
66
73
|
set :scm, "git"
|
67
74
|
set :deploy_via, :remote_cache
|
68
|
-
set :branch, "master"
|
69
75
|
set :git_shallow_clone, 1
|
70
76
|
set :git_enable_submodules, 1
|
71
77
|
set :wordpress_db_host, "localhost"
|
data/lib/wp-capistrano/deploy.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
Capistrano::Configuration.instance.load do
|
2
4
|
namespace :deploy do
|
3
5
|
|
@@ -26,7 +28,8 @@ Capistrano::Configuration.instance.load do
|
|
26
28
|
|
27
29
|
set :content_dirs, {'themes' => :copy,
|
28
30
|
'uploads' => :copy,
|
29
|
-
'plugins' => :copy
|
31
|
+
'plugins' => :copy,
|
32
|
+
'languages' => :copy}
|
30
33
|
|
31
34
|
deploy.content_dirs_configure
|
32
35
|
|
@@ -34,9 +37,11 @@ Capistrano::Configuration.instance.load do
|
|
34
37
|
dest = "#{latest_release}/finalized/wp-content/"
|
35
38
|
case action
|
36
39
|
when :copy
|
37
|
-
|
40
|
+
src = "#{latest_release}/#{dir}"
|
41
|
+
run "[ -e #{src} ] && cp -rv #{src} #{dest} || true"
|
38
42
|
when :link then 'ln -s'
|
39
|
-
|
43
|
+
src = "#{shared_path}/#{dir}"
|
44
|
+
run "[ -e #{src} ] && ln -s #{src} #{dest} || true"
|
40
45
|
end
|
41
46
|
end
|
42
47
|
|
@@ -65,6 +70,8 @@ Capistrano::Configuration.instance.load do
|
|
65
70
|
# For certain cases we may allow the user write access (i.e. module plugin-install)
|
66
71
|
# it should always be direct filesystem access (and WordPress' autodetection is pants)
|
67
72
|
preconfig['FS_METHOD'] = "'direct'"
|
73
|
+
# Generally speaking we don't want file editing
|
74
|
+
preconfig['DISALLOW_FILE_EDIT'] = 'true'
|
68
75
|
|
69
76
|
# Allow modules a chance to interfere
|
70
77
|
deploy.wp_config_configure
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# Assumes you're using DXW's sass_output.php convention
|
4
|
+
# A sample can be found in dxw/wp-generate:
|
5
|
+
# http://github.com/dxw/wp-generate/blob/master/lib/wp_generate/templates/theme/sass/sass_output.php
|
6
|
+
|
7
|
+
begin
|
8
|
+
require 'compass'
|
9
|
+
|
10
|
+
Capistrano::Configuration.instance.load do
|
11
|
+
after 'deploy:finalize_update' do
|
12
|
+
|
13
|
+
Dir.glob("themes/*").each do |theme_dir|
|
14
|
+
|
15
|
+
# Config
|
16
|
+
cfg_file = Compass.detect_configuration_file(theme_dir)
|
17
|
+
|
18
|
+
if cfg_file
|
19
|
+
cfg = Compass.add_project_configuration(cfg_file)
|
20
|
+
abs_css = File.expand_path(File.join(theme_dir, cfg.css_path))
|
21
|
+
|
22
|
+
# Compile
|
23
|
+
compiled = system("compass compile --trace --force --output-style compressed #{theme_dir}")
|
24
|
+
#TODO: do this instead
|
25
|
+
#Compass.compiler.options[:style] = :compressed
|
26
|
+
#Compass.compiler.run
|
27
|
+
|
28
|
+
if compiled
|
29
|
+
|
30
|
+
# Path fiddling
|
31
|
+
|
32
|
+
pwd = File.expand_path(Dir.pwd)
|
33
|
+
|
34
|
+
unless pwd == abs_css[0...pwd.length]
|
35
|
+
raise RuntimeError, 'opps'
|
36
|
+
end
|
37
|
+
|
38
|
+
relative_css = abs_css[pwd.length+1..-1]
|
39
|
+
|
40
|
+
remote_css = "#{latest_release}/finalized/wp-content/#{relative_css}"
|
41
|
+
|
42
|
+
# Upload
|
43
|
+
top.upload(abs_css, remote_css, :via => :scp, :recursive => true)
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
rescue LoadError
|
52
|
+
# Don't die horribly
|
53
|
+
end
|
@@ -1,9 +1,60 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
# Custom htaccess
|
2
4
|
|
3
5
|
Capistrano::Configuration.instance.load do
|
4
6
|
after 'deploy:finalize_update' do
|
5
7
|
if File.exist? 'htaccess'
|
8
|
+
|
6
9
|
top.upload("htaccess", "#{latest_release}/finalized/.htaccess" , :via => :scp)
|
10
|
+
|
11
|
+
else
|
12
|
+
|
13
|
+
htaccess = <<END
|
14
|
+
# BEGIN WordPress
|
15
|
+
<IfModule mod_rewrite.c>
|
16
|
+
RewriteEngine On
|
17
|
+
RewriteBase /
|
18
|
+
RewriteCond %{REQUEST_FILENAME} !-f
|
19
|
+
RewriteCond %{REQUEST_FILENAME} !-d
|
20
|
+
RewriteRule . /index.php [L]
|
21
|
+
</IfModule>
|
22
|
+
# END WordPress
|
23
|
+
END
|
24
|
+
|
25
|
+
if deploy_profile.modules.include? 'wp-super-cache'
|
26
|
+
htaccess = <<END + htaccess
|
27
|
+
# BEGIN WPSuperCache
|
28
|
+
<IfModule mod_rewrite.c>
|
29
|
+
RewriteEngine On
|
30
|
+
RewriteBase /
|
31
|
+
AddDefaultCharset UTF-8
|
32
|
+
RewriteCond %{REQUEST_URI} !^.*[^/]$
|
33
|
+
RewriteCond %{REQUEST_URI} !^.*//.*$
|
34
|
+
RewriteCond %{REQUEST_METHOD} !POST
|
35
|
+
RewriteCond %{QUERY_STRING} !.*=.*
|
36
|
+
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
|
37
|
+
RewriteCond %{HTTP:Accept-Encoding} gzip
|
38
|
+
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
|
39
|
+
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]
|
40
|
+
|
41
|
+
RewriteCond %{REQUEST_URI} !^.*[^/]$
|
42
|
+
RewriteCond %{REQUEST_URI} !^.*//.*$
|
43
|
+
RewriteCond %{REQUEST_METHOD} !POST
|
44
|
+
RewriteCond %{QUERY_STRING} !.*=.*
|
45
|
+
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
|
46
|
+
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f
|
47
|
+
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html [L]
|
48
|
+
</IfModule>
|
49
|
+
# END WPSuperCache
|
50
|
+
END
|
51
|
+
end
|
52
|
+
|
53
|
+
put(htaccess, "#{latest_release}/finalized/.htaccess", :via => :scp)
|
54
|
+
|
7
55
|
end
|
56
|
+
|
57
|
+
run("chmod 755 #{latest_release}/finalized/.htaccess")
|
58
|
+
|
8
59
|
end
|
9
60
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# Runs make deploy in the root of the project if Makefile is found
|
4
|
+
# And uploads any files listed in Manifest.yml
|
5
|
+
|
6
|
+
Capistrano::Configuration.instance.load do
|
7
|
+
after 'deploy:finalize_update' do
|
8
|
+
|
9
|
+
# Makefiles
|
10
|
+
if File.exist? 'Makefile'
|
11
|
+
unless system 'make deploy'
|
12
|
+
raise RuntimeError, 'make deploy failed'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# ... and Manifests
|
17
|
+
if File.exist? 'Manifest.yml'
|
18
|
+
ManifestYML.new('Manifest.yml').each_file do |f|
|
19
|
+
top.upload(f, "#{latest_release}/finalized/wp-content/#{f}")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
# Shared directories get uploaded at setup-time and don't change
|
2
4
|
|
3
5
|
Capistrano::Configuration.instance.load do
|
@@ -58,10 +60,6 @@ Capistrano::Configuration.instance.load do
|
|
58
60
|
end
|
59
61
|
|
60
62
|
before 'deploy:content_dirs_configure' do
|
61
|
-
p 'hihi'
|
62
|
-
|
63
|
-
p shared_dirs
|
64
|
-
|
65
63
|
shared_dirs.each do |dir|
|
66
64
|
content_dirs[dir] = :link
|
67
65
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
# WP Super Cache
|
2
4
|
|
3
5
|
Capistrano::Configuration.instance.load do
|
@@ -14,23 +16,23 @@ Capistrano::Configuration.instance.load do
|
|
14
16
|
top.upload("plugins/wp-super-cache/advanced-cache.php", "#{latest_release}/finalized/wp-content/" , :via => :scp)
|
15
17
|
sedable_path = "#{latest_release}/finalized/wp-content/plugins/wp-super-cache/".gsub(/\//,'\/')
|
16
18
|
run("sed -i 's/CACHEHOME/#{sedable_path}/g' #{latest_release}/finalized/wp-content/advanced-cache.php")
|
17
|
-
|
18
|
-
raise IOError, 'Are you sure you have the WP Super Cache plugin?'
|
19
|
+
elsif deploy_profile.modules.include? 'wp-super-cache'
|
20
|
+
raise IOError, 'Are you sure you have the WP Super Cache plugin? Could not find advanced-cache.php'
|
19
21
|
end
|
20
22
|
|
21
23
|
if File.exist? 'wp-cache-config.php'
|
22
24
|
top.upload("wp-cache-config.php", "#{latest_release}/finalized/wp-content/" , :via => :scp)
|
23
25
|
elsif File.exist? 'plugins/wp-super-cache/wp-cache-config-sample.php'
|
24
26
|
top.upload("plugins/wp-super-cache/wp-cache-config-sample.php", "#{latest_release}/finalized/wp-content/wp-cache-config.php" , :via => :scp)
|
25
|
-
|
26
|
-
raise IOError, 'Are you sure you have the WP Super Cache plugin?'
|
27
|
+
elsif deploy_profile.modules.include? 'wp-super-cache'
|
28
|
+
raise IOError, 'Are you sure you have the WP Super Cache plugin? Could not find wp-cache-config.php'
|
27
29
|
end
|
28
30
|
|
29
|
-
|
30
|
-
mkdir -p #{latest_release}/finalized/wp-content/cache/meta")
|
31
|
-
|
32
|
-
# Keep writables to a bare minimum
|
31
|
+
# Keep writable directories to a bare minimum
|
33
32
|
if deploy_profile.modules.include? 'wp-super-cache'
|
33
|
+
run("mkdir -p #{latest_release}/finalized/wp-content/cache/blogs &&
|
34
|
+
mkdir -p #{latest_release}/finalized/wp-content/cache/meta")
|
35
|
+
|
34
36
|
run("chmod -R 777 #{latest_release}/finalized/wp-content/cache &&
|
35
37
|
chmod -R 777 #{latest_release}/finalized/wp-content/wp-cache-config.php")
|
36
38
|
end
|
data/lib/wp-capistrano/setup.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
Capistrano::Configuration.instance.load do
|
2
4
|
namespace :setup do
|
3
5
|
|
@@ -16,7 +18,7 @@ Capistrano::Configuration.instance.load do
|
|
16
18
|
run "rm -rf #{shared_path}/wordpress || true"
|
17
19
|
raise Exception, 'wordpress.repository must be set in config.yml' if wordpress_git_url.nil?
|
18
20
|
run "git clone --depth 1 #{wordpress_git_url} #{shared_path}/wordpress"
|
19
|
-
run "cd #{shared_path}/wordpress && git fetch --tags && git checkout #{wordpress_version}"
|
21
|
+
run "cd #{shared_path}/wordpress && git fetch --tags && git reset --hard HEAD && git checkout #{wordpress_version}"
|
20
22
|
end
|
21
23
|
|
22
24
|
desc "Sets up shared wp-config.php"
|
data/lib/wp-config.rb
CHANGED
data/lib/wp_capistrano/deploy.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 1
|
9
|
+
version: 0.3.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- The Dextrous Web
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date:
|
17
|
+
date: 2011-04-11 00:00:00 -04:00
|
18
18
|
default_executable: wpcapify
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -27,16 +27,18 @@ extensions: []
|
|
27
27
|
extra_rdoc_files:
|
28
28
|
- README.rdoc
|
29
29
|
files:
|
30
|
-
- .gitignore
|
31
30
|
- LICENCE
|
32
31
|
- README.rdoc
|
33
32
|
- Rakefile
|
34
33
|
- VERSION
|
35
34
|
- bin/wpcapify
|
35
|
+
- lib/manifest-yml.rb
|
36
36
|
- lib/wp-capistrano.rb
|
37
37
|
- lib/wp-capistrano/deploy.rb
|
38
38
|
- lib/wp-capistrano/feature/cforms.rb
|
39
|
+
- lib/wp-capistrano/feature/compass.rb
|
39
40
|
- lib/wp-capistrano/feature/htaccess.rb
|
41
|
+
- lib/wp-capistrano/feature/makefile-manifest.rb
|
40
42
|
- lib/wp-capistrano/feature/plugin-install.rb
|
41
43
|
- lib/wp-capistrano/feature/sass.rb
|
42
44
|
- lib/wp-capistrano/feature/shared-dirs.rb
|
@@ -50,11 +52,12 @@ homepage: http://github.com/dxw/wp-capistrano
|
|
50
52
|
licenses: []
|
51
53
|
|
52
54
|
post_install_message:
|
53
|
-
rdoc_options:
|
54
|
-
|
55
|
+
rdoc_options: []
|
56
|
+
|
55
57
|
require_paths:
|
56
58
|
- lib
|
57
59
|
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
58
61
|
requirements:
|
59
62
|
- - ">="
|
60
63
|
- !ruby/object:Gem::Version
|
@@ -62,6 +65,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
62
65
|
- 0
|
63
66
|
version: "0"
|
64
67
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
65
69
|
requirements:
|
66
70
|
- - ">="
|
67
71
|
- !ruby/object:Gem::Version
|
@@ -71,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
75
|
requirements: []
|
72
76
|
|
73
77
|
rubyforge_project:
|
74
|
-
rubygems_version: 1.3.
|
78
|
+
rubygems_version: 1.3.7
|
75
79
|
signing_key:
|
76
80
|
specification_version: 3
|
77
81
|
summary: Capistrano receipe for WordPress
|
data/.gitignore
DELETED