wordmove 1.0.0 → 1.0.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.mdown +1 -2
- data/features/generator.feature +3 -3
- data/lib/wordmove/assets/dump.php.erb +4 -4
- data/lib/wordmove/assets/import.php.erb +2 -2
- data/lib/wordmove/deployer.rb +4 -4
- data/lib/wordmove/deployer/base.rb +2 -2
- data/lib/wordmove/generators/Movefile +2 -2
- data/lib/wordmove/version.rb +1 -1
- metadata +2 -3
- data/lib/wordmove/hosts/remote_host.rb +0 -137
data/README.mdown
CHANGED
@@ -20,8 +20,7 @@ Beware!
|
|
20
20
|
|
21
21
|
From version 1.0 we have decided to change wordmove flags' behaviour: they used to tell
|
22
22
|
wordmove which options to **skip**, now they tell instead which options to **include**.
|
23
|
-
In the Movefile, we have also changed
|
24
|
-
just "user".
|
23
|
+
In the Movefile, we have also changed all "username" fields to be just "user".
|
25
24
|
|
26
25
|
So please, be very careful when upgrading :heart:
|
27
26
|
|
data/features/generator.feature
CHANGED
@@ -13,18 +13,18 @@ Feature: Generating Movefile
|
|
13
13
|
vhost: "http://vhost.local"
|
14
14
|
wordpress_path: "~/dev/sites/your_site"
|
15
15
|
database:
|
16
|
-
|
16
|
+
user: "user"
|
17
17
|
password: "password"
|
18
18
|
host: "host"
|
19
19
|
remote:
|
20
20
|
vhost: "http://remote.com"
|
21
21
|
wordpress_path: "/var/www/your_site"
|
22
22
|
database:
|
23
|
-
|
23
|
+
user: "user"
|
24
24
|
password: "password"
|
25
25
|
host: "host"
|
26
26
|
ssh:
|
27
|
-
|
27
|
+
user: "user"
|
28
28
|
password: "password"
|
29
29
|
host: "host"
|
30
30
|
"""
|
@@ -153,8 +153,8 @@ class MySQLDump
|
|
153
153
|
}
|
154
154
|
}
|
155
155
|
|
156
|
-
function get_connection($db_host, $
|
157
|
-
$db_connection = new mysqli($db_host, $
|
156
|
+
function get_connection($db_host, $db_user, $db_password, $db_name, $error = NULL) {
|
157
|
+
$db_connection = new mysqli($db_host, $db_user, $db_password);
|
158
158
|
if (!$db_connection || !$db_connection->select_db($db_name)) {
|
159
159
|
if ($db_connection) {
|
160
160
|
$error = mysqli_connect_error();
|
@@ -167,7 +167,7 @@ function get_connection($db_host, $db_username, $db_password, $db_name, $error =
|
|
167
167
|
}
|
168
168
|
|
169
169
|
$db_host = '<%= escape_php db[:host] %>';
|
170
|
-
$
|
170
|
+
$db_user = '<%= escape_php db[:user] %>';
|
171
171
|
$db_password = '<%= escape_php db[:password] %>';
|
172
172
|
$db_name = '<%= escape_php_literal db[:name] %>';
|
173
173
|
$shared_key = '<%= password %>';
|
@@ -175,7 +175,7 @@ $shared_key = '<%= password %>';
|
|
175
175
|
$mysql_error = '';
|
176
176
|
|
177
177
|
if ($_GET['shared_key'] == $shared_key) {
|
178
|
-
$connection = get_connection($db_host, $
|
178
|
+
$connection = get_connection($db_host, $db_user, $db_password, $db_name, &$mysql_error);
|
179
179
|
$dump = new MySQLDump($connection);
|
180
180
|
$dump->send('dump.mysql');
|
181
181
|
}
|
@@ -10,7 +10,7 @@ if ($_GET['shared_key'] != $shared_key) {
|
|
10
10
|
// Database configuration
|
11
11
|
|
12
12
|
$db_server = '<%= escape_php db[:host] %>';
|
13
|
-
$
|
13
|
+
$db_user = '<%= escape_php db[:user] %>';
|
14
14
|
$db_password = '<%= escape_php db[:password] %>';
|
15
15
|
$db_name = '<%= escape_php db[:name] %>';
|
16
16
|
|
@@ -324,7 +324,7 @@ if (!$error && isset($_REQUEST["delete"]) && $_REQUEST["delete"]!=basename($_SER
|
|
324
324
|
// Connect to the database, set charset and execute pre-queries
|
325
325
|
|
326
326
|
if (!$error && !TESTMODE)
|
327
|
-
{ $dbconnection = @mysql_connect($db_server,$
|
327
|
+
{ $dbconnection = @mysql_connect($db_server,$db_user,$db_password);
|
328
328
|
if ($dbconnection)
|
329
329
|
$db = mysql_select_db($db_name);
|
330
330
|
if (!$dbconnection || !$db)
|
data/lib/wordmove/deployer.rb
CHANGED
@@ -61,7 +61,7 @@ module Wordmove
|
|
61
61
|
remote_mysql_dump_path = remote_wpcontent_path("database_dump.sql")
|
62
62
|
|
63
63
|
locally do |host|
|
64
|
-
host.run "mysqldump", "--host=#{config.local.database.host}", "--user=#{config.local.database.
|
64
|
+
host.run "mysqldump", "--host=#{config.local.database.host}", "--user=#{config.local.database.user}", "--password=#{config.local.database.password}", config.local.database.name, :stdout => local_mysql_dump_path
|
65
65
|
if options.adapt_sql
|
66
66
|
Wordmove::SqlMover.new(local_mysql_dump_path, config.local, config.remote).move!
|
67
67
|
else
|
@@ -73,7 +73,7 @@ module Wordmove
|
|
73
73
|
|
74
74
|
remotely do |host|
|
75
75
|
host.download_file local_mysql_dump_path, remote_mysql_dump_path
|
76
|
-
host.run "mysql", "--user=#{config.remote.database.
|
76
|
+
host.run "mysql", "--user=#{config.remote.database.user}", "--password=#{config.remote.database.password}", "--host=#{config.remote.database.host}", "--database=#{config.remote.database.name}", :stdin => remote_mysql_dump_path
|
77
77
|
host.run "rm", remote_mysql_dump_path
|
78
78
|
end
|
79
79
|
|
@@ -88,7 +88,7 @@ module Wordmove
|
|
88
88
|
remote_mysql_dump_path = remote_wpcontent_path("database_dump.sql")
|
89
89
|
|
90
90
|
remotely do |host|
|
91
|
-
host.run "mysqldump", "--host=#{config.remote.database.host}", "--user=#{config.remote.database.
|
91
|
+
host.run "mysqldump", "--host=#{config.remote.database.host}", "--user=#{config.remote.database.user}", "--password=#{config.remote.database.password}", config.remote.database.name, :stdout => remote_mysql_dump_path
|
92
92
|
host.upload_file remote_mysql_dump_path, local_mysql_dump_path
|
93
93
|
end
|
94
94
|
|
@@ -100,7 +100,7 @@ module Wordmove
|
|
100
100
|
file.write "UPDATE #{options_table} SET option_value=\"#{config.local.vhost}\" WHERE option_name=\"siteurl\" OR option_name=\"home\";\n"
|
101
101
|
end
|
102
102
|
end
|
103
|
-
host.run "mysql", "--user=#{config.local.database.
|
103
|
+
host.run "mysql", "--user=#{config.local.database.user}", "--password=#{config.local.database.password}", "--host=#{config.local.database.host}", "--database=#{config.local.database.name}", :stdin => local_mysql_dump_path
|
104
104
|
host.run "rm", local_mysql_dump_path
|
105
105
|
end
|
106
106
|
|
@@ -109,7 +109,7 @@ module Wordmove
|
|
109
109
|
def mysql_dump_command(options, save_to_path)
|
110
110
|
arguments = [ "mysqldump" ]
|
111
111
|
arguments << "--host=#{options[:host]}" if options[:host].present?
|
112
|
-
arguments << "--user=#{options[:
|
112
|
+
arguments << "--user=#{options[:user]}" if options[:user].present?
|
113
113
|
arguments << "--password=#{options[:password]}" if options[:password].present?
|
114
114
|
arguments << "--default-character-set=#{options[:charset]}" if options[:charset].present?
|
115
115
|
arguments << options[:name]
|
@@ -119,7 +119,7 @@ module Wordmove
|
|
119
119
|
def mysql_import_command(dump_path, options)
|
120
120
|
arguments = [ "mysql" ]
|
121
121
|
arguments << "--host=#{options[:host]}" if options[:host].present?
|
122
|
-
arguments << "--user=#{options[:
|
122
|
+
arguments << "--user=#{options[:user]}" if options[:user].present?
|
123
123
|
arguments << "--password=#{options[:password]}" if options[:password].present?
|
124
124
|
arguments << "--database=#{options[:name]}"
|
125
125
|
Escape.shell_command(arguments) + " < #{dump_path}"
|
@@ -3,7 +3,7 @@ local:
|
|
3
3
|
wordpress_path: "~/dev/sites/your_site"
|
4
4
|
database:
|
5
5
|
name: "database_name"
|
6
|
-
|
6
|
+
user: "user"
|
7
7
|
password: "password"
|
8
8
|
host: "127.0.0.1"
|
9
9
|
remote:
|
@@ -11,7 +11,7 @@ remote:
|
|
11
11
|
wordpress_path: "/var/www/your_site"
|
12
12
|
database:
|
13
13
|
name: "database_name"
|
14
|
-
|
14
|
+
user: "user"
|
15
15
|
password: "password"
|
16
16
|
host: "host"
|
17
17
|
ssh: # also ftp is allowed
|
data/lib/wordmove/version.rb
CHANGED
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.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colored
|
@@ -186,7 +186,6 @@ files:
|
|
186
186
|
- lib/wordmove/deployer/ssh.rb
|
187
187
|
- lib/wordmove/generators/Movefile
|
188
188
|
- lib/wordmove/generators/movefile.rb
|
189
|
-
- lib/wordmove/hosts/remote_host.rb
|
190
189
|
- lib/wordmove/logger.rb
|
191
190
|
- lib/wordmove/sql_mover.rb
|
192
191
|
- lib/wordmove/version.rb
|
@@ -1,137 +0,0 @@
|
|
1
|
-
require 'net/ssh'
|
2
|
-
require 'net/scp'
|
3
|
-
require 'net/ssh/gateway'
|
4
|
-
|
5
|
-
module Wordmove
|
6
|
-
class RemoteHost < LocalHost
|
7
|
-
|
8
|
-
alias :locally_run :run
|
9
|
-
|
10
|
-
attr_reader :session
|
11
|
-
|
12
|
-
def initialize(options = {})
|
13
|
-
super
|
14
|
-
end
|
15
|
-
|
16
|
-
def session
|
17
|
-
if options.ssh.nil?
|
18
|
-
raise Thor::Error, "No SSH credentials provided on Movefile!"
|
19
|
-
end
|
20
|
-
|
21
|
-
ssh_extras = {}
|
22
|
-
[ :port, :password ].each do |p|
|
23
|
-
ssh_extras.merge!( { p => options.ssh[p] } ) if options.ssh[p]
|
24
|
-
end
|
25
|
-
|
26
|
-
if options.ssh.gateway.nil?
|
27
|
-
logger.verbose "Connecting to #{options.ssh.host}..." unless @session.present?
|
28
|
-
@session ||= Net::SSH.start(options.ssh.host, options.ssh.username, ssh_extras)
|
29
|
-
else
|
30
|
-
logger.verbose "Connecting to #{options.ssh.host} through the gateway..." unless @session.present?
|
31
|
-
@session ||= gateway.ssh(options.ssh.host, options.ssh.username, ssh_extras)
|
32
|
-
end
|
33
|
-
|
34
|
-
@session
|
35
|
-
end
|
36
|
-
|
37
|
-
def gateway
|
38
|
-
if options.ssh.gateway.nil?
|
39
|
-
raise Thor::Error, "No SSH credentials provided on Movefile!"
|
40
|
-
end
|
41
|
-
|
42
|
-
ssh_extras = {}
|
43
|
-
[ :port, :password ].each do |p|
|
44
|
-
ssh_extras.merge!( { p => options.ssh.gateway[p] } ) if options.ssh.gateway[p]
|
45
|
-
end
|
46
|
-
|
47
|
-
logger.verbose "Connecting to #{options.ssh.gateway.host}..." unless @gateway.present?
|
48
|
-
@gateway ||= Net::SSH::Gateway.new(options.ssh.gateway.host, options.ssh.gateway.username, ssh_extras )
|
49
|
-
|
50
|
-
@gateway
|
51
|
-
end
|
52
|
-
|
53
|
-
def close
|
54
|
-
session.close
|
55
|
-
if options.ssh.gateway.present?
|
56
|
-
gateway.close(session.transport.port)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def upload_file(source_file, destination_file)
|
61
|
-
logger.verbose "Copying remote #{source_file} to #{destination_file}..."
|
62
|
-
session.scp.download! source_file, destination_file
|
63
|
-
end
|
64
|
-
|
65
|
-
def download_file(source_file, destination_file)
|
66
|
-
logger.verbose "Copying local #{source_file} to #{destination_file}..."
|
67
|
-
session.scp.upload! source_file, destination_file
|
68
|
-
end
|
69
|
-
|
70
|
-
def download_dir(source_dir, destination_dir)
|
71
|
-
destination_dir = ":#{destination_dir}"
|
72
|
-
destination_dir = "#{options.ssh.username}@#{destination_dir}" if options.ssh.username
|
73
|
-
rsync "#{source_dir}/", destination_dir
|
74
|
-
end
|
75
|
-
|
76
|
-
def upload_dir(source_dir, destination_dir)
|
77
|
-
source_dir = ":#{source_dir}/"
|
78
|
-
rsync source_dir, destination_dir
|
79
|
-
end
|
80
|
-
|
81
|
-
def run(*args)
|
82
|
-
command = shell_command(*args)
|
83
|
-
logger.verbose "Executing remotely #{command}"
|
84
|
-
session.exec!(command)
|
85
|
-
end
|
86
|
-
|
87
|
-
private
|
88
|
-
|
89
|
-
def get_host_for_options(options)
|
90
|
-
if options.username
|
91
|
-
"#{options.username}@#{options.host}"
|
92
|
-
else
|
93
|
-
options.host
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
def rsync(source_dir, destination_dir)
|
98
|
-
|
99
|
-
exclude_file = Tempfile.new('exclude')
|
100
|
-
exclude_file.write(options.exclude.join("\n"))
|
101
|
-
exclude_file.close
|
102
|
-
|
103
|
-
arguments = [ "-azLKO" ]
|
104
|
-
|
105
|
-
if options.ssh
|
106
|
-
remote_shell_arguments = []
|
107
|
-
|
108
|
-
if options.ssh.gateway
|
109
|
-
remote_shell_arguments.push("ssh", get_host_for_options(options.ssh.gateway))
|
110
|
-
|
111
|
-
if options.ssh.gateway.port
|
112
|
-
remote_shell_arguments.push("-p", options.ssh.gateway.port)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
remote_shell_arguments.push("ssh")
|
117
|
-
|
118
|
-
if options.ssh.port
|
119
|
-
remote_shell_arguments.push("-p", options.ssh.port)
|
120
|
-
end
|
121
|
-
|
122
|
-
if options.ssh.password
|
123
|
-
remote_shell_arguments.unshift("sshpass", "-p", options.ssh.password)
|
124
|
-
end
|
125
|
-
|
126
|
-
remote_shell_arguments.push(get_host_for_options(options.ssh))
|
127
|
-
|
128
|
-
arguments.push("-e", remote_shell_arguments.join(" "))
|
129
|
-
end
|
130
|
-
|
131
|
-
arguments.push("--exclude-from=#{exclude_file.path}", "--delete", source_dir, destination_dir)
|
132
|
-
locally_run "rsync", *arguments
|
133
|
-
|
134
|
-
exclude_file.unlink
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|