wordmove 6.0.0.alpha.2 → 6.0.0.alpha.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/lib/wordmove/actions/adapt_local_db.rb +89 -50
- data/lib/wordmove/actions/adapt_remote_db.rb +68 -30
- data/lib/wordmove/actions/backup_local_db.rb +29 -17
- data/lib/wordmove/actions/ftp/backup_remote_db.rb +0 -2
- data/lib/wordmove/actions/ftp/cleanup_after_adapt.rb +0 -2
- data/lib/wordmove/actions/ftp/download_remote_db.rb +0 -2
- data/lib/wordmove/actions/ftp/put_and_import_dump_remotely.rb +0 -2
- data/lib/wordmove/actions/setup_context_for_db.rb +2 -9
- data/lib/wordmove/actions/ssh/backup_remote_db.rb +0 -2
- data/lib/wordmove/actions/ssh/cleanup_after_adapt.rb +1 -3
- data/lib/wordmove/actions/ssh/download_remote_db.rb +6 -3
- data/lib/wordmove/actions/ssh/put_and_import_dump_remotely.rb +0 -2
- data/lib/wordmove/assets/wordmove_schema_local.yml +1 -3
- data/lib/wordmove/cli.rb +16 -23
- data/lib/wordmove/doctor/movefile.rb +1 -1
- data/lib/wordmove/doctor/mysql.rb +1 -1
- data/lib/wordmove/doctor/wpcli.rb +1 -1
- data/lib/wordmove/environments_list.rb +3 -3
- data/lib/wordmove/generators/movefile.rb +4 -5
- data/lib/wordmove/generators/movefile.yml +8 -6
- data/lib/wordmove/movefile.rb +25 -5
- data/lib/wordmove/organizers/ftp/pull.rb +18 -15
- data/lib/wordmove/organizers/ftp/push.rb +19 -16
- data/lib/wordmove/organizers/ssh/pull.rb +18 -15
- data/lib/wordmove/organizers/ssh/push.rb +19 -16
- data/lib/wordmove/version.rb +1 -1
- data/lib/wordmove/wpcli.rb +32 -32
- data/lib/wordmove.rb +4 -4
- data/wordmove.gemspec +2 -2
- metadata +6 -7
- data/lib/wordmove/generators/movefile_adapter.rb +0 -89
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e1645bb92c5ec1ef2f74eb99eb0ad62eb42648af628104c23c6286e3bf1505b
|
4
|
+
data.tar.gz: 5b44c223013a491f2fbca11da41d063597363f8a28b07cf14f556d48b79c4aac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1039454681f0c345713c3cb3777429197deac2a50f1f2bddf781fe2145e2ba099365a5600edad49272d680ddaa1b8f4be3a82d7a0f9f9929dbf3eb38c28f5999
|
7
|
+
data.tar.gz: 4215958770c983f0d156162e943eaefe06d55c7e4a9cc1d085e7ec87e7130cca7a43daf9881602350b01c65a5f576f38d1c85b12522bbd6964be84beadf5f59b
|
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.1.0
|
@@ -9,7 +9,7 @@ module Wordmove
|
|
9
9
|
class AdaptLocalDb
|
10
10
|
extend ::LightService::Action
|
11
11
|
include Wordmove::Actions::Helpers
|
12
|
-
include Wordmove::
|
12
|
+
include Wordmove::WpcliHelpers
|
13
13
|
|
14
14
|
expects :local_options,
|
15
15
|
:remote_options,
|
@@ -30,8 +30,6 @@ module Wordmove
|
|
30
30
|
# @!scope class
|
31
31
|
# @return [LightService::Context] Action's context
|
32
32
|
executed do |context| # rubocop:disable Metrics/BlockLength
|
33
|
-
next context if context.database_task == false
|
34
|
-
|
35
33
|
context.logger.task 'Adapt local DB'
|
36
34
|
|
37
35
|
unless wp_in_path?
|
@@ -40,63 +38,104 @@ module Wordmove
|
|
40
38
|
|
41
39
|
next context if simulate?(cli_options: context.cli_options)
|
42
40
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
)
|
50
|
-
)
|
51
|
-
context.fail_and_return!(result.message) if result.failure?
|
41
|
+
context.logger.task_step true, dump_command(context)
|
42
|
+
begin
|
43
|
+
system(dump_command(context), exception: true)
|
44
|
+
rescue RuntimeError, SystemExit => e
|
45
|
+
context.fail_and_return!("Local command status reports an error: #{e.message}")
|
46
|
+
end
|
52
47
|
|
53
48
|
if context.cli_options[:no_adapt]
|
54
49
|
context.logger.warn 'Skipping DB adapt'
|
55
50
|
else
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
command: wpcli_search_replace_command(context, :vhost)
|
60
|
-
)
|
61
|
-
context.fail_and_return!(result.message) if result.failure?
|
62
|
-
|
63
|
-
result = Wordmove::Actions::RunLocalCommand.execute(
|
64
|
-
cli_options: context.cli_options,
|
65
|
-
logger: context.logger,
|
66
|
-
command: wpcli_search_replace_command(context, :wordpress_path)
|
67
|
-
)
|
68
|
-
context.fail_and_return!(result.message) if result.failure?
|
69
|
-
end
|
51
|
+
%i[vhost wordpress_path].each do |key|
|
52
|
+
command = search_replace_command(context, key)
|
53
|
+
context.logger.task_step true, command
|
70
54
|
|
71
|
-
|
72
|
-
|
55
|
+
begin
|
56
|
+
system(command, exception: true)
|
57
|
+
rescue RuntimeError, SystemExit => e
|
58
|
+
context.fail_and_return!("Local command status reports an error: #{e.message}")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
73
62
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
)
|
79
|
-
|
80
|
-
context.fail_and_return!(result.message) if result.failure?
|
63
|
+
context.logger.task_step true, dump_adapted_command(context)
|
64
|
+
begin
|
65
|
+
system(dump_adapted_command(context), exception: true)
|
66
|
+
rescue RuntimeError, SystemExit => e
|
67
|
+
context.fail_and_return!("Local command status reports an error: #{e.message}")
|
68
|
+
end
|
81
69
|
|
82
70
|
if context.photocopier.is_a? Photocopier::SSH
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
71
|
+
context.logger.task_step true, compress_command(context)
|
72
|
+
begin
|
73
|
+
system(compress_command(context), exception: true)
|
74
|
+
rescue RuntimeError, SystemExit => e
|
75
|
+
context.fail_and_return!("Local command status reports an error: #{e.message}")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context.logger.task_step true, import_original_db_command(context)
|
80
|
+
begin
|
81
|
+
system(import_original_db_command(context), exception: true)
|
82
|
+
rescue RuntimeError, SystemExit => e
|
83
|
+
context.fail_and_return!("Local command status reports an error: #{e.message}")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def self.dump_command(context)
|
88
|
+
"wp db export #{context.db_paths.local.path} --allow-root --quiet " \
|
89
|
+
"--path=#{wpcli_config_path(context)}"
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.dump_adapted_command(context)
|
93
|
+
"wp db export #{context.db_paths.local.adapted_path} --allow-root --quiet " \
|
94
|
+
"--path=#{wpcli_config_path(context)}"
|
95
|
+
end
|
96
|
+
|
97
|
+
def self.import_original_db_command(context)
|
98
|
+
"wp db import #{context.db_paths.local.path} --allow-root --quiet " \
|
99
|
+
"--path=#{wpcli_config_path(context)}"
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.compress_command(context)
|
103
|
+
command = ['nice']
|
104
|
+
command << '-n'
|
105
|
+
command << '0'
|
106
|
+
command << 'gzip'
|
107
|
+
command << '-9'
|
108
|
+
command << '-f'
|
109
|
+
command << "\"#{context.db_paths.local.adapted_path}\""
|
110
|
+
command.join(' ')
|
111
|
+
end
|
112
|
+
|
113
|
+
# Compose and returns the search-replace command. It's intended to be
|
114
|
+
# used from a +LightService::Action+
|
115
|
+
#
|
116
|
+
# @param context [LightService::Context] The context of an action
|
117
|
+
# @param config_key [:vhost, :wordpress_path] Determines what will be replaced in DB
|
118
|
+
# @return [String]
|
119
|
+
# @!scope class
|
120
|
+
def self.search_replace_command(context, config_key)
|
121
|
+
unless %i[vhost wordpress_path].include?(config_key)
|
122
|
+
raise ArgumentError, "Unexpected `config_key` #{config_key}.:vhost" \
|
123
|
+
'or :wordpress_path expected'
|
89
124
|
end
|
90
125
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
126
|
+
[
|
127
|
+
'wp search-replace',
|
128
|
+
"--path=#{wpcli_config_path(context)}",
|
129
|
+
'"\A' + context.dig(:local_options, config_key) + '\Z"', # rubocop:disable Style/StringConcatenation
|
130
|
+
'"' + context.dig(:remote_options, config_key) + '"', # rubocop:disable Style/StringConcatenation
|
131
|
+
'--regex-delimiter="|"',
|
132
|
+
'--regex',
|
133
|
+
'--precise',
|
134
|
+
'--quiet',
|
135
|
+
'--skip-columns=guid',
|
136
|
+
'--all-tables',
|
137
|
+
'--allow-root'
|
138
|
+
].join(' ')
|
100
139
|
end
|
101
140
|
end
|
102
141
|
end
|
@@ -14,7 +14,7 @@ module Wordmove
|
|
14
14
|
class AdaptRemoteDb
|
15
15
|
extend ::LightService::Action
|
16
16
|
include Wordmove::Actions::Helpers
|
17
|
-
include Wordmove::
|
17
|
+
include Wordmove::WpcliHelpers
|
18
18
|
|
19
19
|
expects :local_options,
|
20
20
|
:cli_options,
|
@@ -30,8 +30,6 @@ module Wordmove
|
|
30
30
|
# @!scope class
|
31
31
|
# @return [LightService::Context] Action's context
|
32
32
|
executed do |context| # rubocop:disable Metrics/BlockLength
|
33
|
-
next context if context.database_task == false
|
34
|
-
|
35
33
|
context.logger.task 'Adapt remote DB'
|
36
34
|
|
37
35
|
unless wp_in_path?
|
@@ -41,11 +39,12 @@ module Wordmove
|
|
41
39
|
next context if simulate?(cli_options: context.cli_options)
|
42
40
|
|
43
41
|
if File.exist?(context.db_paths.local.gzipped_path)
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
42
|
+
context.logger.task_step true, uncompress_command(context)
|
43
|
+
begin
|
44
|
+
system(uncompress_command(context), exception: true)
|
45
|
+
rescue RuntimeError, SystemExit => e
|
46
|
+
context.fail_and_return!("Local command status reports an error: #{e.message}")
|
47
|
+
end
|
49
48
|
end
|
50
49
|
|
51
50
|
unless File.exist?(context.db_paths.local.path)
|
@@ -54,37 +53,76 @@ module Wordmove
|
|
54
53
|
)
|
55
54
|
end
|
56
55
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
)
|
64
|
-
)
|
65
|
-
context.fail_and_return!(result.message) if result.failure?
|
56
|
+
context.logger.task_step true, import_db_command(context)
|
57
|
+
begin
|
58
|
+
system(import_db_command(context), exception: true)
|
59
|
+
rescue RuntimeError, SystemExit => e
|
60
|
+
context.fail_and_return!("Local command status reports an error: #{e.message}")
|
61
|
+
end
|
66
62
|
|
67
63
|
if context.cli_options[:no_adapt]
|
68
64
|
context.logger.warn 'Skipping DB adapt'
|
69
65
|
next context
|
70
66
|
end
|
71
67
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
logger: context.logger,
|
82
|
-
command: wpcli_search_replace_command(context, :wordpress_path)
|
83
|
-
)
|
84
|
-
context.fail_and_return!(result.message) if result.failure?
|
68
|
+
%i[vhost wordpress_path].each do |key|
|
69
|
+
command = search_replace_command(context, key)
|
70
|
+
context.logger.task_step true, command
|
71
|
+
begin
|
72
|
+
system(command, exception: true)
|
73
|
+
rescue RuntimeError, SystemExit => e
|
74
|
+
context.fail_and_return!("Local command status reports an error: #{e.message}")
|
75
|
+
end
|
76
|
+
end
|
85
77
|
|
86
78
|
context.logger.success 'Local DB adapted'
|
87
79
|
end
|
80
|
+
|
81
|
+
# Construct the command to deflate a compressed file as a string.
|
82
|
+
#
|
83
|
+
# @param file_path [String] The path where the file to be deflated is located
|
84
|
+
# @return [String] the command
|
85
|
+
# @!scope class
|
86
|
+
def self.uncompress_command(context)
|
87
|
+
command = ['gzip']
|
88
|
+
command << '-d'
|
89
|
+
command << '-f'
|
90
|
+
command << "\"#{context.db_paths.local.gzipped_path}\""
|
91
|
+
command.join(' ')
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.import_db_command(context)
|
95
|
+
"wp db import #{context.db_paths.local.path} --allow-root --quiet " \
|
96
|
+
"--path=#{wpcli_config_path(context)}"
|
97
|
+
end
|
98
|
+
|
99
|
+
# Compose and returns the search-replace command. It's intended to be
|
100
|
+
# used from a +LightService::Action+
|
101
|
+
#
|
102
|
+
# @param context [LightService::Context] The context of an action
|
103
|
+
# @param config_key [:vhost, :wordpress_path] Determines what will be replaced in DB
|
104
|
+
# @return [String]
|
105
|
+
# @!scope class
|
106
|
+
def self.search_replace_command(context, config_key)
|
107
|
+
unless %i[vhost wordpress_path].include?(config_key)
|
108
|
+
raise ArgumentError, "Unexpected `config_key` #{config_key}.:vhost" \
|
109
|
+
'or :wordpress_path expected'
|
110
|
+
end
|
111
|
+
|
112
|
+
[
|
113
|
+
'wp search-replace',
|
114
|
+
"--path=#{wpcli_config_path(context)}",
|
115
|
+
'"\A' + context.dig(:remote_options, config_key) + '\Z"', # rubocop:disable Style/StringConcatenation
|
116
|
+
'"' + context.dig(:local_options, config_key) + '"', # rubocop:disable Style/StringConcatenation
|
117
|
+
'--regex-delimiter="|"',
|
118
|
+
'--regex',
|
119
|
+
'--precise',
|
120
|
+
'--quiet',
|
121
|
+
'--skip-columns=guid',
|
122
|
+
'--all-tables',
|
123
|
+
'--allow-root'
|
124
|
+
].join(' ')
|
125
|
+
end
|
88
126
|
end
|
89
127
|
end
|
90
128
|
end
|
@@ -21,8 +21,6 @@ module Wordmove
|
|
21
21
|
# @!scope class
|
22
22
|
# @return [LightService::Context] Action's context
|
23
23
|
executed do |context|
|
24
|
-
next context if context.database_task == false
|
25
|
-
|
26
24
|
context.logger.task 'Backup local DB'
|
27
25
|
|
28
26
|
if simulate?(cli_options: context.cli_options)
|
@@ -32,27 +30,41 @@ module Wordmove
|
|
32
30
|
next context
|
33
31
|
end
|
34
32
|
|
35
|
-
|
36
|
-
cli_options: context.cli_options,
|
37
|
-
logger: context.logger,
|
38
|
-
command: mysql_dump_command(
|
39
|
-
env_db_options: context.local_options[:database],
|
40
|
-
save_to_path: context.db_paths.backup.local.path
|
41
|
-
)
|
42
|
-
)
|
43
|
-
context.fail_and_return!(result.message) if result.failure?
|
33
|
+
context.logger.task_step true, dump_command(context)
|
44
34
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
command
|
49
|
-
|
50
|
-
|
35
|
+
begin
|
36
|
+
system(dump_command(context), exception: true)
|
37
|
+
rescue RuntimeError, SystemExit => e
|
38
|
+
context.fail_and_return!("Local command status reports an error: #{e.message}")
|
39
|
+
end
|
40
|
+
|
41
|
+
context.logger.task_step true, compress_command(context)
|
42
|
+
|
43
|
+
begin
|
44
|
+
system(compress_command(context), exception: true)
|
45
|
+
rescue RuntimeError, SystemExit => e
|
46
|
+
context.fail_and_return!("Local command status reports an error: #{e.message}")
|
47
|
+
end
|
51
48
|
|
52
49
|
context.logger.success(
|
53
50
|
"Backup saved at #{context.db_paths.backup.local.gzipped_path}"
|
54
51
|
)
|
55
52
|
end
|
53
|
+
|
54
|
+
def self.dump_command(context)
|
55
|
+
"wp db export #{context.db_paths.backup.local.path} --allow-root --quiet"
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.compress_command(context)
|
59
|
+
command = ['nice']
|
60
|
+
command << '-n'
|
61
|
+
command << '0'
|
62
|
+
command << 'gzip'
|
63
|
+
command << '-9'
|
64
|
+
command << '-f'
|
65
|
+
command << "\"#{context.db_paths.backup.local.path}\""
|
66
|
+
command.join(' ')
|
67
|
+
end
|
56
68
|
end
|
57
69
|
end
|
58
70
|
end
|
@@ -21,8 +21,6 @@ module Wordmove
|
|
21
21
|
# @!scope class
|
22
22
|
# @return [LightService::Context] Action's context
|
23
23
|
executed do |context|
|
24
|
-
next context if context.database_task == false
|
25
|
-
|
26
24
|
context.logger.task 'Backup remote DB'
|
27
25
|
|
28
26
|
if simulate?(cli_options: context.cli_options)
|
@@ -19,8 +19,6 @@ module Wordmove
|
|
19
19
|
# @!scope class
|
20
20
|
# @return [LightService::Context] Action's context
|
21
21
|
executed do |context| # rubocop:disable Metrics/BlockLength
|
22
|
-
next context if context.database_task == false
|
23
|
-
|
24
22
|
context.logger.task 'Cleanup'
|
25
23
|
|
26
24
|
if simulate?(cli_options: context.cli_options)
|
@@ -25,8 +25,6 @@ module Wordmove
|
|
25
25
|
# @!scope class
|
26
26
|
# @return [LightService::Context] Action's context
|
27
27
|
executed do |context| # rubocop:disable Metrics/BlockLength
|
28
|
-
next context if context.database_task == false
|
29
|
-
|
30
28
|
context.logger.task 'Download remote DB'
|
31
29
|
|
32
30
|
if simulate?(cli_options: context.cli_options)
|
@@ -25,8 +25,6 @@ module Wordmove
|
|
25
25
|
# @!scope class
|
26
26
|
# @return [LightService::Context] Action's context
|
27
27
|
executed do |context| # rubocop:disable Metrics/BlockLength
|
28
|
-
next context if context.database_task == false
|
29
|
-
|
30
28
|
context.logger.task 'Upload and import adapted DB'
|
31
29
|
|
32
30
|
result = Wordmove::Actions::PutFile.execute(
|
@@ -16,11 +16,6 @@ module Wordmove
|
|
16
16
|
promises :db_paths
|
17
17
|
|
18
18
|
executed do |context| # rubocop:disable Metrics/BlockLength
|
19
|
-
if context.database_task == false
|
20
|
-
context.db_paths = false
|
21
|
-
next context
|
22
|
-
end
|
23
|
-
|
24
19
|
next context if simulate?(cli_options: context.cli_options)
|
25
20
|
|
26
21
|
content_dir = local_wp_content_dir(local_options: context.local_options)
|
@@ -57,12 +52,10 @@ module Wordmove
|
|
57
52
|
remote_options: context.remote_options
|
58
53
|
).url('import.php')
|
59
54
|
DbPathsConfig.ftp.local.generated_dump_script_path = generate_dump_script(
|
60
|
-
remote_db_options: context.remote_options[:database],
|
61
|
-
token: token
|
55
|
+
remote_db_options: context.remote_options[:database], token:
|
62
56
|
)
|
63
57
|
DbPathsConfig.ftp.local.generated_import_script_path = generate_import_script(
|
64
|
-
remote_db_options: context.remote_options[:database],
|
65
|
-
token: token
|
58
|
+
remote_db_options: context.remote_options[:database], token:
|
66
59
|
)
|
67
60
|
DbPathsConfig.ftp.local.temp_path = local_wp_content_dir(
|
68
61
|
local_options: context.local_options
|
@@ -17,8 +17,6 @@ module Wordmove
|
|
17
17
|
# @!scope class
|
18
18
|
# @return [LightService::Context] Action's context
|
19
19
|
executed do |context|
|
20
|
-
next context if context.database_task == false
|
21
|
-
|
22
20
|
context.logger.task 'Backup remote DB'
|
23
21
|
|
24
22
|
if simulate?(cli_options: context.cli_options)
|
@@ -16,9 +16,7 @@ module Wordmove
|
|
16
16
|
# @param logger [Wordmove::Logger]
|
17
17
|
# @!scope class
|
18
18
|
# @return [LightService::Context] Action's context
|
19
|
-
executed do |context|
|
20
|
-
next context if context.database_task == false
|
21
|
-
|
19
|
+
executed do |context| # rubocop:disable Metrics/BlockLength
|
22
20
|
context.logger.task 'Cleanup'
|
23
21
|
|
24
22
|
if simulate?(cli_options: context.cli_options)
|
@@ -24,8 +24,6 @@ module Wordmove
|
|
24
24
|
# @!scope class
|
25
25
|
# @return [LightService::Context] Action's context
|
26
26
|
executed do |context| # rubocop:disable Metrics/BlockLength
|
27
|
-
next context if context.database_task == false
|
28
|
-
|
29
27
|
context.logger.task 'Download remote DB'
|
30
28
|
|
31
29
|
next context if simulate?(cli_options: context.cli_options)
|
@@ -66,7 +64,12 @@ module Wordmove
|
|
66
64
|
cli_options: context.cli_options,
|
67
65
|
remote_file: context.db_paths.remote.gzipped_path
|
68
66
|
)
|
69
|
-
|
67
|
+
if result.failure?
|
68
|
+
context.logger.warning 'Failed to delete remote file ' \
|
69
|
+
"#{context.db_paths.remote.gzipped_path} because: " \
|
70
|
+
"#{result.message}" \
|
71
|
+
'. Manual intervention required'
|
72
|
+
end
|
70
73
|
|
71
74
|
context.logger.success(
|
72
75
|
"Remote DB dump downloaded in #{context.db_paths.local.gzipped_path}"
|
@@ -24,8 +24,6 @@ module Wordmove
|
|
24
24
|
# @!scope class
|
25
25
|
# @return [LightService::Context] Action's context
|
26
26
|
executed do |context| # rubocop:disable Metrics/BlockLength
|
27
|
-
next context if context.database_task == false
|
28
|
-
|
29
27
|
context.logger.task 'Upload and import adapted DB'
|
30
28
|
|
31
29
|
result = Wordmove::Actions::PutFile.execute(
|
@@ -3,6 +3,7 @@ mapping:
|
|
3
3
|
vhost:
|
4
4
|
pattern: /^https?:\/\//
|
5
5
|
wordpress_path:
|
6
|
+
required: true
|
6
7
|
database:
|
7
8
|
type: map
|
8
9
|
required: true
|
@@ -15,9 +16,6 @@ mapping:
|
|
15
16
|
required: true
|
16
17
|
host:
|
17
18
|
required: true
|
18
|
-
mysqldump_options:
|
19
|
-
port:
|
20
|
-
charset:
|
21
19
|
paths:
|
22
20
|
type: map
|
23
21
|
mapping:
|
data/lib/wordmove/cli.rb
CHANGED
@@ -32,23 +32,16 @@ module Wordmove
|
|
32
32
|
exit 1
|
33
33
|
end
|
34
34
|
|
35
|
-
def
|
36
|
-
cli_options.deep_symbolize_keys!
|
37
|
-
movefile = Wordmove::Movefile.new(cli_options)
|
38
|
-
|
39
|
-
[cli_options, movefile]
|
40
|
-
end
|
41
|
-
|
42
|
-
def movefile_from(**cli_options)
|
35
|
+
def movefile_from(cli_options)
|
43
36
|
ensure_wordpress_options_presence!(cli_options)
|
44
|
-
Wordmove::Movefile.new(cli_options)
|
37
|
+
Wordmove::Movefile.new(cli_options, nil, true)
|
45
38
|
rescue MovefileNotFound => e
|
46
39
|
Logger.new($stdout).error(e.message)
|
47
40
|
exit 1
|
48
41
|
end
|
49
42
|
|
50
|
-
def call_organizer_with(klass:, movefile:,
|
51
|
-
result = klass.call(cli_options
|
43
|
+
def call_organizer_with(klass:, movefile:, cli_options:)
|
44
|
+
result = klass.call(cli_options, movefile)
|
52
45
|
|
53
46
|
exit 0 if result.success?
|
54
47
|
|
@@ -114,22 +107,22 @@ module Wordmove
|
|
114
107
|
private
|
115
108
|
|
116
109
|
def call_pull_organizer_with(**cli_options)
|
117
|
-
movefile = movefile_from(
|
110
|
+
movefile = movefile_from(cli_options)
|
118
111
|
|
119
112
|
if movefile.options.dig(movefile.environment, :ssh)
|
120
113
|
call_organizer_with(
|
121
114
|
klass: Wordmove::Organizers::Ssh::Pull,
|
122
|
-
movefile:
|
123
|
-
**cli_options
|
115
|
+
movefile:, cli_options:
|
124
116
|
)
|
125
117
|
elsif movefile.options.dig(movefile.environment, :ftp)
|
126
118
|
call_organizer_with(
|
127
119
|
klass: Wordmove::Organizers::Ftp::Pull,
|
128
|
-
movefile:
|
129
|
-
**cli_options
|
120
|
+
movefile:, cli_options:
|
130
121
|
)
|
131
122
|
else
|
132
|
-
raise NoAdapterFound, 'No valid adapter found.'
|
123
|
+
raise NoAdapterFound, 'No valid adapter found. It seems like your movefile.yml lacks ' \
|
124
|
+
'an ssh or ftp section for the current environment. ' \
|
125
|
+
'Run `wordmove doctor` for more info'
|
133
126
|
end
|
134
127
|
rescue NoAdapterFound => e
|
135
128
|
Logger.new($stdout).error(e.message)
|
@@ -149,22 +142,22 @@ module Wordmove
|
|
149
142
|
private
|
150
143
|
|
151
144
|
def call_push_organizer_with(**cli_options)
|
152
|
-
movefile = movefile_from(
|
145
|
+
movefile = movefile_from(cli_options)
|
153
146
|
|
154
147
|
if movefile.options.dig(movefile.environment, :ssh)
|
155
148
|
call_organizer_with(
|
156
149
|
klass: Wordmove::Organizers::Ssh::Push,
|
157
|
-
movefile:
|
158
|
-
**cli_options
|
150
|
+
movefile:, cli_options:
|
159
151
|
)
|
160
152
|
elsif movefile.options.dig(movefile.environment, :ftp)
|
161
153
|
call_organizer_with(
|
162
154
|
klass: Wordmove::Organizers::Ftp::Push,
|
163
|
-
movefile:
|
164
|
-
**cli_options
|
155
|
+
movefile:, cli_options:
|
165
156
|
)
|
166
157
|
else
|
167
|
-
raise NoAdapterFound, 'No valid adapter found.'
|
158
|
+
raise NoAdapterFound, 'No valid adapter found. It seems like your movefile.yml lacks ' \
|
159
|
+
'an ssh or ftp section for the current environment. ' \
|
160
|
+
'Run `wordmove doctor` for more info'
|
168
161
|
end
|
169
162
|
rescue NoAdapterFound => e
|
170
163
|
Logger.new($stdout).error(e.message)
|
@@ -5,7 +5,7 @@ module Wordmove
|
|
5
5
|
attr_reader :movefile, :contents, :root_keys
|
6
6
|
|
7
7
|
def initialize(cli_options = {}, dir = '.')
|
8
|
-
@movefile = Wordmove::Movefile.new(cli_options, dir)
|
8
|
+
@movefile = Wordmove::Movefile.new(cli_options, dir, false)
|
9
9
|
|
10
10
|
begin
|
11
11
|
@contents = movefile.options
|
@@ -7,7 +7,7 @@ module Wordmove
|
|
7
7
|
@logger = Logger.new($stdout).tap { |l| l.level = Logger::INFO }
|
8
8
|
begin
|
9
9
|
@config = Wordmove::Movefile
|
10
|
-
.new({ config: movefile_name }, movefile_dir)
|
10
|
+
.new({ config: movefile_name }, movefile_dir, false)
|
11
11
|
.options[:local][:database]
|
12
12
|
rescue Psych::SyntaxError => e
|
13
13
|
logger.error e.message
|