wordmove 6.0.0.alpha.8 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 610983a08b3919a1bad04e0f8e2caf2f927c57814974c5d57a2165477971f612
4
- data.tar.gz: '01686da1b0a39cbef6519de82427b5a804a1677d39dea02370c860896507d005'
3
+ metadata.gz: 77ca695fccb859ecc24141995d4e6a0b255bb870b9176ca72fd9d39d6b5310f5
4
+ data.tar.gz: 067dcac2b5221c93d5a050a49dea507ca5cefcb3894c916a48f1f68dc674299f
5
5
  SHA512:
6
- metadata.gz: ad5fb4e7fb863a8115c7613e80d6da1797f11d872d6fb82a823763cbfff0efafc929c3039afae9461500b006d3e84e3a305a7fe2f302dfe1881058cc24cd8d8b
7
- data.tar.gz: 9d3876f6d01bd32c89043d89ed3ea2cb356bfa29280fea52d76ea15bb574c12ddc15906d306e2d45b4ce6cf067af13256bec65a066324d98ef6a7448662cafd5
6
+ metadata.gz: 9555367ed6d4aa03aa9edc5ff37984be23372484f611f149cbdb00285932702ccd5d2ee899dac5c9535b0812100fd72514f9ad4099707fead410b2ba8a767680
7
+ data.tar.gz: b70fd41cfe2b89ad3b55db3f4455e741f0b82ecf75c9de90d884d47f6ae3c2658a4d913ca4cd9b4417a0628d9c757cf0a74a22744d78c43ed1437d9ad7ab59c5
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ test/tmp
19
19
  test/version_tmp
20
20
  tmp
21
21
  .vs/
22
+ .vscode/settings.json
data/.rubocop.yml CHANGED
@@ -1,15 +1,21 @@
1
1
  AllCops:
2
- TargetRubyVersion: 3.1.0
2
+ TargetRubyVersion: 3.4
3
3
  DisplayCopNames: true
4
4
  DisplayStyleGuide: true
5
5
  NewCops: enable
6
6
 
7
7
  Exclude:
8
- - 'bin/*'
8
+ - "bin/*"
9
9
 
10
- Metrics/LineLength:
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
- - 'spec/**/*_spec.rb'
22
- - 'spec/factories/*.rb'
23
- - '*.gemspec'
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.0
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
- "name": "Debug Local File",
6
- "type": "Ruby",
7
- "request": "launch",
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
- "name": "Listen for rdebug-ide",
13
- "type": "Ruby",
14
- "request": "attach",
15
- "cwd": "${workspaceRoot}",
16
- "remoteHost": "127.0.0.1",
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": "Rails server",
17
+ "name": "Debug Local File",
22
18
  "type": "Ruby",
23
19
  "request": "launch",
24
20
  "cwd": "${workspaceRoot}",
25
- "program": "${workspaceRoot}/bin/rails",
26
- "args": [
27
- "server"
28
- ]
21
+ "program": "${workspaceRoot}/main.rb"
29
22
  },
