wordmove 6.0.0.alpha.1 → 6.0.0.alpha.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d9941b583c7efed07744b92745a92343597448609a3eaf744bda7c43f7c5c92
4
- data.tar.gz: ad6e8b8f4da9431749a763aa0f85a1747ae83ee976aaa2da1506181021a30530
3
+ metadata.gz: 1ea52bea7c72c65b2b9a55a425d54bfd586b2c8c71e998517d489f4f55fd1616
4
+ data.tar.gz: 90430c49a99da9c6ded3519a103066b26c13ee6771d89114ed85b46dad39860f
5
5
  SHA512:
6
- metadata.gz: 428d6fb168d3b9fbd61d7b2ab378651f8e208437ca829fb9b8d8bb57fec59393a519339bfd4fa402f07020482a4ffd3374ca672b6f055f310201aa4176540f84
7
- data.tar.gz: 76443da36ac2d51c6af649abbcb6bbbc4f14af67dff363fb87369c6e3a825e35422dc4d28682dd53a4d0f1a7ae1ceaa4e2bc424d2908119028981351caa81f07
6
+ metadata.gz: 95dd8ab8d22c5f8ec4faa15deb9b95792ecce5e2826d43266cbfdebac551e3f1ee6d646a86b2248ae5a16696849dc6e403ccd1a01d3cbadaa629ae0d62148ea4
7
+ data.tar.gz: e2413aaf068bd8993a1d4701504eddcdd3259b713f1bd1de92e1b10d7523234862c5e398e367277b8ddc80fb4ab00c717575ad6ac50cb6cb01fdfd6f53e4136f
@@ -38,7 +38,7 @@ module Wordmove
38
38
 
39
39
  next context if simulate?(cli_options: context.cli_options)
40
40
 
