wordmove 6.0.0.alpha.7 → 6.0.0.alpha.9
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +16 -6
- data/.ruby-version +1 -1
- data/.vscode/launch.json +25 -44
- data/lib/mutex_m.rb +42 -0
- data/lib/wordmove/actions/adapt_local_db.rb +20 -2
- data/lib/wordmove/actions/adapt_remote_db.rb +20 -2
- data/lib/wordmove/actions/delete_remote_file.rb +1 -1
- data/lib/wordmove/actions/filter_and_setup_tasks_to_run.rb +3 -1
- data/lib/wordmove/actions/ftp/helpers.rb +1 -1
- data/lib/wordmove/actions/put_file.rb +5 -5
- data/lib/wordmove/actions/ssh/helpers.rb +2 -2
- data/lib/wordmove/actions/ssh/run_remote_command.rb +1 -1
- data/lib/wordmove/cli.rb +1 -0
- data/lib/wordmove/doctor/movefile.rb +7 -4
- data/lib/wordmove/guardian.rb +5 -1
- data/lib/wordmove/hook.rb +1 -1
- data/lib/wordmove/movefile.rb +4 -4
- data/lib/wordmove/organizers/ftp/pull.rb +2 -2
- data/lib/wordmove/organizers/ftp/push.rb +2 -2
- data/lib/wordmove/organizers/ssh/pull.rb +2 -2
- data/lib/wordmove/organizers/ssh/push.rb +2 -2
- data/lib/wordmove/version.rb +1 -1
- data/lib/wordmove/wordpress_directory.rb +6 -6
- data/lib/wordmove.rb +5 -1
- data/mise.toml +2 -0
- data/wordmove.gemspec +22 -17
- metadata +81 -39
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 77ca695fccb859ecc24141995d4e6a0b255bb870b9176ca72fd9d39d6b5310f5
|
|
4
|
+
data.tar.gz: 067dcac2b5221c93d5a050a49dea507ca5cefcb3894c916a48f1f68dc674299f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9555367ed6d4aa03aa9edc5ff37984be23372484f611f149cbdb00285932702ccd5d2ee899dac5c9535b0812100fd72514f9ad4099707fead410b2ba8a767680
|
|
7
|
+
data.tar.gz: b70fd41cfe2b89ad3b55db3f4455e741f0b82ecf75c9de90d884d47f6ae3c2658a4d913ca4cd9b4417a0628d9c757cf0a74a22744d78c43ed1437d9ad7ab59c5
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
AllCops:
|
|
2
|
-
TargetRubyVersion: 3.
|
|
2
|
+
TargetRubyVersion: 3.4
|
|
3
3
|
DisplayCopNames: true
|
|
4
4
|
DisplayStyleGuide: true
|
|
5
5
|
NewCops: enable
|
|
6
6
|
|
|
7
7
|
Exclude:
|
|
8
|
-
-
|
|
8
|
+
- "bin/*"
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Layout/LineLength:
|
|
11
11
|
Max: 100
|
|
12
12
|
|
|
13
|
+
Gemspec/DevelopmentDependencies:
|
|
14
|
+
Enabled: false
|
|
15
|
+
|
|
16
|
+
plugins:
|
|
17
|
+
- rubocop-rspec
|
|
18
|
+
|
|
13
19
|
Metrics/MethodLength:
|
|
14
20
|
Max: 20
|
|
15
21
|
|
|
@@ -18,9 +24,9 @@ Metrics/ClassLength:
|
|
|
18
24
|
|
|
19
25
|
Metrics/BlockLength:
|
|
20
26
|
Exclude:
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
27
|
+
- "spec/**/*_spec.rb"
|
|
28
|
+
- "spec/factories/*.rb"
|
|
29
|
+
- "*.gemspec"
|
|
24
30
|
|
|
25
31
|
Metrics/CyclomaticComplexity:
|
|
26
32
|
Max: 10
|
|
@@ -36,3 +42,7 @@ Style/FrozenStringLiteralComment:
|
|
|
36
42
|
|
|
37
43
|
Metrics/AbcSize:
|
|
38
44
|
Max: 40
|
|
45
|
+
|
|
46
|
+
Lint/RedundantCopDisableDirective:
|
|
47
|
+
Exclude:
|
|
48
|
+
- "spec/spec_helper.rb"
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.4.5
|
data/.vscode/launch.json
CHANGED
|
@@ -2,72 +2,53 @@
|
|
|
2
2
|
"version": "0.2.0",
|
|
3
3
|
"configurations": [
|
|
4
4
|
{
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"request": "
|
|
8
|
-
"cwd": "${workspaceRoot}",
|
|
9
|
-
"program": "${workspaceRoot}/main.rb"
|
|
5
|
+
"type": "rdbg",
|
|
6
|
+
"name": "Attach to remote rdbg",
|
|
7
|
+
"request": "attach"
|
|
10
8
|
},
|
|
11
9
|
{
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"request": "
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"remotePort": "1234",
|
|
18
|
-
"remoteWorkspaceRoot": "${workspaceRoot}"
|
|
10
|
+
"type": "rdbg",
|
|
11
|
+
"name": "Debug current file",
|
|
12
|
+
"request": "launch",
|
|
13
|
+
"script": "${file}",
|
|
14
|
+
"askParameters": true
|
|
19
15
|
},
|
|
20
16
|
{
|
|
21
|
-
"name": "
|
|
17
|
+
"name": "Debug Local File",
|
|
22
18
|
"type": "Ruby",
|
|
23
19
|
"request": "launch",
|
|
24
20
|
"cwd": "${workspaceRoot}",
|
|
25
|
-
"program": "${workspaceRoot}/
|
|
26
|
-
"args": [
|
|
27
|
-
"server"
|
|
28
|
-
]
|
|
21
|
+
"program": "${workspaceRoot}/main.rb"
|
|
29
22
|
},
|
|
30
23
|
{
|
|
31
24
|
"name": "RSpec - all",
|
|
32
|
-
"type": "
|
|
25
|
+
"type": "rdbg",
|
|
33
26
|
"request": "launch",
|
|
34
27
|
"cwd": "${workspaceRoot}",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
]
|
|
28
|
+
"command": "bundle exec",
|
|
29
|
+
"script": "rspec",
|
|
30
|
+
"askParameters": false,
|
|
31
|
+
"args": []
|
|
40
32
|
},
|
|
41
33
|
{
|
|
42
34
|
"name": "RSpec - active spec file only",
|
|
43
|
-
"type": "
|
|
35
|
+
"type": "rdbg",
|
|
44
36
|
"request": "launch",
|
|
45
37
|
"cwd": "${workspaceRoot}",
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"${file}"
|
|
51
|
-
]
|
|
38
|
+
"command": "bundle exec rspec",
|
|
39
|
+
"script": "${file}",
|
|
40
|
+
"askParameters": false,
|
|
41
|
+
"args": []
|
|
52
42
|
},
|
|
53
43
|
{
|
|
54
44
|
"name": "RSpec - active test only",
|
|
55
|
-
"type": "
|
|
56
|
-
"request": "launch",
|
|
57
|
-
"cwd": "${workspaceRoot}",
|
|
58
|
-
"program": "${workspaceRoot}/bin/rspec",
|
|
59
|
-
"args": [
|
|
60
|
-
"-I",
|
|
61
|
-
"${workspaceRoot}",
|
|
62
|
-
"${file}:${lineNumber}"
|
|
63
|
-
]
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"name": "Cucumber",
|
|
67
|
-
"type": "Ruby",
|
|
45
|
+
"type": "rdbg",
|
|
68
46
|
"request": "launch",
|
|
69
47
|
"cwd": "${workspaceRoot}",
|
|
70
|
-
"
|
|
48
|
+
"command": "bundle exec rspec",
|
|
49
|
+
"script": "${file}:${lineNumber}",
|
|
50
|
+
"askParameters": false,
|
|
51
|
+
"args": []
|
|
71
52
|
}
|
|
72
53
|
]
|
|
73
54
|
}
|
data/lib/mutex_m.rb
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Shim for the deprecated/removed 'mutex_m' stdlib which ActiveSupport 6.1 still requires.
|
|
2
|
+
# Provides a minimal implementation compatible with ActiveSupport's expectations.
|
|
3
|
+
# This can be removed once ActiveSupport dependency is upgraded to a version
|
|
4
|
+
# not relying on 'mutex_m' (>= 7.1) and Ruby version supplies needed features.
|
|
5
|
+
|
|
6
|
+
# rubocop:disable all
|
|
7
|
+
module Mutex_m
|
|
8
|
+
def self.included(base)
|
|
9
|
+
base.class_eval do
|
|
10
|
+
if instance_methods(false).include?(:initialize)
|
|
11
|
+
alias_method :__mutex_m_original_initialize,
|
|
12
|
+
:initialize
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def initialize(*, &)
|
|
16
|
+
@__mutex_m_mutex = ::Mutex.new
|
|
17
|
+
if defined?(:__mutex_m_original_initialize)
|
|
18
|
+
__mutex_m_original_initialize(*, &)
|
|
19
|
+
elsif defined?(super)
|
|
20
|
+
super
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def mu_synchronize(&)
|
|
27
|
+
(@__mutex_m_mutex ||= ::Mutex.new).synchronize(&)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def mu_try_lock
|
|
31
|
+
(@__mutex_m_mutex ||= ::Mutex.new).try_lock
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def mu_unlock
|
|
35
|
+
(@__mutex_m_mutex ||= ::Mutex.new).unlock
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def mu_locked?
|
|
39
|
+
(@__mutex_m_mutex ||= ::Mutex.new).locked?
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
# rubocop:enable all
|
|
@@ -123,11 +123,15 @@ module Wordmove
|
|
|
123
123
|
'or :wordpress_path expected'
|
|
124
124
|
end
|
|
125
125
|
|
|
126
|
+
from = context.dig(:local_options, config_key)
|
|
127
|
+
to = context.dig(:remote_options, config_key)
|
|
128
|
+
search, replace = wpcli_search_replace_patterns(config_key, from, to)
|
|
129
|
+
|
|
126
130
|
[
|
|
127
131
|
'wp search-replace',
|
|
128
132
|
"--path=#{wpcli_config_path(context)}",
|
|
129
|
-
|
|
130
|
-
|
|
133
|
+
search,
|
|
134
|
+
replace,
|
|
131
135
|
'--regex-delimiter="|"',
|
|
132
136
|
'--regex',
|
|
133
137
|
'--precise',
|
|
@@ -137,6 +141,20 @@ module Wordmove
|
|
|
137
141
|
'--allow-root'
|
|
138
142
|
].join(' ')
|
|
139
143
|
end
|
|
144
|
+
|
|
145
|
+
# Builds the regex search pattern and replacement string for wp search-replace.
|
|
146
|
+
#
|
|
147
|
+
# For vhost: no anchors so the URL is replaced everywhere it appears (post content,
|
|
148
|
+
# meta, serialized data). Regexp.escape handles special chars in the URL.
|
|
149
|
+
# For wordpress_path: exact anchors (\A...\Z) prevent replacing substrings
|
|
150
|
+
# (e.g. /html appearing inside text/html — see issue #616).
|
|
151
|
+
def self.wpcli_search_replace_patterns(config_key, from, to)
|
|
152
|
+
if config_key == :vhost
|
|
153
|
+
[Regexp.escape(from).shellescape, to.shellescape]
|
|
154
|
+
else
|
|
155
|
+
["\\A#{Regexp.escape(from)}\\Z".shellescape, to.shellescape]
|
|
156
|
+
end
|
|
157
|
+
end
|
|
140
158
|
end
|
|
141
159
|
end
|
|
142
160
|
end
|
|
@@ -109,11 +109,15 @@ module Wordmove
|
|
|
109
109
|
'or :wordpress_path expected'
|
|
110
110
|
end
|
|
111
111
|
|
|
112
|
+
from = context.dig(:remote_options, config_key)
|
|
113
|
+
to = context.dig(:local_options, config_key)
|
|
114
|
+
search, replace = wpcli_search_replace_patterns(config_key, from, to)
|
|
115
|
+
|
|
112
116
|
[
|
|
113
117
|
'wp search-replace',
|
|
114
118
|
"--path=#{wpcli_config_path(context)}",
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
search,
|
|
120
|
+
replace,
|
|
117
121
|
'--regex-delimiter="|"',
|
|
118
122
|
'--regex',
|
|
119
123
|
'--precise',
|
|
@@ -123,6 +127,20 @@ module Wordmove
|
|
|
123
127
|
'--allow-root'
|
|
124
128
|
].join(' ')
|
|
125
129
|
end
|
|
130
|
+
|
|
131
|
+
# Builds the regex search pattern and replacement string for wp search-replace.
|
|
132
|
+
#
|
|
133
|
+
# For vhost: no anchors so the URL is replaced everywhere it appears (post content,
|
|
134
|
+
# meta, serialized data). Regexp.escape handles special chars in the URL.
|
|
135
|
+
# For wordpress_path: exact anchors (\A...\Z) prevent replacing substrings
|
|
136
|
+
# (e.g. /html appearing inside text/html — see issue #616).
|
|
137
|
+
def self.wpcli_search_replace_patterns(config_key, from, to)
|
|
138
|
+
if config_key == :vhost
|
|
139
|
+
[Regexp.escape(from).shellescape, to.shellescape]
|
|
140
|
+
else
|
|
141
|
+
["\\A#{Regexp.escape(from)}\\Z".shellescape, to.shellescape]
|
|
142
|
+
end
|
|
143
|
+
end
|
|
126
144
|
end
|
|
127
145
|
end
|
|
128
146
|
end
|
|
@@ -34,7 +34,7 @@ module Wordmove
|
|
|
34
34
|
# FTP protocol. The problem is how +Net::FTP+ ruby class behaves.
|
|
35
35
|
# IMO this is an acceptable tradeoff.
|
|
36
36
|
unless exit_code.nil?
|
|
37
|
-
context.fail! "Error code #{exit_code} returned while deleting file "\
|
|
37
|
+
context.fail! "Error code #{exit_code} returned while deleting file " \
|
|
38
38
|
"#{context.remote_file}: #{stderr}"
|
|
39
39
|
end
|
|
40
40
|
end
|
|
@@ -27,7 +27,9 @@ module Wordmove
|
|
|
27
27
|
(context.cli_options[:all] && context.cli_options[task] != false)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
allowed_tasks = requested_tasks.select
|
|
30
|
+
allowed_tasks = requested_tasks.select do |task|
|
|
31
|
+
context.guardian.allow? task
|
|
32
|
+
end
|
|
31
33
|
|
|
32
34
|
# Since we `promises` the following variables, we cannot set them as `nil`
|
|
33
35
|
context.database_task = allowed_tasks.delete(:db) || false
|
|
@@ -30,11 +30,11 @@ module Wordmove
|
|
|
30
30
|
|
|
31
31
|
context.logger.task_step false, "#{command}: #{message}"
|
|
32
32
|
|
|
33
|
-
result =
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
result = simulate?(cli_options: context.cli_options) ||
|
|
34
|
+
context.photocopier.send(
|
|
35
|
+
command,
|
|
36
|
+
*context.command_args
|
|
37
|
+
)
|
|
38
38
|
|
|
39
39
|
next context if result == true
|
|
40
40
|
# We can't trust the return from the fotocopier method when using FTP. Keep on
|
|
@@ -77,7 +77,7 @@ module Wordmove
|
|
|
77
77
|
array << path
|
|
78
78
|
end
|
|
79
79
|
.concat(paths_to_exclude)
|
|
80
|
-
.
|
|
80
|
+
.push('/*')
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
#
|
|
@@ -118,7 +118,7 @@ module Wordmove
|
|
|
118
118
|
array << path
|
|
119
119
|
end
|
|
120
120
|
.concat(paths_to_exclude)
|
|
121
|
-
.
|
|
121
|
+
.push('/*')
|
|
122
122
|
end
|
|
123
123
|
end
|
|
124
124
|
end
|
data/lib/wordmove/cli.rb
CHANGED
|
@@ -11,9 +11,9 @@ module Wordmove
|
|
|
11
11
|
@contents = movefile.options
|
|
12
12
|
@root_keys = contents.keys
|
|
13
13
|
rescue Psych::SyntaxError
|
|
14
|
-
movefile.logger.error 'Your movefile is not parsable due to a syntax error'\
|
|
14
|
+
movefile.logger.error 'Your movefile is not parsable due to a syntax error' \
|
|
15
15
|
"so we can't continue to validate it."
|
|
16
|
-
movefile.logger.debug 'You could try to use https://yamlvalidator.com/ to'\
|
|
16
|
+
movefile.logger.debug 'You could try to use https://yamlvalidator.com/ to' \
|
|
17
17
|
'get a clue about the problem.'
|
|
18
18
|
end
|
|
19
19
|
end
|
|
@@ -61,12 +61,15 @@ module Wordmove
|
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
def validate_remote_section(key)
|
|
64
|
-
return false unless
|
|
64
|
+
return false unless protocol_present?(contents[key].keys)
|
|
65
65
|
|
|
66
66
|
validate_section(key)
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
# Checks if at least one supported protocol key is present
|
|
70
|
+
# @param keys [Array<Symbol>]
|
|
71
|
+
# @return [Boolean]
|
|
72
|
+
def protocol_present?(keys)
|
|
70
73
|
return true if keys.include?(:ssh) || keys.include?(:ftp)
|
|
71
74
|
|
|
72
75
|
movefile.logger.error 'This remote has not ssh nor ftp protocol defined'
|
data/lib/wordmove/guardian.rb
CHANGED
|
@@ -9,7 +9,8 @@ module Wordmove
|
|
|
9
9
|
@logger = Logger.new($stdout).tap { |l| l.level = Logger::DEBUG }
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
# Predicate form for checking if a task is allowed.
|
|
13
|
+
def allow?(task)
|
|
13
14
|
if forbidden?(task)
|
|
14
15
|
logger.task("#{action.capitalize}ing #{task.capitalize}")
|
|
15
16
|
logger.warn("You tried to #{action} #{task}, but is forbidden by configuration. Skipping")
|
|
@@ -18,6 +19,9 @@ module Wordmove
|
|
|
18
19
|
!forbidden?(task)
|
|
19
20
|
end
|
|
20
21
|
|
|
22
|
+
# Backwards compatibility: keep old API temporarily
|
|
23
|
+
alias allows allow?
|
|
24
|
+
|
|
21
25
|
private
|
|
22
26
|
|
|
23
27
|
def forbidden?(task)
|
data/lib/wordmove/hook.rb
CHANGED
|
@@ -25,7 +25,7 @@ module Wordmove
|
|
|
25
25
|
Wordmove::Hook::Local.run(command, options[:local], simulate)
|
|
26
26
|
when 'remote'
|
|
27
27
|
if options[environment][:ftp]
|
|
28
|
-
logger.debug 'You have configured remote hooks to run over '\
|
|
28
|
+
logger.debug 'You have configured remote hooks to run over ' \
|
|
29
29
|
'an FTP connection, but this is not possible. Skipping.'
|
|
30
30
|
next
|
|
31
31
|
end
|
data/lib/wordmove/movefile.rb
CHANGED
|
@@ -29,7 +29,7 @@ module Wordmove
|
|
|
29
29
|
|
|
30
30
|
if cli_options[:environment].present? &&
|
|
31
31
|
!available_enviroments.include?(cli_options[:environment].to_sym)
|
|
32
|
-
raise UndefinedEnvironment, "No environment found for \"#{options[:environment]}\". "\
|
|
32
|
+
raise UndefinedEnvironment, "No environment found for \"#{options[:environment]}\". " \
|
|
33
33
|
"Available Environments: #{available_enviroments.join(' ')}"
|
|
34
34
|
end
|
|
35
35
|
|
|
@@ -64,8 +64,8 @@ module Wordmove
|
|
|
64
64
|
|
|
65
65
|
if entries.empty?
|
|
66
66
|
if last_dir?(start_dir)
|
|
67
|
-
raise MovefileNotFound, 'Could not find a valid Movefile. Searched'\
|
|
68
|
-
"
|
|
67
|
+
raise MovefileNotFound, 'Could not find a valid Movefile. Searched ' \
|
|
68
|
+
"for filename \"#{config_file_name}\" in folder \"#{start_dir}\""
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
@start_dir = upper_dir(start_dir)
|
|
@@ -93,7 +93,7 @@ module Wordmove
|
|
|
93
93
|
name: Wordmove::WpcliHelpers.get_config('DB_NAME', config_path:),
|
|
94
94
|
user: Wordmove::WpcliHelpers.get_config('DB_USER', config_path:)
|
|
95
95
|
},
|
|
96
|
-
vhost: Wordmove::WpcliHelpers.get_option('
|
|
96
|
+
vhost: Wordmove::WpcliHelpers.get_option('home', config_path:),
|
|
97
97
|
wordpress_path: config_path
|
|
98
98
|
}
|
|
99
99
|
)
|
|
@@ -34,11 +34,11 @@ module Wordmove
|
|
|
34
34
|
Wordmove::Actions::RunBeforePullHook, # Will fail and warn the user
|
|
35
35
|
Wordmove::Actions::FilterAndSetupTasksToRun,
|
|
36
36
|
reduce_if(
|
|
37
|
-
|
|
37
|
+
lambda(&:wordpress_task),
|
|
38
38
|
[Wordmove::Actions::Ftp::PullWordpress]
|
|
39
39
|
),
|
|
40
40
|
iterate(:folder_tasks, [Wordmove::Actions::Ftp::GetDirectory]),
|
|
41
|
-
reduce_if(
|
|
41
|
+
reduce_if(lambda(&:database_task),
|
|
42
42
|
[
|
|
43
43
|
Wordmove::Actions::SetupContextForDb,
|
|
44
44
|
Wordmove::Actions::BackupLocalDb,
|
|
@@ -34,11 +34,11 @@ module Wordmove
|
|
|
34
34
|
Wordmove::Actions::RunBeforePushHook, # Will fail and warn the user
|
|
35
35
|
Wordmove::Actions::FilterAndSetupTasksToRun,
|
|
36
36
|
reduce_if(
|
|
37
|
-
|
|
37
|
+
lambda(&:wordpress_task),
|
|
38
38
|
[Wordmove::Actions::Ftp::PushWordpress]
|
|
39
39
|
),
|
|
40
40
|
iterate(:folder_tasks, [Wordmove::Actions::Ftp::PutDirectory]),
|
|
41
|
-
reduce_if(
|
|
41
|
+
reduce_if(lambda(&:database_task),
|
|
42
42
|
[
|
|
43
43
|
Wordmove::Actions::SetupContextForDb,
|
|
44
44
|
Wordmove::Actions::Ftp::DownloadRemoteDb,
|
|
@@ -34,11 +34,11 @@ module Wordmove
|
|
|
34
34
|
Wordmove::Actions::RunBeforePullHook,
|
|
35
35
|
Wordmove::Actions::FilterAndSetupTasksToRun,
|
|
36
36
|
reduce_if(
|
|
37
|
-
|
|
37
|
+
lambda(&:wordpress_task),
|
|
38
38
|
[Wordmove::Actions::Ssh::PullWordpress]
|
|
39
39
|
),
|
|
40
40
|
iterate(:folder_tasks, [Wordmove::Actions::Ssh::GetDirectory]),
|
|
41
|
-
reduce_if(
|
|
41
|
+
reduce_if(lambda(&:database_task),
|
|
42
42
|
[
|
|
43
43
|
Wordmove::Actions::SetupContextForDb,
|
|
44
44
|
Wordmove::Actions::BackupLocalDb,
|
|
@@ -34,11 +34,11 @@ module Wordmove
|
|
|
34
34
|
Wordmove::Actions::RunBeforePushHook,
|
|
35
35
|
Wordmove::Actions::FilterAndSetupTasksToRun,
|
|
36
36
|
reduce_if(
|
|
37
|
-
|
|
37
|
+
lambda(&:wordpress_task),
|
|
38
38
|
[Wordmove::Actions::Ssh::PushWordpress]
|
|
39
39
|
),
|
|
40
40
|
iterate(:folder_tasks, [Wordmove::Actions::Ssh::PutDirectory]),
|
|
41
|
-
reduce_if(
|
|
41
|
+
reduce_if(lambda(&:database_task),
|
|
42
42
|
[
|
|
43
43
|
Wordmove::Actions::SetupContextForDb,
|
|
44
44
|
Wordmove::Actions::Ssh::DownloadRemoteDb,
|
data/lib/wordmove/version.rb
CHANGED
|
@@ -30,21 +30,21 @@ class WordpressDirectory
|
|
|
30
30
|
DEFAULT_PATHS[sym]
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
def path(*
|
|
34
|
-
File.join(options[:wordpress_path], relative_path(*
|
|
33
|
+
def path(*)
|
|
34
|
+
File.join(options[:wordpress_path], relative_path(*))
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
def url(*
|
|
38
|
-
File.join(options[:vhost], relative_path(*
|
|
37
|
+
def url(*)
|
|
38
|
+
File.join(options[:vhost], relative_path(*))
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
def relative_path(*
|
|
41
|
+
def relative_path(*)
|
|
42
42
|
path = if options[:paths] && options[:paths][folder]
|
|
43
43
|
options[:paths][folder]
|
|
44
44
|
else
|
|
45
45
|
DEFAULT_PATHS[folder]
|
|
46
46
|
end
|
|
47
|
-
File.join(path, *
|
|
47
|
+
File.join(path, *)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
module RemoteHelperMethods
|
data/lib/wordmove.rb
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
require 'English'
|
|
2
2
|
|
|
3
|
+
require 'logger' # Must be required before ActiveSupport so Logger constant exists
|
|
4
|
+
require 'base64' # No longer auto-loaded in Ruby >= 3.4 when AS expects it
|
|
5
|
+
require 'bigdecimal'
|
|
6
|
+
require 'benchmark'
|
|
7
|
+
require 'mutex_m'
|
|
3
8
|
require 'active_support'
|
|
4
9
|
require 'active_support/core_ext'
|
|
5
10
|
require 'colorize'
|
|
@@ -10,7 +15,6 @@ require 'dry/files'
|
|
|
10
15
|
require 'erb'
|
|
11
16
|
require 'kwalify'
|
|
12
17
|
require 'light-service'
|
|
13
|
-
require 'logger'
|
|
14
18
|
require 'open-uri'
|
|
15
19
|
require 'ostruct'
|
|
16
20
|
require 'yaml'
|
data/mise.toml
ADDED
data/wordmove.gemspec
CHANGED
|
@@ -30,26 +30,31 @@ Gem::Specification.new do |spec|
|
|
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
31
31
|
spec.require_paths = ['lib']
|
|
32
32
|
|
|
33
|
-
spec.
|
|
34
|
-
spec.
|
|
35
|
-
spec.
|
|
36
|
-
spec.
|
|
37
|
-
spec.
|
|
38
|
-
spec.
|
|
39
|
-
spec.
|
|
33
|
+
spec.add_dependency 'activesupport', '~> 6.1'
|
|
34
|
+
spec.add_dependency 'colorize', '~> 0.8.1'
|
|
35
|
+
spec.add_dependency 'dotenv', '~> 2.7.5'
|
|
36
|
+
spec.add_dependency 'dry-configurable', '~> 0.13.0'
|
|
37
|
+
spec.add_dependency 'kwalify', '~> 0.7.2'
|
|
38
|
+
spec.add_dependency 'light-service', '~> 0.17.0'
|
|
39
|
+
spec.add_dependency 'photocopier', '~> 1.4', '>= 1.4.1'
|
|
40
40
|
# spec.add_runtime_dependency 'thor', '~> 0.20.3'
|
|
41
|
-
spec.
|
|
42
|
-
spec.
|
|
41
|
+
spec.add_dependency 'dry-cli', '~> 0.7.0'
|
|
42
|
+
spec.add_dependency 'dry-files', '~> 0.1.0'
|
|
43
|
+
# Ruby 3.4/3.5 start removing some stdlib libs from default gems; explicitly depend
|
|
44
|
+
# on them so requiring wordmove doesn't break on newer Rubies.
|
|
45
|
+
spec.add_dependency 'base64'
|
|
46
|
+
spec.add_dependency 'bigdecimal'
|
|
47
|
+
spec.add_dependency 'logger'
|
|
48
|
+
spec.add_dependency 'ostruct'
|
|
43
49
|
|
|
44
|
-
spec.required_ruby_version = '>= 3.
|
|
50
|
+
spec.required_ruby_version = '>= 3.4.5'
|
|
45
51
|
|
|
46
|
-
spec.add_development_dependency '
|
|
47
|
-
spec.add_development_dependency '
|
|
48
|
-
spec.add_development_dependency '
|
|
49
|
-
spec.add_development_dependency '
|
|
50
|
-
spec.add_development_dependency 'rubocop'
|
|
51
|
-
spec.add_development_dependency '
|
|
52
|
-
spec.add_development_dependency 'simplecov', '~> 0.21.2'
|
|
52
|
+
spec.add_development_dependency 'debug'
|
|
53
|
+
spec.add_development_dependency 'rake'
|
|
54
|
+
spec.add_development_dependency 'rspec'
|
|
55
|
+
spec.add_development_dependency 'rubocop'
|
|
56
|
+
spec.add_development_dependency 'rubocop-rspec'
|
|
57
|
+
spec.add_development_dependency 'simplecov'
|
|
53
58
|
spec.add_development_dependency 'yard'
|
|
54
59
|
spec.add_development_dependency 'yard-activesupport-concern'
|
|
55
60
|
|
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.
|
|
4
|
+
version: 6.0.0.alpha.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stefano Verna
|
|
@@ -9,10 +9,9 @@ authors:
|
|
|
9
9
|
- Fabrizio Monti
|
|
10
10
|
- Alessandro Fazzi
|
|
11
11
|
- Filippo Gangi Dino
|
|
12
|
-
autorequire:
|
|
13
12
|
bindir: exe
|
|
14
13
|
cert_chain: []
|
|
15
|
-
date:
|
|
14
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
16
15
|
dependencies:
|
|
17
16
|
- !ruby/object:Gem::Dependency
|
|
18
17
|
name: activesupport
|
|
@@ -147,103 +146,145 @@ dependencies:
|
|
|
147
146
|
- !ruby/object:Gem::Version
|
|
148
147
|
version: 0.1.0
|
|
149
148
|
- !ruby/object:Gem::Dependency
|
|
150
|
-
name:
|
|
149
|
+
name: base64
|
|
151
150
|
requirement: !ruby/object:Gem::Requirement
|
|
152
151
|
requirements:
|
|
153
|
-
- - "
|
|
152
|
+
- - ">="
|
|
154
153
|
- !ruby/object:Gem::Version
|
|
155
|
-
version:
|
|
156
|
-
type: :
|
|
154
|
+
version: '0'
|
|
155
|
+
type: :runtime
|
|
157
156
|
prerelease: false
|
|
158
157
|
version_requirements: !ruby/object:Gem::Requirement
|
|
159
158
|
requirements:
|
|
160
|
-
- - "
|
|
159
|
+
- - ">="
|
|
161
160
|
- !ruby/object:Gem::Version
|
|
162
|
-
version:
|
|
161
|
+
version: '0'
|
|
163
162
|
- !ruby/object:Gem::Dependency
|
|
164
|
-
name:
|
|
163
|
+
name: bigdecimal
|
|
165
164
|
requirement: !ruby/object:Gem::Requirement
|
|
166
165
|
requirements:
|
|
167
|
-
- - "
|
|
166
|
+
- - ">="
|
|
167
|
+
- !ruby/object:Gem::Version
|
|
168
|
+
version: '0'
|
|
169
|
+
type: :runtime
|
|
170
|
+
prerelease: false
|
|
171
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
172
|
+
requirements:
|
|
173
|
+
- - ">="
|
|
174
|
+
- !ruby/object:Gem::Version
|
|
175
|
+
version: '0'
|
|
176
|
+
- !ruby/object:Gem::Dependency
|
|
177
|
+
name: logger
|
|
178
|
+
requirement: !ruby/object:Gem::Requirement
|
|
179
|
+
requirements:
|
|
180
|
+
- - ">="
|
|
181
|
+
- !ruby/object:Gem::Version
|
|
182
|
+
version: '0'
|
|
183
|
+
type: :runtime
|
|
184
|
+
prerelease: false
|
|
185
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
186
|
+
requirements:
|
|
187
|
+
- - ">="
|
|
188
|
+
- !ruby/object:Gem::Version
|
|
189
|
+
version: '0'
|
|
190
|
+
- !ruby/object:Gem::Dependency
|
|
191
|
+
name: ostruct
|
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
|
193
|
+
requirements:
|
|
194
|
+
- - ">="
|
|
195
|
+
- !ruby/object:Gem::Version
|
|
196
|
+
version: '0'
|
|
197
|
+
type: :runtime
|
|
198
|
+
prerelease: false
|
|
199
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
200
|
+
requirements:
|
|
201
|
+
- - ">="
|
|
168
202
|
- !ruby/object:Gem::Version
|
|
169
|
-
version: '
|
|
203
|
+
version: '0'
|
|
204
|
+
- !ruby/object:Gem::Dependency
|
|
205
|
+
name: debug
|
|
206
|
+
requirement: !ruby/object:Gem::Requirement
|
|
207
|
+
requirements:
|
|
208
|
+
- - ">="
|
|
209
|
+
- !ruby/object:Gem::Version
|
|
210
|
+
version: '0'
|
|
170
211
|
type: :development
|
|
171
212
|
prerelease: false
|
|
172
213
|
version_requirements: !ruby/object:Gem::Requirement
|
|
173
214
|
requirements:
|
|
174
|
-
- - "
|
|
215
|
+
- - ">="
|
|
175
216
|
- !ruby/object:Gem::Version
|
|
176
|
-
version: '
|
|
217
|
+
version: '0'
|
|
177
218
|
- !ruby/object:Gem::Dependency
|
|
178
219
|
name: rake
|
|
179
220
|
requirement: !ruby/object:Gem::Requirement
|
|
180
221
|
requirements:
|
|
181
|
-
- - "
|
|
222
|
+
- - ">="
|
|
182
223
|
- !ruby/object:Gem::Version
|
|
183
|
-
version:
|
|
224
|
+
version: '0'
|
|
184
225
|
type: :development
|
|
185
226
|
prerelease: false
|
|
186
227
|
version_requirements: !ruby/object:Gem::Requirement
|
|
187
228
|
requirements:
|
|
188
|
-
- - "
|
|
229
|
+
- - ">="
|
|
189
230
|
- !ruby/object:Gem::Version
|
|
190
|
-
version:
|
|
231
|
+
version: '0'
|
|
191
232
|
- !ruby/object:Gem::Dependency
|
|
192
233
|
name: rspec
|
|
193
234
|
requirement: !ruby/object:Gem::Requirement
|
|
194
235
|
requirements:
|
|
195
|
-
- - "
|
|
236
|
+
- - ">="
|
|
196
237
|
- !ruby/object:Gem::Version
|
|
197
|
-
version: '
|
|
238
|
+
version: '0'
|
|
198
239
|
type: :development
|
|
199
240
|
prerelease: false
|
|
200
241
|
version_requirements: !ruby/object:Gem::Requirement
|
|
201
242
|
requirements:
|
|
202
|
-
- - "
|
|
243
|
+
- - ">="
|
|
203
244
|
- !ruby/object:Gem::Version
|
|
204
|
-
version: '
|
|
245
|
+
version: '0'
|
|
205
246
|
- !ruby/object:Gem::Dependency
|
|
206
247
|
name: rubocop
|
|
207
248
|
requirement: !ruby/object:Gem::Requirement
|
|
208
249
|
requirements:
|
|
209
|
-
- - "
|
|
250
|
+
- - ">="
|
|
210
251
|
- !ruby/object:Gem::Version
|
|
211
|
-
version:
|
|
252
|
+
version: '0'
|
|
212
253
|
type: :development
|
|
213
254
|
prerelease: false
|
|
214
255
|
version_requirements: !ruby/object:Gem::Requirement
|
|
215
256
|
requirements:
|
|
216
|
-
- - "
|
|
257
|
+
- - ">="
|
|
217
258
|
- !ruby/object:Gem::Version
|
|
218
|
-
version:
|
|
259
|
+
version: '0'
|
|
219
260
|
- !ruby/object:Gem::Dependency
|
|
220
261
|
name: rubocop-rspec
|
|
221
262
|
requirement: !ruby/object:Gem::Requirement
|
|
222
263
|
requirements:
|
|
223
|
-
- - "
|
|
264
|
+
- - ">="
|
|
224
265
|
- !ruby/object:Gem::Version
|
|
225
|
-
version:
|
|
266
|
+
version: '0'
|
|
226
267
|
type: :development
|
|
227
268
|
prerelease: false
|
|
228
269
|
version_requirements: !ruby/object:Gem::Requirement
|
|
229
270
|
requirements:
|
|
230
|
-
- - "
|
|
271
|
+
- - ">="
|
|
231
272
|
- !ruby/object:Gem::Version
|
|
232
|
-
version:
|
|
273
|
+
version: '0'
|
|
233
274
|
- !ruby/object:Gem::Dependency
|
|
234
275
|
name: simplecov
|
|
235
276
|
requirement: !ruby/object:Gem::Requirement
|
|
236
277
|
requirements:
|
|
237
|
-
- - "
|
|
278
|
+
- - ">="
|
|
238
279
|
- !ruby/object:Gem::Version
|
|
239
|
-
version: 0
|
|
280
|
+
version: '0'
|
|
240
281
|
type: :development
|
|
241
282
|
prerelease: false
|
|
242
283
|
version_requirements: !ruby/object:Gem::Requirement
|
|
243
284
|
requirements:
|
|
244
|
-
- - "
|
|
285
|
+
- - ">="
|
|
245
286
|
- !ruby/object:Gem::Version
|
|
246
|
-
version: 0
|
|
287
|
+
version: '0'
|
|
247
288
|
- !ruby/object:Gem::Dependency
|
|
248
289
|
name: yard
|
|
249
290
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -323,6 +364,7 @@ files:
|
|
|
323
364
|
- bin/wordmove
|
|
324
365
|
- deploy/deploy.sh
|
|
325
366
|
- exe/wordmove
|
|
367
|
+
- lib/mutex_m.rb
|
|
326
368
|
- lib/wordmove.rb
|
|
327
369
|
- lib/wordmove/actions/adapt_local_db.rb
|
|
328
370
|
- lib/wordmove/actions/adapt_remote_db.rb
|
|
@@ -386,6 +428,7 @@ files:
|
|
|
386
428
|
- lib/wordmove/version.rb
|
|
387
429
|
- lib/wordmove/wordpress_directory.rb
|
|
388
430
|
- lib/wordmove/wpcli.rb
|
|
431
|
+
- mise.toml
|
|
389
432
|
- pkg/wordmove-0.0.1.gem
|
|
390
433
|
- pkg/wordmove-0.0.2.gem
|
|
391
434
|
- wordmove.gemspec
|
|
@@ -409,15 +452,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
409
452
|
requirements:
|
|
410
453
|
- - ">="
|
|
411
454
|
- !ruby/object:Gem::Version
|
|
412
|
-
version: 3.
|
|
455
|
+
version: 3.4.5
|
|
413
456
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
414
457
|
requirements:
|
|
415
|
-
- - "
|
|
458
|
+
- - ">="
|
|
416
459
|
- !ruby/object:Gem::Version
|
|
417
|
-
version:
|
|
460
|
+
version: '0'
|
|
418
461
|
requirements: []
|
|
419
|
-
rubygems_version: 3.
|
|
420
|
-
signing_key:
|
|
462
|
+
rubygems_version: 3.6.9
|
|
421
463
|
specification_version: 4
|
|
422
464
|
summary: Wordmove, Capistrano for Wordpress
|
|
423
465
|
test_files: []
|