30
23
  {
31
24
  "name": "RSpec - all",
32
- "type": "Ruby",
25
+ "type": "rdbg",
33
26
  "request": "launch",
34
27
  "cwd": "${workspaceRoot}",
35
- "program": "${workspaceRoot}/bin/rspec",
36
- "args": [
37
- "-I",
38
- "${workspaceRoot}"
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": "Ruby",
35
+ "type": "rdbg",
44
36
  "request": "launch",
45
37
  "cwd": "${workspaceRoot}",
46
- "program": "${workspaceRoot}/bin/rspec",
47
- "args": [
48
- "-I",
49
- "${workspaceRoot}",
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": "Ruby",
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
- "program": "${workspaceRoot}/bin/cucumber"
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
- '"\A' + context.dig(:local_options, config_key) + '\Z"', # rubocop:disable Style/StringConcatenation
130
- '"' + context.dig(:remote_options, config_key) + '"', # rubocop:disable Style/StringConcatenation
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
- '"\A' + context.dig(:remote_options, config_key) + '\Z"', # rubocop:disable Style/StringConcatenation
116
- '"' + context.dig(:local_options, config_key) + '"', # rubocop:disable Style/StringConcatenation
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 { |task| context.guardian.allows task }
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
@@ -29,7 +29,7 @@ module Wordmove
29
29
 
30
30
  # replaces \ with \\
31
31
  # replaces ' with \'
32
- string.gsub('\\', '\\\\\\').gsub(/'/, '\\\\\'')
32
+ string.gsub('\\', '\\\\\\').gsub('\'', '\\\\\'')
33
33
  end
34
34
 
35
35
  #
@@ -30,11 +30,11 @@ module Wordmove
30
30
 
31
31
  context.logger.task_step false, "#{command}: #{message}"
32
32
 
33
- result = if simulate?(cli_options: context.cli_options)
34
- true
35
- else
36
- context.photocopier.send(command, *context.command_args)
37
- end
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
- .concat(['/*'])
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
- .concat(['/*'])
121
+ .push('/*')
122
122
  end
123
123
  end
124
124
  end
@@ -30,7 +30,7 @@ module Wordmove
30
30
 
31
31
  next context if exit_code.zero?
32
32
 
33
- context.fail! "Error code #{exit_code} returned by command "\
33
+ context.fail! "Error code #{exit_code} returned by command " \
34
34
  "#{context.command}: #{stderr}"
35
35
  end
36
36
  end
data/lib/wordmove/cli.rb CHANGED
@@ -2,6 +2,7 @@ module Wordmove
2
2
  module CLI
3
3
  module PullPushShared
4
4
  extend ActiveSupport::Concern
5
+
5
6
  WORDPRESS_OPTIONS = %i[wordpress uploads themes plugins mu_plugins languages db].freeze
6
7
 
7
8
  included do # rubocop:disable Metrics/BlockLength
@@ -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 validate_protocol_presence(contents[key].keys)
64
+ return false unless protocol_present?(contents[key].keys)
65
65
 
66
66
  validate_section(key)
67
67
  end
68
68
 
69
- def validate_protocol_presence(keys)
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'
@@ -9,7 +9,8 @@ module Wordmove
9
9
  @logger = Logger.new($stdout).tap { |l| l.level = Logger::DEBUG }
10
10
  end
11
11
 
12
- def allows(task)
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
@@ -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
- " for filename \"#{config_file_name}\" in folder \"#{start_dir}\""
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)
@@ -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
- ->(ctx) { ctx.wordpress_task },
37
+ lambda(&:wordpress_task),
38
38
  [Wordmove::Actions::Ftp::PullWordpress]
39
39
  ),
40
40
  iterate(:folder_tasks, [Wordmove::Actions::Ftp::GetDirectory]),
41
- reduce_if(->(ctx) { ctx.database_task },
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
- ->(ctx) { ctx.wordpress_task },
37
+ lambda(&:wordpress_task),
38
38
  [Wordmove::Actions::Ftp::PushWordpress]
39
39
  ),
40
40
  iterate(:folder_tasks, [Wordmove::Actions::Ftp::PutDirectory]),
41
- reduce_if(->(ctx) { ctx.database_task },
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
- ->(ctx) { ctx.wordpress_task },
37
+ lambda(&:wordpress_task),
38
38
  [Wordmove::Actions::Ssh::PullWordpress]
39
39
  ),
40
40
  iterate(:folder_tasks, [Wordmove::Actions::Ssh::GetDirectory]),
41
- reduce_if(->(ctx) { ctx.database_task },
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
- ->(ctx) { ctx.wordpress_task },
37
+ lambda(&:wordpress_task),
38
38
  [Wordmove::Actions::Ssh::PushWordpress]
39
39
  ),
40
40
  iterate(:folder_tasks, [Wordmove::Actions::Ssh::PutDirectory]),
41
- reduce_if(->(ctx) { ctx.database_task },
41
+ reduce_if(lambda(&:database_task),
42
42
  [
43
43
  Wordmove::Actions::SetupContextForDb,
44
44
  Wordmove::Actions::Ssh::DownloadRemoteDb,
@@ -1,3 +1,3 @@
1
1
  module Wordmove
2
- VERSION = '6.0.0.alpha.8'.freeze
2
+ VERSION = '6.0.0.alpha.9'.freeze
3
3
  end
@@ -30,21 +30,21 @@ class WordpressDirectory
30
30
  DEFAULT_PATHS[sym]
31
31
  end
32
32
 
33
- def path(*args)
34
- File.join(options[:wordpress_path], relative_path(*args))
33
+ def path(*)
34
+ File.join(options[:wordpress_path], relative_path(*))
35
35
  end
36
36
 
37
- def url(*args)
38
- File.join(options[:vhost], relative_path(*args))
37
+ def url(*)
38
+ File.join(options[:vhost], relative_path(*))
39
39
  end
40
40
 
41
- def relative_path(*args)
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, *args)
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
@@ -0,0 +1,2 @@
1
+ [tools]
2
+ ruby = "3.4.5"
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.add_runtime_dependency 'activesupport', '~> 6.1'
34
- spec.add_runtime_dependency 'colorize', '~> 0.8.1'
35
- spec.add_runtime_dependency 'dotenv', '~> 2.7.5'
36
- spec.add_runtime_dependency 'dry-configurable', '~> 0.13.0'
37
- spec.add_runtime_dependency 'kwalify', '~> 0.7.2'
38
- spec.add_runtime_dependency 'light-service', '~> 0.17.0'
39
- spec.add_runtime_dependency 'photocopier', '~> 1.4', '>= 1.4.1'
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.add_runtime_dependency 'dry-cli', '~> 0.7.0'
42
- spec.add_runtime_dependency 'dry-files', '~> 0.1.0'
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.1.0'
50
+ spec.required_ruby_version = '>= 3.4.5'
45
51
 
46
- spec.add_development_dependency 'bundler', '~> 2.3.3'
47
- spec.add_development_dependency 'pry-byebug', '~> 3.1'
48
- spec.add_development_dependency 'rake', '~> 13.0.1'
49
- spec.add_development_dependency 'rspec', '~> 3.9'
50
- spec.add_development_dependency 'rubocop', '~> 1.24.0'
51
- spec.add_development_dependency 'rubocop-rspec', '~> 2.6.0'
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.8
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: 2022-01-04 00:00:00.000000000 Z
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: bundler
149
+ name: base64
151
150
  requirement: !ruby/object:Gem::Requirement
152
151
  requirements:
153
- - - "~>"
152
+ - - ">="
154
153
  - !ruby/object:Gem::Version
155
- version: 2.3.3
156
- type: :development
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: 2.3.3
161
+ version: '0'
163
162
  - !ruby/object:Gem::Dependency
164
- name: pry-byebug
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: '3.1'
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: '3.1'
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: 13.0.1
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: 13.0.1
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: '3.9'
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: '3.9'
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: 1.24.0
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: 1.24.0
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: 2.6.0
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: 2.6.0
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.21.2
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.21.2
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.1.0
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: 1.3.1
460
+ version: '0'
418
461
  requirements: []
419
- rubygems_version: 3.3.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: []