41
- Wordmove::Actions::RunLocalCommand.execute(
41
+ result = Wordmove::Actions::RunLocalCommand.execute(
42
42
  cli_options: context.cli_options,
43
43
  logger: context.logger,
44
44
  command: mysql_dump_command(
@@ -46,24 +46,27 @@ module Wordmove
46
46
  save_to_path: context.db_paths.local.path
47
47
  )
48
48
  )
49
+ context.fail_and_return!(result.message) if result.failure?
49
50
 
50
51
  if context.cli_options[:no_adapt]
51
52
  context.logger.warn 'Skipping DB adapt'
52
53
  else
53
- Wordmove::Actions::RunLocalCommand.execute(
54
+ result = Wordmove::Actions::RunLocalCommand.execute(
54
55
  cli_options: context.cli_options,
55
56
  logger: context.logger,
56
57
  command: wpcli_search_replace_command(context, :vhost)
57
58
  )
59
+ context.fail_and_return!(result.message) if result.failure?
58
60
 
59
- Wordmove::Actions::RunLocalCommand.execute(
61
+ result = Wordmove::Actions::RunLocalCommand.execute(
60
62
  cli_options: context.cli_options,
61
63
  logger: context.logger,
62
64
  command: wpcli_search_replace_command(context, :wordpress_path)
63
65
  )
66
+ context.fail_and_return!(result.message) if result.failure?
64
67
  end
65
68
 
66
- Wordmove::Actions::RunLocalCommand.execute(
69
+ result = Wordmove::Actions::RunLocalCommand.execute(
67
70
  cli_options: context.cli_options,
68
71
 
69
72
  logger: context.logger,
@@ -72,16 +75,18 @@ module Wordmove
72
75
  save_to_path: context.db_paths.local.adapted_path
73
76
  )
74
77
  )
78
+ context.fail_and_return!(result.message) if result.failure?
75
79
 
76
80
  if context.photocopier.is_a? Photocopier::SSH
77
- Wordmove::Actions::RunLocalCommand.execute(
81
+ result = Wordmove::Actions::RunLocalCommand.execute(
78
82
  cli_options: context.cli_options,
79
83
  logger: context.logger,
80
84
  command: compress_command(file_path: context.db_paths.local.adapted_path)
81
85
  )
86
+ context.fail_and_return!(result.message) if result.failure?
82
87
  end
83
88
 
84
- Wordmove::Actions::RunLocalCommand.execute(
89
+ result = Wordmove::Actions::RunLocalCommand.execute(
85
90
  cli_options: context.cli_options,
86
91
  logger: context.logger,
87
92
  command: mysql_import_command(
@@ -89,6 +94,7 @@ module Wordmove
89
94
  env_db_options: context.local_options[:database]
90
95
  )
91
96
  )
97
+ context.fail_and_return!(result.message) if result.failure?
92
98
  end
93
99
  end
94
100
  end
@@ -52,7 +52,7 @@ module Wordmove
52
52
  )
53
53
  end
54
54
 
55
- Wordmove::Actions::RunLocalCommand.execute(
55
+ result = Wordmove::Actions::RunLocalCommand.execute(
56
56
  cli_options: context.cli_options,
57
57
  logger: context.logger,
58
58
  command: mysql_import_command(
@@ -60,6 +60,7 @@ module Wordmove
60
60
  env_db_options: context.local_options[:database]
61
61
  )
62
62
  )
63
+ context.fail_and_return!(result.message) if result.failure?
63
64
 
64
65
  if context.cli_options[:no_adapt]
65
66
  context.logger.warn 'Skipping DB adapt'
@@ -30,7 +30,7 @@ module Wordmove
30
30
  next context
31
31
  end
32
32
 
33
- Wordmove::Actions::RunLocalCommand.execute(
33
+ result = Wordmove::Actions::RunLocalCommand.execute(
34
34
  cli_options: context.cli_options,
35
35
  logger: context.logger,
36
36
  command: mysql_dump_command(
@@ -38,12 +38,14 @@ module Wordmove
38
38
  save_to_path: context.db_paths.backup.local.path
39
39
  )
40
40
  )
41
+ context.fail_and_return!(result.message) if result.failure?
41
42
 
42
- Wordmove::Actions::RunLocalCommand.execute(
43
+ result = Wordmove::Actions::RunLocalCommand.execute(
43
44
  cli_options: context.cli_options,
44
45
  logger: context.logger,
45
46
  command: compress_command(file_path: context.db_paths.backup.local.path)
46
47
  )
48
+ context.fail_and_return!(result.message) if result.failure?
47
49
 
48
50
  context.logger.success(
49
51
  "Backup saved at #{context.db_paths.backup.local.gzipped_path}"
@@ -33,7 +33,7 @@ module Wordmove
33
33
  )
34
34
 
35
35
  if result.failure?
36
- context.logger.warning 'Failed to delete remote file ' \
36
+ context.logger.warning 'Failed to delete local file ' \
37
37
  "#{context.db_paths.local.path} because: " \
38
38
  "#{result.message}" \
39
39
  '. Manual intervention required'
@@ -61,11 +61,18 @@ module Wordmove
61
61
  if context.cli_options[:debug]
62
62
  context.logger.debug "Operation log located at: #{context.db_paths.ftp.local.temp_path}"
63
63
  else
64
- Wordmove::Actions::DeleteLocalFile.execute(
64
+ result = Wordmove::Actions::DeleteLocalFile.execute(
65
65
  cli_options: context.cli_options,
66
66
  logger: context.logger,
67
67
  file_path: context.db_paths.ftp.local.temp_path
68
68
  )
69
+
70
+ if result.failure?
71
+ context.logger.warning 'Failed to delete local file ' \
72
+ "#{context.db_paths.ftp.local.temp_path} because: " \
73
+ "#{result.message}" \
74
+ '. Manual intervention required'
75
+ end
69
76
  end
70
77
  end
71
78
  end
@@ -16,12 +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.skip_remaining!
21
- context.db_paths = false
22
- next context
23
- end
24
-
25
19
  next context if simulate?(cli_options: context.cli_options)
26
20
 
27
21
  content_dir = local_wp_content_dir(local_options: context.local_options)
@@ -16,7 +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|
19
+ executed do |context| # rubocop:disable Metrics/BlockLength
20
20
  context.logger.task 'Cleanup'
21
21
 
22
22
  if simulate?(cli_options: context.cli_options)
@@ -24,17 +24,29 @@ module Wordmove
24
24
  next context
25
25
  end
26
26
 
27
- Wordmove::Actions::DeleteLocalFile.execute(
27
+ result = Wordmove::Actions::DeleteLocalFile.execute(
28
28
  logger: context.logger,
29
29
  cli_options: context.cli_options,
30
30
  file_path: context.db_paths.local.path
31
31
  )
32
+ if result.failure?
33
+ context.logger.warning 'Failed to delete local file ' \
34
+ "#{context.db_paths.local.path} because: " \
35
+ "#{result.message}" \
36
+ '. Manual intervention required'
37
+ end
32
38
 
33
- Wordmove::Actions::DeleteLocalFile.execute(
39
+ result = Wordmove::Actions::DeleteLocalFile.execute(
34
40
  cli_options: context.cli_options,
35
41
  logger: context.logger,
36
42
  file_path: context.db_paths.local.gzipped_adapted_path
37
43
  )
44
+ if result.failure?
45
+ context.logger.warning 'Failed to delete local file ' \
46
+ "#{context.db_paths.local.gzipped_adapted_path} because: " \
47
+ "#{result.message}" \
48
+ '. Manual intervention required'
49
+ end
38
50
  end
39
51
  end
40
52
  end
@@ -64,7 +64,12 @@ module Wordmove
64
64
  cli_options: context.cli_options,
65
65
  remote_file: context.db_paths.remote.gzipped_path
66
66
  )
67
- context.fail_and_return!(result.message) if result.failure?
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
68
73
 
69
74
  context.logger.success(
70
75
  "Remote DB dump downloaded in #{context.db_paths.local.gzipped_path}"
@@ -62,7 +62,12 @@ module Wordmove
62
62
  cli_options: context.cli_options,
63
63
  remote_file: context.db_paths.remote.path
64
64
  )
65
- context.fail!(result.message) if result.failure?
65
+ if result.failure?
66
+ context.logger.warning 'Failed to delete remote file ' \
67
+ "#{context.db_paths.remote.path} because: " \
68
+ "#{result.message}" \
69
+ '. Manual intervention required'
70
+ end
66
71
  end
67
72
  end
68
73
  end
@@ -36,7 +36,7 @@ module Wordmove
36
36
  end
37
37
 
38
38
  def up_to_date?
39
- `wp cli check-update --format=json`.empty?
39
+ `wp cli check-update --format=json --allow-root`.empty?
40
40
  end
41
41
  end
42
42
  end
@@ -35,14 +35,15 @@ module Wordmove
35
35
  ->(ctx) { ctx.wordpress_task },
36
36
  [Wordmove::Actions::Ftp::PullWordpress]
37
37
  ),
38
- iterate(:folder_tasks, [Wordmove::Actions::Ftp::GetDirectory])
39
- ].concat [
40
- Wordmove::Actions::SetupContextForDb,
41
- Wordmove::Actions::BackupLocalDb,
42
- Wordmove::Actions::Ftp::DownloadRemoteDb,
43
- Wordmove::Actions::AdaptRemoteDb,
44
- Wordmove::Actions::Ftp::CleanupAfterAdapt
45
- ].concat [
38
+ iterate(:folder_tasks, [Wordmove::Actions::Ftp::GetDirectory]),
39
+ reduce_if(->(ctx) { ctx.database_task },
40
+ [
41
+ Wordmove::Actions::SetupContextForDb,
42
+ Wordmove::Actions::BackupLocalDb,
43
+ Wordmove::Actions::Ftp::DownloadRemoteDb,
44
+ Wordmove::Actions::AdaptRemoteDb,
45
+ Wordmove::Actions::Ftp::CleanupAfterAdapt
46
+ ]),
46
47
  Wordmove::Actions::RunAfterPullHook # Will fail and warn the user
47
48
  ]
48
49
  end
@@ -35,15 +35,16 @@ module Wordmove
35
35
  ->(ctx) { ctx.wordpress_task },
36
36
  [Wordmove::Actions::Ftp::PushWordpress]
37
37
  ),
38
- iterate(:folder_tasks, [Wordmove::Actions::Ftp::PutDirectory])
39
- ].concat [
40
- Wordmove::Actions::SetupContextForDb,
41
- Wordmove::Actions::Ftp::DownloadRemoteDb,
42
- Wordmove::Actions::Ftp::BackupRemoteDb,
43
- Wordmove::Actions::AdaptLocalDb,
44
- Wordmove::Actions::Ftp::PutAndImportDumpRemotely,
45
- Wordmove::Actions::Ftp::CleanupAfterAdapt
46
- ].concat [
38
+ iterate(:folder_tasks, [Wordmove::Actions::Ftp::PutDirectory]),
39
+ reduce_if(->(ctx) { ctx.database_task },
40
+ [
41
+ Wordmove::Actions::SetupContextForDb,
42
+ Wordmove::Actions::Ftp::DownloadRemoteDb,
43
+ Wordmove::Actions::Ftp::BackupRemoteDb,
44
+ Wordmove::Actions::AdaptLocalDb,
45
+ Wordmove::Actions::Ftp::PutAndImportDumpRemotely,
46
+ Wordmove::Actions::Ftp::CleanupAfterAdapt
47
+ ]),
47
48
  Wordmove::Actions::RunAfterPushHook # Will fail and warn the user
48
49
  ]
49
50
  end
@@ -35,14 +35,15 @@ module Wordmove
35
35
  ->(ctx) { ctx.wordpress_task },
36
36
  [Wordmove::Actions::Ssh::PullWordpress]
37
37
  ),
38
- iterate(:folder_tasks, [Wordmove::Actions::Ssh::GetDirectory])
39
- ].concat [
40
- Wordmove::Actions::SetupContextForDb,
41
- Wordmove::Actions::BackupLocalDb,
42
- Wordmove::Actions::Ssh::DownloadRemoteDb,
43
- Wordmove::Actions::AdaptRemoteDb,
44
- Wordmove::Actions::Ssh::CleanupAfterAdapt
45
- ].concat [
38
+ iterate(:folder_tasks, [Wordmove::Actions::Ssh::GetDirectory]),
39
+ reduce_if(->(ctx) { ctx.database_task },
40
+ [
41
+ Wordmove::Actions::SetupContextForDb,
42
+ Wordmove::Actions::BackupLocalDb,
43
+ Wordmove::Actions::Ssh::DownloadRemoteDb,
44
+ Wordmove::Actions::AdaptRemoteDb,
45
+ Wordmove::Actions::Ssh::CleanupAfterAdapt
46
+ ]),
46
47
  Wordmove::Actions::RunAfterPullHook
47
48
  ]
48
49
  end
@@ -35,15 +35,16 @@ module Wordmove
35
35
  ->(ctx) { ctx.wordpress_task },
36
36
  [Wordmove::Actions::Ssh::PushWordpress]
37
37
  ),
38
- iterate(:folder_tasks, [Wordmove::Actions::Ssh::PutDirectory])
39
- ].concat [
40
- Wordmove::Actions::SetupContextForDb,
41
- Wordmove::Actions::Ssh::DownloadRemoteDb,
42
- Wordmove::Actions::Ssh::BackupRemoteDb,
43
- Wordmove::Actions::AdaptLocalDb,
44
- Wordmove::Actions::Ssh::PutAndImportDumpRemotely,
45
- Wordmove::Actions::Ssh::CleanupAfterAdapt
46
- ].concat [
38
+ iterate(:folder_tasks, [Wordmove::Actions::Ssh::PutDirectory]),
39
+ reduce_if(->(ctx) { ctx.database_task },
40
+ [
41
+ Wordmove::Actions::SetupContextForDb,
42
+ Wordmove::Actions::Ssh::DownloadRemoteDb,
43
+ Wordmove::Actions::Ssh::BackupRemoteDb,
44
+ Wordmove::Actions::AdaptLocalDb,
45
+ Wordmove::Actions::Ssh::PutAndImportDumpRemotely,
46
+ Wordmove::Actions::Ssh::CleanupAfterAdapt
47
+ ]),
47
48
  Wordmove::Actions::RunAfterPushHook
48
49
  ]
49
50
  end
@@ -1,3 +1,3 @@
1
1
  module Wordmove
2
- VERSION = '6.0.0.alpha.1'.freeze
2
+ VERSION = '6.0.0.alpha.5'.freeze
3
3
  end
@@ -33,8 +33,11 @@ module Wordmove
33
33
  [
34
34
  'wp search-replace',
35
35
  "--path=#{wpcli_config_path(context)}",
36
- context.remote_options[config_key],
37
- context.local_options[config_key],
36
+ '"\A' + context.dig(:remote_options, config_key) + '\Z"', # rubocop:disable Style/StringConcatenation
37
+ '"' + context.dig(:local_options, config_key) + '"', # rubocop:disable Style/StringConcatenation
38
+ '--regex-delimiter="|"',
39
+ '--regex',
40
+ '--precise',
38
41
  '--quiet',
39
42
  '--skip-columns=guid',
40
43
  '--all-tables',
@@ -50,7 +53,7 @@ module Wordmove
50
53
  # @return [String]
51
54
  # @!scope class
52
55
  def wpcli_config_path(context)
53
- load_from_yml(context) || load_from_wpcli || context.local_options[:wordpress_path]
56
+ load_from_yml(context) || load_from_wpcli || context.dig(:local_options, :wordpress_path)
54
57
  end
55
58
 
56
59
  # If wordpress installation brings a `wp-cli.yml` file in its root folder,
@@ -60,7 +63,7 @@ module Wordmove
60
63
  # @!scope class
61
64
  # @!visibility private
62
65
  def load_from_yml(context)
63
- yml_path = File.join(context.local_options[:wordpress_path], 'wp-cli.yml')
66
+ yml_path = File.join(context.dig(:local_options, :wordpress_path), 'wp-cli.yml')
64
67
 
65
68
  return unless File.exist?(yml_path)
66
69
 
@@ -75,7 +78,10 @@ module Wordmove
75
78
  # @!scope class
76
79
  # @!visibility private
77
80
  def load_from_wpcli
78
- wpcli_config = JSON.parse(`wp cli param-dump --with-values`, symbolize_names: true)
81
+ wpcli_config = JSON.parse(
82
+ `wp cli param-dump --with-values --allow-root`,
83
+ symbolize_names: true
84
+ )
79
85
  wpcli_config.dig(:path, :current)
80
86
  rescue JSON::ParserError => _e
81
87
  nil
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: 6.0.0.alpha.1
4
+ version: 6.0.0.alpha.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Verna
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: exe
14
14
  cert_chain: []
15
- date: 2021-12-26 00:00:00.000000000 Z
15
+ date: 2021-12-30 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: activesupport