wordmove 1.0.6 → 1.0.7
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.mdown +5 -0
- data/lib/wordmove/cli.rb +4 -2
- data/lib/wordmove/deployer/base.rb +20 -13
- data/lib/wordmove/deployer/ftp.rb +10 -10
- data/lib/wordmove/deployer/ssh.rb +7 -7
- data/lib/wordmove/generators/Movefile +10 -0
- data/lib/wordmove/version.rb +1 -1
- data/lib/wordmove/wordpress_directory.rb +36 -0
- metadata +2 -11
- data/features/generator.feature +0 -30
- data/features/pull.feature +0 -0
- data/features/push.feature +0 -0
- data/features/step_definitions/aruba_ext_steps.rb +0 -3
- data/features/support/setup.rb +0 -2
data/README.mdown
CHANGED
@@ -51,6 +51,11 @@ local:
|
|
51
51
|
staging:
|
52
52
|
vhost: "http://remote.com"
|
53
53
|
wordpress_path: "/var/www/your_site"
|
54
|
+
# paths: # you can customize wordpress paths
|
55
|
+
# wp_content: "wp-content"
|
56
|
+
# uploads: "wp-content/uploads"
|
57
|
+
# plugins: "wp-content/plugins"
|
58
|
+
# languages: "wp-content/languages"
|
54
59
|
database:
|
55
60
|
name: "database_name"
|
56
61
|
user: "user"
|
data/lib/wordmove/cli.rb
CHANGED
@@ -15,6 +15,7 @@ module Wordmove
|
|
15
15
|
method_option :uploads, :aliases => "-u", :type => :boolean
|
16
16
|
method_option :themes, :aliases => "-t", :type => :boolean
|
17
17
|
method_option :plugins, :aliases => "-p", :type => :boolean
|
18
|
+
method_option :languages, :aliases => "-l", :type => :boolean
|
18
19
|
method_option :verbose, :aliases => "-v", :type => :boolean
|
19
20
|
method_option :simulate, :aliases => "-s", :type => :boolean
|
20
21
|
method_option :no_adapt, :type => :boolean
|
@@ -22,7 +23,7 @@ module Wordmove
|
|
22
23
|
method_option :config, :aliases => "-c"
|
23
24
|
def pull
|
24
25
|
deployer = Wordmove::Deployer::Base.deployer_for(options)
|
25
|
-
%w(db uploads themes plugins).map(&:to_sym).each do |task|
|
26
|
+
%w(db uploads themes plugins languages).map(&:to_sym).each do |task|
|
26
27
|
if options[task]
|
27
28
|
deployer.send("pull_#{task}")
|
28
29
|
end
|
@@ -34,6 +35,7 @@ module Wordmove
|
|
34
35
|
method_option :db, :aliases => "-d", :type => :boolean
|
35
36
|
method_option :themes, :aliases => "-t", :type => :boolean
|
36
37
|
method_option :plugins, :aliases => "-p", :type => :boolean
|
38
|
+
method_option :languages, :aliases => "-l", :type => :boolean
|
37
39
|
method_option :verbose, :aliases => "-v", :type => :boolean
|
38
40
|
method_option :simulate, :aliases => "-s", :type => :boolean
|
39
41
|
method_option :no_adapt, :type => :boolean
|
@@ -41,7 +43,7 @@ module Wordmove
|
|
41
43
|
method_option :config, :aliases => "-c"
|
42
44
|
def push
|
43
45
|
deployer = Wordmove::Deployer::Base.deployer_for(options)
|
44
|
-
%w(db uploads themes plugins).map(&:to_sym).each do |task|
|
46
|
+
%w(db uploads themes plugins languages).map(&:to_sym).each do |task|
|
45
47
|
if options[task]
|
46
48
|
deployer.send("push_#{task}")
|
47
49
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'active_support/core_ext'
|
2
2
|
require 'wordmove/logger'
|
3
|
+
require 'wordmove/wordpress_directory'
|
3
4
|
require 'wordmove/sql_mover'
|
4
5
|
require 'escape'
|
5
6
|
|
@@ -60,15 +61,19 @@ module Wordmove
|
|
60
61
|
def remote_get_directory(directory); end
|
61
62
|
def remote_put_directory(directory); end
|
62
63
|
|
63
|
-
%w(uploads themes plugins).each do |task|
|
64
|
+
%w(uploads themes plugins languages).each do |task|
|
64
65
|
define_method "push_#{task}" do
|
65
66
|
logger.task "Pushing #{task.titleize}"
|
66
|
-
|
67
|
+
local_path = send("local_#{task}_dir").path
|
68
|
+
remote_path = send("remote_#{task}_dir").path
|
69
|
+
remote_put_directory(local_path, remote_path, paths_to_exclude)
|
67
70
|
end
|
68
71
|
|
69
72
|
define_method "pull_#{task}" do
|
70
73
|
logger.task "Pulling #{task.titleize}"
|
71
|
-
|
74
|
+
local_path = send("local_#{task}_dir").path
|
75
|
+
remote_path = send("remote_#{task}_dir").path
|
76
|
+
remote_get_directory(remote_path, local_path, paths_to_exclude)
|
72
77
|
end
|
73
78
|
end
|
74
79
|
|
@@ -99,16 +104,18 @@ module Wordmove
|
|
99
104
|
options[:simulate]
|
100
105
|
end
|
101
106
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
107
|
+
[ WordpressDirectory::PATH::WP_CONTENT,
|
108
|
+
WordpressDirectory::PATH::PLUGINS,
|
109
|
+
WordpressDirectory::PATH::THEMES,
|
110
|
+
WordpressDirectory::PATH::UPLOADS,
|
111
|
+
WordpressDirectory::PATH::LANGUAGES
|
112
|
+
].each do |type|
|
113
|
+
[ :remote, :local ].each do |location|
|
114
|
+
define_method "#{location}_#{type}_dir" do
|
115
|
+
options = send("#{location}_options")
|
116
|
+
WordpressDirectory.new(type, options)
|
117
|
+
end
|
118
|
+
end
|
112
119
|
end
|
113
120
|
|
114
121
|
def adapt_sql(save_to_path, local, remote)
|
@@ -17,9 +17,9 @@ module Wordmove
|
|
17
17
|
def push_db
|
18
18
|
super
|
19
19
|
|
20
|
-
local_dump_path =
|
21
|
-
remote_dump_path =
|
22
|
-
local_backup_path =
|
20
|
+
local_dump_path = local_wp_content_dir.path("dump.sql")
|
21
|
+
remote_dump_path = remote_wp_content_dir.path("dump.sql")
|
22
|
+
local_backup_path = local_wp_content_dir.path("remote-backup-#{Time.now.to_i}.sql")
|
23
23
|
|
24
24
|
download_remote_db(local_backup_path)
|
25
25
|
save_local_db(local_dump_path)
|
@@ -39,8 +39,8 @@ module Wordmove
|
|
39
39
|
|
40
40
|
def pull_db
|
41
41
|
super
|
42
|
-
local_dump_path =
|
43
|
-
local_backup_path =
|
42
|
+
local_dump_path = local_wp_content_dir.path("dump.sql")
|
43
|
+
local_backup_path = local_wp_content_dir.path("local-backup-#{Time.now.to_i}.sql")
|
44
44
|
|
45
45
|
save_local_db(local_backup_path)
|
46
46
|
download_remote_db(local_dump_path)
|
@@ -93,7 +93,7 @@ module Wordmove
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def download_remote_db(local_dump_path)
|
96
|
-
remote_dump_script =
|
96
|
+
remote_dump_script = remote_wp_content_dir.path("dump.php")
|
97
97
|
# generate a secure one-time password
|
98
98
|
one_time_password = SecureRandom.hex(40)
|
99
99
|
# generate dump script
|
@@ -101,15 +101,15 @@ module Wordmove
|
|
101
101
|
# upload the dump script
|
102
102
|
remote_put(dump_script, remote_dump_script)
|
103
103
|
# download the resulting dump (using the password)
|
104
|
-
dump_url = "#{
|
104
|
+
dump_url = "#{remote_wp_content_dir.url("dump.php")}?shared_key=#{one_time_password}"
|
105
105
|
download(dump_url, local_dump_path)
|
106
106
|
# remove it remotely
|
107
107
|
remote_delete(remote_dump_script)
|
108
108
|
end
|
109
109
|
|
110
110
|
def import_remote_dump
|
111
|
-
temp_path =
|
112
|
-
remote_import_script_path =
|
111
|
+
temp_path = local_wp_content_dir.path("temp.txt")
|
112
|
+
remote_import_script_path = remote_wp_content_dir.path("import.php")
|
113
113
|
# generate a secure one-time password
|
114
114
|
one_time_password = SecureRandom.hex(40)
|
115
115
|
# generate import script
|
@@ -117,7 +117,7 @@ module Wordmove
|
|
117
117
|
# upload import script
|
118
118
|
remote_put(import_script, remote_import_script_path)
|
119
119
|
# run import script
|
120
|
-
import_url = "#{
|
120
|
+
import_url = "#{remote_wp_content_dir.url("import.php")}?shared_key=#{one_time_password}&start=1&foffset=0&totalqueries=0&fn=dump.sql"
|
121
121
|
download(import_url, temp_path)
|
122
122
|
run "rm #{temp_path}"
|
123
123
|
# remove script remotely
|
@@ -14,8 +14,8 @@ module Wordmove
|
|
14
14
|
def push_db
|
15
15
|
super
|
16
16
|
|
17
|
-
local_dump_path =
|
18
|
-
local_backup_path =
|
17
|
+
local_dump_path = local_wp_content_dir.path("dump.sql")
|
18
|
+
local_backup_path = local_wp_content_dir.path("remote-backup-#{Time.now.to_i}.sql")
|
19
19
|
download_remote_db(local_backup_path)
|
20
20
|
|
21
21
|
save_local_db(local_dump_path)
|
@@ -27,9 +27,9 @@ module Wordmove
|
|
27
27
|
def pull_db
|
28
28
|
super
|
29
29
|
|
30
|
-
local_dump_path =
|
31
|
-
remote_dump_path =
|
32
|
-
local_backup_path =
|
30
|
+
local_dump_path = local_wp_content_dir.path("dump.sql")
|
31
|
+
remote_dump_path = remote_wp_content_dir.path("dump.sql")
|
32
|
+
local_backup_path = local_wp_content_dir.path("local-backup-#{Time.now.to_i}.sql")
|
33
33
|
save_local_db(local_backup_path)
|
34
34
|
|
35
35
|
download_remote_db(local_dump_path)
|
@@ -58,7 +58,7 @@ module Wordmove
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def download_remote_db(local_dump_path)
|
61
|
-
remote_dump_path =
|
61
|
+
remote_dump_path = remote_wp_content_dir.path("dump.sql")
|
62
62
|
# dump remote db into file
|
63
63
|
remote_run mysql_dump_command(remote_options[:database], remote_dump_path)
|
64
64
|
# download remote dump
|
@@ -67,7 +67,7 @@ module Wordmove
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def import_remote_dump(local_dump_path)
|
70
|
-
remote_dump_path =
|
70
|
+
remote_dump_path = remote_wp_content_dir.path("dump.sql")
|
71
71
|
remote_put(local_dump_path, remote_dump_path)
|
72
72
|
remote_run mysql_import_command(remote_dump_path, remote_options[:database])
|
73
73
|
remote_delete(remote_dump_path)
|
@@ -9,6 +9,16 @@ local:
|
|
9
9
|
staging:
|
10
10
|
vhost: "http://remote.com"
|
11
11
|
wordpress_path: "/var/www/your_site"
|
12
|
+
# paths: # you can customize wordpress internal paths
|
13
|
+
# wp_content: "wp-content"
|
14
|
+
# uploads: "wp-content/uploads"
|
15
|
+
# plugins: "wp-content/plugins"
|
16
|
+
# languages: "wp-content/languages"
|
17
|
+
exclude:
|
18
|
+
- ".sass-cache"
|
19
|
+
- ".git"
|
20
|
+
- "tmp/*"
|
21
|
+
- "wp-content/*.sql"
|
12
22
|
database:
|
13
23
|
name: "database_name"
|
14
24
|
user: "user"
|
data/lib/wordmove/version.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
class WordpressDirectory < Struct.new(:type, :options)
|
2
|
+
|
3
|
+
module PATH
|
4
|
+
WP_CONTENT = :wp_content
|
5
|
+
PLUGINS = :plugins
|
6
|
+
THEMES = :themes
|
7
|
+
UPLOADS = :uploads
|
8
|
+
LANGUAGES = :languages
|
9
|
+
end
|
10
|
+
|
11
|
+
DEFAULT_PATHS = {
|
12
|
+
PATH::WP_CONTENT => 'wp-content',
|
13
|
+
PATH::PLUGINS => 'wp-content/plugins',
|
14
|
+
PATH::THEMES => 'wp-content/themes',
|
15
|
+
PATH::UPLOADS => 'wp-content/uploads',
|
16
|
+
PATH::LANGUAGES => 'wp-content/languages'
|
17
|
+
}
|
18
|
+
|
19
|
+
def path(*args)
|
20
|
+
File.join(options[:wordpress_path], relative_path(*args))
|
21
|
+
end
|
22
|
+
|
23
|
+
def url(*args)
|
24
|
+
File.join(options[:vhost], relative_path(*args))
|
25
|
+
end
|
26
|
+
|
27
|
+
def relative_path(*args)
|
28
|
+
path = if options[:paths] && options[:paths][type]
|
29
|
+
options[:paths][type]
|
30
|
+
else
|
31
|
+
DEFAULT_PATHS[type]
|
32
|
+
end
|
33
|
+
File.join(path, *args)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wordmove
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -171,11 +171,6 @@ files:
|
|
171
171
|
- README.mdown
|
172
172
|
- Rakefile
|
173
173
|
- bin/wordmove
|
174
|
-
- features/generator.feature
|
175
|
-
- features/pull.feature
|
176
|
-
- features/push.feature
|
177
|
-
- features/step_definitions/aruba_ext_steps.rb
|
178
|
-
- features/support/setup.rb
|
179
174
|
- lib/wordmove.rb
|
180
175
|
- lib/wordmove/assets/dump.php.erb
|
181
176
|
- lib/wordmove/assets/import.php.erb
|
@@ -188,6 +183,7 @@ files:
|
|
188
183
|
- lib/wordmove/logger.rb
|
189
184
|
- lib/wordmove/sql_mover.rb
|
190
185
|
- lib/wordmove/version.rb
|
186
|
+
- lib/wordmove/wordpress_directory.rb
|
191
187
|
- pkg/wordmove-0.0.1.gem
|
192
188
|
- pkg/wordmove-0.0.2.gem
|
193
189
|
- spec/fixtures/Movefile
|
@@ -221,11 +217,6 @@ signing_key:
|
|
221
217
|
specification_version: 3
|
222
218
|
summary: Capistrano for Wordpress
|
223
219
|
test_files:
|
224
|
-
- features/generator.feature
|
225
|
-
- features/pull.feature
|
226
|
-
- features/push.feature
|
227
|
-
- features/step_definitions/aruba_ext_steps.rb
|
228
|
-
- features/support/setup.rb
|
229
220
|
- spec/fixtures/Movefile
|
230
221
|
- spec/spec_helper.rb
|
231
222
|
- spec/sql_mover_spec.rb
|
data/features/generator.feature
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
Feature: Generating Movefile
|
2
|
-
In order to configure Wordmove
|
3
|
-
As a WP developer
|
4
|
-
I want Wordmove to generate me a Wordmove skeleton file
|
5
|
-
|
6
|
-
Scenario: Wordmove creation
|
7
|
-
When I run "wordmove init"
|
8
|
-
Then the following files should exist:
|
9
|
-
| Movefile |
|
10
|
-
Then the file "Movefile" should contain:
|
11
|
-
"""
|
12
|
-
local:
|
13
|
-
vhost: "http://vhost.local"
|
14
|
-
wordpress_path: "~/dev/sites/your_site"
|
15
|
-
database:
|
16
|
-
user: "user"
|
17
|
-
password: "password"
|
18
|
-
host: "host"
|
19
|
-
remote:
|
20
|
-
vhost: "http://remote.com"
|
21
|
-
wordpress_path: "/var/www/your_site"
|
22
|
-
database:
|
23
|
-
user: "user"
|
24
|
-
password: "password"
|
25
|
-
host: "host"
|
26
|
-
ssh:
|
27
|
-
user: "user"
|
28
|
-
password: "password"
|
29
|
-
host: "host"
|
30
|
-
"""
|
data/features/pull.feature
DELETED
File without changes
|
data/features/push.feature
DELETED
File without changes
|
data/features/support/setup.rb
DELETED