wordmove 2.2.1 → 2.3.0
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/.rubocop.yml +1 -1
- data/README.mdown +8 -6
- data/bin/bundler +17 -0
- data/bin/byebug +17 -0
- data/bin/coderay +17 -0
- data/bin/htmldiff +17 -0
- data/bin/kwalify +17 -0
- data/bin/ldiff +17 -0
- data/bin/pry +17 -0
- data/bin/rubocop +17 -0
- data/bin/ruby-parse +17 -0
- data/bin/ruby-rewrite +17 -0
- data/bin/rumoji +17 -0
- data/bin/thor +17 -0
- data/bin/wordmove +17 -0
- data/lib/wordmove.rb +8 -0
- data/lib/wordmove/assets/wordmove_schema_global.yml +4 -0
- data/lib/wordmove/assets/wordmove_schema_local.yml +22 -0
- data/lib/wordmove/assets/wordmove_schema_remote.yml +88 -0
- data/lib/wordmove/cli.rb +5 -0
- data/lib/wordmove/deployer/base.rb +2 -22
- data/lib/wordmove/doctor.rb +68 -0
- data/lib/wordmove/doctor/movefile.rb +80 -0
- data/lib/wordmove/doctor/mysql.rb +61 -0
- data/lib/wordmove/doctor/rsync.rb +21 -0
- data/lib/wordmove/doctor/ssh.rb +21 -0
- data/lib/wordmove/doctor/wpcli.rb +21 -0
- data/lib/wordmove/logger.rb +5 -1
- data/lib/wordmove/movefile.rb +40 -0
- data/lib/wordmove/sql_adapter/default.rb +1 -1
- data/lib/wordmove/version.rb +1 -1
- data/wordmove.gemspec +6 -5
- metadata +72 -35
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 74eb302bd31e07710d405885e8a6bdcc5a038334
|
|
4
|
+
data.tar.gz: db2cd9c305231c49d29d7f907f4e98020a3f3f5a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 36c47235b3f558e184e1650d02f79c6dee5d5da9f177fea5fb9a21f3594bfcba12d6ec9685132586505ba12d6c55d4c9ae6a9442374e6bc861fce04653a815e6
|
|
7
|
+
data.tar.gz: b6df4544d36d308d53c3b38fa129206b1d774be301154ea1440f6aac9739bb4d5d7dc50dc5cd26b1b61cf6a0bf5d12dc45be2aa8aac48b665c50dceb237b4e86
|
data/.rubocop.yml
CHANGED
data/README.mdown
CHANGED
|
@@ -39,11 +39,13 @@ Wordmove just acts as automation glue bewtween tools you already have and love.
|
|
|
39
39
|
|
|
40
40
|
```
|
|
41
41
|
> wordmove help
|
|
42
|
-
|
|
43
|
-
wordmove
|
|
44
|
-
wordmove
|
|
45
|
-
wordmove
|
|
46
|
-
wordmove
|
|
42
|
+
Commands:
|
|
43
|
+
wordmove --version, -v # Print the version
|
|
44
|
+
wordmove doctor # Do some local configuration and environment checks
|
|
45
|
+
wordmove help [TASK] # Describe available tasks or one specific task
|
|
46
|
+
wordmove init # Generates a brand new movefile.yml
|
|
47
|
+
wordmove pull # Pulls WP data from remote host to the local machine
|
|
48
|
+
wordmove push # Pushes WP data from local machine to remote host
|
|
47
49
|
```
|
|
48
50
|
|
|
49
51
|
Move inside the Wordpress folder and use `wordmove init` to generate a new `movefile.yml` and edit it with your settings. Read the next paragraph for more info.
|
|
@@ -194,7 +196,7 @@ made with ❤️ and ☕️ by [weLaika](http://dev.welaika.com)
|
|
|
194
196
|
|
|
195
197
|
(The MIT License)
|
|
196
198
|
|
|
197
|
-
Copyright © 2013-
|
|
199
|
+
Copyright © 2013-2018 weLaika
|
|
198
200
|
|
|
199
201
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
200
202
|
this software and associated documentation files (the ‘Software’), to deal in
|
data/bin/bundler
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'bundler' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("bundler", "bundler")
|
data/bin/byebug
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'byebug' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("byebug", "byebug")
|
data/bin/coderay
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'coderay' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("coderay", "coderay")
|
data/bin/htmldiff
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'htmldiff' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("diff-lcs", "htmldiff")
|
data/bin/kwalify
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'kwalify' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("kwalify", "kwalify")
|
data/bin/ldiff
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'ldiff' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("diff-lcs", "ldiff")
|
data/bin/pry
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'pry' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("pry", "pry")
|
data/bin/rubocop
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'rubocop' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("rubocop", "rubocop")
|
data/bin/ruby-parse
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'ruby-parse' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("parser", "ruby-parse")
|
data/bin/ruby-rewrite
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'ruby-rewrite' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("parser", "ruby-rewrite")
|
data/bin/rumoji
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'rumoji' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("rumoji", "rumoji")
|
data/bin/thor
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'thor' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("thor", "thor")
|
data/bin/wordmove
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# This file was generated by Bundler.
|
|
5
|
+
#
|
|
6
|
+
# The application 'wordmove' is installed as part of a gem, and
|
|
7
|
+
# this file is here to facilitate running it.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require "pathname"
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
+
Pathname.new(__FILE__).realpath)
|
|
13
|
+
|
|
14
|
+
require "rubygems"
|
|
15
|
+
require "bundler/setup"
|
|
16
|
+
|
|
17
|
+
load Gem.bin_path("wordmove", "wordmove")
|
data/lib/wordmove.rb
CHANGED
|
@@ -10,12 +10,20 @@ require 'erb'
|
|
|
10
10
|
require 'open-uri'
|
|
11
11
|
require 'active_support'
|
|
12
12
|
require 'active_support/core_ext'
|
|
13
|
+
require 'kwalify'
|
|
13
14
|
|
|
14
15
|
require 'photocopier'
|
|
15
16
|
|
|
16
17
|
require 'wordmove/exceptions'
|
|
17
18
|
require 'wordmove/cli'
|
|
19
|
+
require 'wordmove/doctor'
|
|
20
|
+
require 'wordmove/doctor/movefile'
|
|
21
|
+
require 'wordmove/doctor/mysql'
|
|
22
|
+
require 'wordmove/doctor/wpcli'
|
|
23
|
+
require 'wordmove/doctor/rsync'
|
|
24
|
+
require 'wordmove/doctor/ssh'
|
|
18
25
|
require 'wordmove/logger'
|
|
26
|
+
require 'wordmove/movefile'
|
|
19
27
|
require 'wordmove/sql_adapter/default'
|
|
20
28
|
require 'wordmove/sql_adapter/wpcli'
|
|
21
29
|
require "wordmove/version"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type: map
|
|
2
|
+
mapping:
|
|
3
|
+
vhost:
|
|
4
|
+
pattern: /^http:\/\//
|
|
5
|
+
wordpress_path:
|
|
6
|
+
database:
|
|
7
|
+
type: map
|
|
8
|
+
mapping:
|
|
9
|
+
name:
|
|
10
|
+
required: true
|
|
11
|
+
user:
|
|
12
|
+
required: true
|
|
13
|
+
password:
|
|
14
|
+
required: true
|
|
15
|
+
host:
|
|
16
|
+
required: true
|
|
17
|
+
mysqldump_options:
|
|
18
|
+
required: false
|
|
19
|
+
port:
|
|
20
|
+
required: false
|
|
21
|
+
charset:
|
|
22
|
+
required: false
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
type: map
|
|
2
|
+
mapping:
|
|
3
|
+
vhost:
|
|
4
|
+
type: str
|
|
5
|
+
pattern: /^http:\/\//
|
|
6
|
+
required: true
|
|
7
|
+
wordpress_path:
|
|
8
|
+
type: str
|
|
9
|
+
required: true
|
|
10
|
+
wordpress_absolute_path:
|
|
11
|
+
type: str
|
|
12
|
+
required: false
|
|
13
|
+
database:
|
|
14
|
+
type: map
|
|
15
|
+
required: true
|
|
16
|
+
mapping:
|
|
17
|
+
name:
|
|
18
|
+
type: str
|
|
19
|
+
required: true
|
|
20
|
+
user:
|
|
21
|
+
type: str
|
|
22
|
+
required: true
|
|
23
|
+
password:
|
|
24
|
+
type: str
|
|
25
|
+
required: true
|
|
26
|
+
host:
|
|
27
|
+
type: str
|
|
28
|
+
required: true
|
|
29
|
+
mysqldump_options:
|
|
30
|
+
type: str
|
|
31
|
+
required: false
|
|
32
|
+
port:
|
|
33
|
+
type: str
|
|
34
|
+
required: false
|
|
35
|
+
charset:
|
|
36
|
+
type: str
|
|
37
|
+
required: false
|
|
38
|
+
exclude:
|
|
39
|
+
type: seq
|
|
40
|
+
required: false
|
|
41
|
+
sequence:
|
|
42
|
+
- type: str
|
|
43
|
+
paths:
|
|
44
|
+
type: map
|
|
45
|
+
required: false
|
|
46
|
+
mapping:
|
|
47
|
+
wp_content:
|
|
48
|
+
wp_config:
|
|
49
|
+
uploads:
|
|
50
|
+
plugins:
|
|
51
|
+
mu_plugins:
|
|
52
|
+
themes:
|
|
53
|
+
languages:
|
|
54
|
+
ssh:
|
|
55
|
+
type: map
|
|
56
|
+
required: false
|
|
57
|
+
mapping:
|
|
58
|
+
host:
|
|
59
|
+
required: true
|
|
60
|
+
user:
|
|
61
|
+
required: false # If host is configured in ~/.ssh/config
|
|
62
|
+
password:
|
|
63
|
+
required: false
|
|
64
|
+
port:
|
|
65
|
+
type: int
|
|
66
|
+
rsync_options:
|
|
67
|
+
gateway:
|
|
68
|
+
type: map
|
|
69
|
+
required: false
|
|
70
|
+
mapping:
|
|
71
|
+
host:
|
|
72
|
+
required: true
|
|
73
|
+
user:
|
|
74
|
+
required: true
|
|
75
|
+
password:
|
|
76
|
+
ftp:
|
|
77
|
+
type: map
|
|
78
|
+
required: false
|
|
79
|
+
mapping:
|
|
80
|
+
user:
|
|
81
|
+
required: true
|
|
82
|
+
password:
|
|
83
|
+
required: true
|
|
84
|
+
host:
|
|
85
|
+
required: true
|
|
86
|
+
passive:
|
|
87
|
+
type: bool
|
|
88
|
+
scheme:
|
data/lib/wordmove/cli.rb
CHANGED
|
@@ -12,6 +12,11 @@ module Wordmove
|
|
|
12
12
|
Wordmove::Generators::Movefile.start
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
desc "doctor", "Do some local configuration and environment checks"
|
|
16
|
+
def doctor
|
|
17
|
+
Wordmove::Doctor.start
|
|
18
|
+
end
|
|
19
|
+
|
|
15
20
|
shared_options = {
|
|
16
21
|
wordpress: { aliases: "-w", type: :boolean },
|
|
17
22
|
uploads: { aliases: "-u", type: :boolean },
|
|
@@ -37,34 +37,14 @@ module Wordmove
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def fetch_movefile(name = nil, start_dir = current_dir)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
else
|
|
43
|
-
Dir["#{File.join(start_dir, name)}{,.yml,.yaml}"]
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
if entries.empty?
|
|
47
|
-
raise MovefileNotFound, "Could not find a valid Movefile" if last_dir?(start_dir)
|
|
48
|
-
return fetch_movefile(name, upper_dir(start_dir))
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
found = entries.first
|
|
52
|
-
logger.task("Using Movefile: #{found}")
|
|
53
|
-
YAML.safe_load(ERB.new(File.read(found)).result, [], [], true)
|
|
40
|
+
movefile = Wordmove::Movefile.new
|
|
41
|
+
movefile.fetch name, start_dir
|
|
54
42
|
end
|
|
55
43
|
|
|
56
44
|
def current_dir
|
|
57
45
|
'.'
|
|
58
46
|
end
|
|
59
47
|
|
|
60
|
-
def last_dir?(directory)
|
|
61
|
-
directory == "/" || File.exist?(File.join(directory, 'wp-config.php'))
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def upper_dir(directory)
|
|
65
|
-
File.expand_path(File.join(directory, '..'))
|
|
66
|
-
end
|
|
67
|
-
|
|
68
48
|
def logger
|
|
69
49
|
Logger.new(STDOUT).tap { |l| l.level = Logger::DEBUG }
|
|
70
50
|
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
module Wordmove
|
|
2
|
+
class Doctor
|
|
3
|
+
def self.start
|
|
4
|
+
banner
|
|
5
|
+
movefile
|
|
6
|
+
mysql
|
|
7
|
+
wpcli
|
|
8
|
+
rsync
|
|
9
|
+
ssh
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.movefile
|
|
13
|
+
movefile_doctor = Wordmove::Doctor::Movefile.new
|
|
14
|
+
movefile_doctor.validate!
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.mysql
|
|
18
|
+
mysql_doctor = Wordmove::Doctor::Mysql.new
|
|
19
|
+
mysql_doctor.check!
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.wpcli
|
|
23
|
+
wpcli_doctor = Wordmove::Doctor::Wpcli.new
|
|
24
|
+
wpcli_doctor.check!
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.rsync
|
|
28
|
+
rsync_doctor = Wordmove::Doctor::Rsync.new
|
|
29
|
+
rsync_doctor.check!
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.ssh
|
|
33
|
+
ssh_doctor = Wordmove::Doctor::Ssh.new
|
|
34
|
+
ssh_doctor.check!
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# rubocop:disable Metrics/MethodLength
|
|
38
|
+
def self.banner
|
|
39
|
+
paint = <<-'ASCII'
|
|
40
|
+
.------------------------.
|
|
41
|
+
| PSYCHIATRIC |
|
|
42
|
+
| HELP 5¢ |
|
|
43
|
+
|________________________|
|
|
44
|
+
|| .-"""--. ||
|
|
45
|
+
|| / \.-. ||
|
|
46
|
+
|| | ._, \ ||
|
|
47
|
+
|| \_/`-' '-.,_/ ||
|
|
48
|
+
|| (_ (' _)') \ ||
|
|
49
|
+
|| /| |\ ||
|
|
50
|
+
|| | \ __ / | ||
|
|
51
|
+
|| \_).,_____,/}/ ||
|
|
52
|
+
__||____;_--'___'/ ( ||
|
|
53
|
+
|\ || (__,\\ \_/------||
|
|
54
|
+
||\||______________________||
|
|
55
|
+
|||| |
|
|
56
|
+
|||| THE DOCTOR |
|
|
57
|
+
\||| IS [IN] _____|
|
|
58
|
+
\|| (______)
|
|
59
|
+
`|___________________//||\\
|
|
60
|
+
//=||=\\
|
|
61
|
+
` `` `
|
|
62
|
+
ASCII
|
|
63
|
+
|
|
64
|
+
puts paint
|
|
65
|
+
end
|
|
66
|
+
# rubocop:enable Metrics/MethodLength
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
module Wordmove
|
|
2
|
+
class Doctor
|
|
3
|
+
class Movefile
|
|
4
|
+
MANDATORY_SECTIONS = %w[global local].freeze
|
|
5
|
+
attr_reader :movefile, :contents, :root_keys
|
|
6
|
+
|
|
7
|
+
def initialize(name = nil, dir = '.')
|
|
8
|
+
@movefile = Wordmove::Movefile.new
|
|
9
|
+
@contents = movefile.fetch(name, dir)
|
|
10
|
+
@root_keys = contents.keys
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def validate!
|
|
14
|
+
MANDATORY_SECTIONS.each do |key|
|
|
15
|
+
movefile.logger.task "Validating movefile section: #{key}"
|
|
16
|
+
validate_mandatory_section(key)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
root_keys.each do |remote|
|
|
20
|
+
movefile.logger.task "Validating movefile section: #{remote}"
|
|
21
|
+
validate_remote_section(remote)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def validate_section(key)
|
|
28
|
+
validator = validator_for(key)
|
|
29
|
+
|
|
30
|
+
errors = validator.validate(contents[key])
|
|
31
|
+
|
|
32
|
+
if errors&.empty?
|
|
33
|
+
movefile.logger.success "Formal validation passed"
|
|
34
|
+
|
|
35
|
+
return true
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
errors.each do |e|
|
|
39
|
+
movefile.logger.error "[#{e.path}] #{e.message}"
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def validate_mandatory_section(key)
|
|
44
|
+
return false unless root_keys.delete(key) do
|
|
45
|
+
movefile.logger.error "#{key} section not present"
|
|
46
|
+
|
|
47
|
+
false
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
validate_section(key)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def validate_remote_section(key)
|
|
54
|
+
return false unless validate_protocol_presence(contents[key].keys)
|
|
55
|
+
|
|
56
|
+
validate_section(key)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def validate_protocol_presence(keys)
|
|
60
|
+
return true if keys.include?('ssh') || keys.include?('ftp')
|
|
61
|
+
|
|
62
|
+
movefile.logger.error "This remote has not ssh nor ftp protocol defined"
|
|
63
|
+
|
|
64
|
+
false
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def validator_for(key)
|
|
68
|
+
suffix = if MANDATORY_SECTIONS.include? key
|
|
69
|
+
key
|
|
70
|
+
else
|
|
71
|
+
'remote'
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
schema = Kwalify::Yaml.load_file("#{__dir__}/../assets/wordmove_schema_#{suffix}.yml")
|
|
75
|
+
|
|
76
|
+
Kwalify::Validator.new(schema)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
module Wordmove
|
|
2
|
+
class Doctor
|
|
3
|
+
class Mysql
|
|
4
|
+
attr_reader :config, :logger
|
|
5
|
+
|
|
6
|
+
def initialize(movefile_name = nil, movefile_dir = '.')
|
|
7
|
+
@config = Wordmove::Movefile.new.fetch(movefile_name, movefile_dir)["local"]["database"]
|
|
8
|
+
@logger = Logger.new(STDOUT).tap { |l| l.level = Logger::INFO }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def check!
|
|
12
|
+
logger.task "Checking local database commands and connection"
|
|
13
|
+
|
|
14
|
+
mysql_client_doctor
|
|
15
|
+
mysqldump_doctor
|
|
16
|
+
mysql_server_doctor
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def mysql_client_doctor
|
|
22
|
+
if system("which mysql", out: File::NULL)
|
|
23
|
+
logger.success "`mysql` command is in $PATH"
|
|
24
|
+
else
|
|
25
|
+
logger.error "`mysql` command is not in $PATH"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def mysqldump_doctor
|
|
30
|
+
if system("which mysqldump", out: File::NULL)
|
|
31
|
+
logger.success "`mysqldump` command is in $PATH"
|
|
32
|
+
else
|
|
33
|
+
logger.error "`mysqldump` command is not in $PATH"
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def mysql_server_doctor
|
|
38
|
+
command = ["mysql"]
|
|
39
|
+
command << "-u #{config['user']}"
|
|
40
|
+
command << "-p#{config['password']}" unless config['password'].blank?
|
|
41
|
+
command << "-h #{config['host']}"
|
|
42
|
+
command << "-e'QUIT'"
|
|
43
|
+
command = command.join(" ")
|
|
44
|
+
|
|
45
|
+
if system(command, out: File::NULL, err: File::NULL)
|
|
46
|
+
logger.success "Successfully connected to the database"
|
|
47
|
+
else
|
|
48
|
+
logger.error <<~LONG
|
|
49
|
+
We can't connect to the database using credentials
|
|
50
|
+
specified in the Movefile. Double check them or try
|
|
51
|
+
to debug your system configuration.
|
|
52
|
+
|
|
53
|
+
The command used to test was:
|
|
54
|
+
|
|
55
|
+
#{command}
|
|
56
|
+
LONG
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Wordmove
|
|
2
|
+
class Doctor
|
|
3
|
+
class Rsync
|
|
4
|
+
attr_reader :logger
|
|
5
|
+
|
|
6
|
+
def initialize
|
|
7
|
+
@logger = Logger.new(STDOUT).tap { |l| l.level = Logger::INFO }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def check!
|
|
11
|
+
logger.task "Checking rsync"
|
|
12
|
+
|
|
13
|
+
if (version = /\d\.\d.\d/.match(`rsync --version | head -n1`)[0])
|
|
14
|
+
logger.success "rsync is installed at version #{version}"
|
|
15
|
+
else
|
|
16
|
+
logger.error "rsync not found. And belive me: it's really strange it's not there."
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Wordmove
|
|
2
|
+
class Doctor
|
|
3
|
+
class Ssh
|
|
4
|
+
attr_reader :logger
|
|
5
|
+
|
|
6
|
+
def initialize
|
|
7
|
+
@logger = Logger.new(STDOUT).tap { |l| l.level = Logger::INFO }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def check!
|
|
11
|
+
logger.task "Checking SSH client"
|
|
12
|
+
|
|
13
|
+
if system('which ssh', out: File::NULL, err: File::NULL)
|
|
14
|
+
logger.success "SSH command found"
|
|
15
|
+
else
|
|
16
|
+
logger.error "SSH command not found. And belive me: it's really strange it's not there."
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Wordmove
|
|
2
|
+
class Doctor
|
|
3
|
+
class Wpcli
|
|
4
|
+
attr_reader :logger
|
|
5
|
+
|
|
6
|
+
def initialize
|
|
7
|
+
@logger = Logger.new(STDOUT).tap { |l| l.level = Logger::INFO }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def check!
|
|
11
|
+
logger.task "Checking local wp-cli installation"
|
|
12
|
+
|
|
13
|
+
if system('wp cli check-update --quiet')
|
|
14
|
+
logger.success "wp-cli is correctly installed and up to date"
|
|
15
|
+
else
|
|
16
|
+
logger.error "wp-cli is not installed (or not in your $PATH) or not up to date"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
data/lib/wordmove/logger.rb
CHANGED
|
@@ -22,6 +22,10 @@ module Wordmove
|
|
|
22
22
|
puts " error".red + " | ".black + message.to_s
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
def success(message)
|
|
26
|
+
puts " success".green + " | ".black + message.to_s
|
|
27
|
+
end
|
|
28
|
+
|
|
25
29
|
def debug(message)
|
|
26
30
|
puts " debug".magenta + " | ".black + message.to_s
|
|
27
31
|
end
|
|
@@ -30,7 +34,7 @@ module Wordmove
|
|
|
30
34
|
|
|
31
35
|
def padding_length(line)
|
|
32
36
|
result = MAX_LINE - line.length
|
|
33
|
-
result
|
|
37
|
+
result.positive? ? result : 0
|
|
34
38
|
end
|
|
35
39
|
end
|
|
36
40
|
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Wordmove
|
|
2
|
+
class Movefile
|
|
3
|
+
attr_reader :logger
|
|
4
|
+
|
|
5
|
+
def initialize
|
|
6
|
+
@logger = Logger.new(STDOUT).tap { |l| l.level = Logger::DEBUG }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def fetch(name = nil, start_dir = current_dir)
|
|
10
|
+
entries = if name.nil?
|
|
11
|
+
Dir["#{File.join(start_dir, '{M,m}ovefile')}{,.yml,.yaml}"]
|
|
12
|
+
else
|
|
13
|
+
Dir["#{File.join(start_dir, name)}{,.yml,.yaml}"]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
if entries.empty?
|
|
17
|
+
raise MovefileNotFound, "Could not find a valid Movefile" if last_dir?(start_dir)
|
|
18
|
+
return fetch(name, upper_dir(start_dir))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
found = entries.first
|
|
22
|
+
logger.task("Using Movefile: #{found}")
|
|
23
|
+
YAML.safe_load(ERB.new(File.read(found)).result, [], [], true)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def last_dir?(directory)
|
|
29
|
+
directory == "/" || File.exist?(File.join(directory, 'wp-config.php'))
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def upper_dir(directory)
|
|
33
|
+
File.expand_path(File.join(directory, '..'))
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def current_dir
|
|
37
|
+
'.'
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
data/lib/wordmove/version.rb
CHANGED
data/wordmove.gemspec
CHANGED
|
@@ -29,20 +29,21 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
30
30
|
spec.require_paths = ["lib"]
|
|
31
31
|
|
|
32
|
-
spec.add_runtime_dependency "colorize", "~> 0.8.1"
|
|
33
|
-
spec.add_runtime_dependency "thor", "~> 0.19.4"
|
|
34
32
|
spec.add_runtime_dependency "activesupport", '~> 5.1', '>= 5.1.1'
|
|
33
|
+
spec.add_runtime_dependency "colorize", "~> 0.8.1"
|
|
34
|
+
spec.add_runtime_dependency "kwalify", "~> 0"
|
|
35
35
|
spec.add_runtime_dependency "photocopier", "~> 1.1", ">= 1.1.3"
|
|
36
|
+
spec.add_runtime_dependency "thor", "~> 0.19.4"
|
|
36
37
|
|
|
37
38
|
spec.required_ruby_version = "~> 2.4.0"
|
|
38
39
|
|
|
39
40
|
spec.add_development_dependency "bundler", "~> 1.14", ">= 1.14.6"
|
|
41
|
+
spec.add_development_dependency "priscilla", "~> 1.0"
|
|
42
|
+
spec.add_development_dependency "pry-byebug", "~> 3.1"
|
|
40
43
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
41
44
|
spec.add_development_dependency "rspec", "~> 3.3"
|
|
45
|
+
spec.add_development_dependency "rubocop", "~> 0.51.0"
|
|
42
46
|
spec.add_development_dependency "simplecov", "~> 0.9"
|
|
43
|
-
spec.add_development_dependency "pry-byebug", "~> 3.1"
|
|
44
|
-
spec.add_development_dependency "priscilla", "~> 1.0"
|
|
45
|
-
spec.add_development_dependency "rubocop", "~> 0.49.0"
|
|
46
47
|
|
|
47
48
|
spec.post_install_message = <<-RAINBOW
|
|
48
49
|
Starting from 2.1.0 you'll need to add the global section in your movefile.yml:
|
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: 2.
|
|
4
|
+
version: 2.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stefano Verna
|
|
@@ -12,56 +12,56 @@ authors:
|
|
|
12
12
|
autorequire:
|
|
13
13
|
bindir: exe
|
|
14
14
|
cert_chain: []
|
|
15
|
-
date: 2017-
|
|
15
|
+
date: 2017-12-09 00:00:00.000000000 Z
|
|
16
16
|
dependencies:
|
|
17
17
|
- !ruby/object:Gem::Dependency
|
|
18
|
-
name:
|
|
18
|
+
name: activesupport
|
|
19
19
|
requirement: !ruby/object:Gem::Requirement
|
|
20
20
|
requirements:
|
|
21
21
|
- - "~>"
|
|
22
22
|
- !ruby/object:Gem::Version
|
|
23
|
-
version:
|
|
23
|
+
version: '5.1'
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 5.1.1
|
|
24
27
|
type: :runtime
|
|
25
28
|
prerelease: false
|
|
26
29
|
version_requirements: !ruby/object:Gem::Requirement
|
|
27
30
|
requirements:
|
|
28
31
|
- - "~>"
|
|
29
32
|
- !ruby/object:Gem::Version
|
|
30
|
-
version:
|
|
33
|
+
version: '5.1'
|
|
34
|
+
- - ">="
|
|
35
|
+
- !ruby/object:Gem::Version
|
|
36
|
+
version: 5.1.1
|
|
31
37
|
- !ruby/object:Gem::Dependency
|
|
32
|
-
name:
|
|
38
|
+
name: colorize
|
|
33
39
|
requirement: !ruby/object:Gem::Requirement
|
|
34
40
|
requirements:
|
|
35
41
|
- - "~>"
|
|
36
42
|
- !ruby/object:Gem::Version
|
|
37
|
-
version: 0.
|
|
43
|
+
version: 0.8.1
|
|
38
44
|
type: :runtime
|
|
39
45
|
prerelease: false
|
|
40
46
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
47
|
requirements:
|
|
42
48
|
- - "~>"
|
|
43
49
|
- !ruby/object:Gem::Version
|
|
44
|
-
version: 0.
|
|
50
|
+
version: 0.8.1
|
|
45
51
|
- !ruby/object:Gem::Dependency
|
|
46
|
-
name:
|
|
52
|
+
name: kwalify
|
|
47
53
|
requirement: !ruby/object:Gem::Requirement
|
|
48
54
|
requirements:
|
|
49
55
|
- - "~>"
|
|
50
56
|
- !ruby/object:Gem::Version
|
|
51
|
-
version: '
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: 5.1.1
|
|
57
|
+
version: '0'
|
|
55
58
|
type: :runtime
|
|
56
59
|
prerelease: false
|
|
57
60
|
version_requirements: !ruby/object:Gem::Requirement
|
|
58
61
|
requirements:
|
|
59
62
|
- - "~>"
|
|
60
63
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
62
|
-
- - ">="
|
|
63
|
-
- !ruby/object:Gem::Version
|
|
64
|
-
version: 5.1.1
|
|
64
|
+
version: '0'
|
|
65
65
|
- !ruby/object:Gem::Dependency
|
|
66
66
|
name: photocopier
|
|
67
67
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -82,6 +82,20 @@ dependencies:
|
|
|
82
82
|
- - ">="
|
|
83
83
|
- !ruby/object:Gem::Version
|
|
84
84
|
version: 1.1.3
|
|
85
|
+
- !ruby/object:Gem::Dependency
|
|
86
|
+
name: thor
|
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
|
88
|
+
requirements:
|
|
89
|
+
- - "~>"
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
version: 0.19.4
|
|
92
|
+
type: :runtime
|
|
93
|
+
prerelease: false
|
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
95
|
+
requirements:
|
|
96
|
+
- - "~>"
|
|
97
|
+
- !ruby/object:Gem::Version
|
|
98
|
+
version: 0.19.4
|
|
85
99
|
- !ruby/object:Gem::Dependency
|
|
86
100
|
name: bundler
|
|
87
101
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -103,89 +117,89 @@ dependencies:
|
|
|
103
117
|
- !ruby/object:Gem::Version
|
|
104
118
|
version: 1.14.6
|
|
105
119
|
- !ruby/object:Gem::Dependency
|
|
106
|
-
name:
|
|
120
|
+
name: priscilla
|
|
107
121
|
requirement: !ruby/object:Gem::Requirement
|
|
108
122
|
requirements:
|
|
109
123
|
- - "~>"
|
|
110
124
|
- !ruby/object:Gem::Version
|
|
111
|
-
version: '
|
|
125
|
+
version: '1.0'
|
|
112
126
|
type: :development
|
|
113
127
|
prerelease: false
|
|
114
128
|
version_requirements: !ruby/object:Gem::Requirement
|
|
115
129
|
requirements:
|
|
116
130
|
- - "~>"
|
|
117
131
|
- !ruby/object:Gem::Version
|
|
118
|
-
version: '
|
|
132
|
+
version: '1.0'
|
|
119
133
|
- !ruby/object:Gem::Dependency
|
|
120
|
-
name:
|
|
134
|
+
name: pry-byebug
|
|
121
135
|
requirement: !ruby/object:Gem::Requirement
|
|
122
136
|
requirements:
|
|
123
137
|
- - "~>"
|
|
124
138
|
- !ruby/object:Gem::Version
|
|
125
|
-
version: '3.
|
|
139
|
+
version: '3.1'
|
|
126
140
|
type: :development
|
|
127
141
|
prerelease: false
|
|
128
142
|
version_requirements: !ruby/object:Gem::Requirement
|
|
129
143
|
requirements:
|
|
130
144
|
- - "~>"
|
|
131
145
|
- !ruby/object:Gem::Version
|
|
132
|
-
version: '3.
|
|
146
|
+
version: '3.1'
|
|
133
147
|
- !ruby/object:Gem::Dependency
|
|
134
|
-
name:
|
|
148
|
+
name: rake
|
|
135
149
|
requirement: !ruby/object:Gem::Requirement
|
|
136
150
|
requirements:
|
|
137
151
|
- - "~>"
|
|
138
152
|
- !ruby/object:Gem::Version
|
|
139
|
-
version: '0
|
|
153
|
+
version: '10.0'
|
|
140
154
|
type: :development
|
|
141
155
|
prerelease: false
|
|
142
156
|
version_requirements: !ruby/object:Gem::Requirement
|
|
143
157
|
requirements:
|
|
144
158
|
- - "~>"
|
|
145
159
|
- !ruby/object:Gem::Version
|
|
146
|
-
version: '0
|
|
160
|
+
version: '10.0'
|
|
147
161
|
- !ruby/object:Gem::Dependency
|
|
148
|
-
name:
|
|
162
|
+
name: rspec
|
|
149
163
|
requirement: !ruby/object:Gem::Requirement
|
|
150
164
|
requirements:
|
|
151
165
|
- - "~>"
|
|
152
166
|
- !ruby/object:Gem::Version
|
|
153
|
-
version: '3.
|
|
167
|
+
version: '3.3'
|
|
154
168
|
type: :development
|
|
155
169
|
prerelease: false
|
|
156
170
|
version_requirements: !ruby/object:Gem::Requirement
|
|
157
171
|
requirements:
|
|
158
172
|
- - "~>"
|
|
159
173
|
- !ruby/object:Gem::Version
|
|
160
|
-
version: '3.
|
|
174
|
+
version: '3.3'
|
|
161
175
|
- !ruby/object:Gem::Dependency
|
|
162
|
-
name:
|
|
176
|
+
name: rubocop
|
|
163
177
|
requirement: !ruby/object:Gem::Requirement
|
|
164
178
|
requirements:
|
|
165
179
|
- - "~>"
|
|
166
180
|
- !ruby/object:Gem::Version
|
|
167
|
-
version:
|
|
181
|
+
version: 0.51.0
|
|
168
182
|
type: :development
|
|
169
183
|
prerelease: false
|
|
170
184
|
version_requirements: !ruby/object:Gem::Requirement
|
|
171
185
|
requirements:
|
|
172
186
|
- - "~>"
|
|
173
187
|
- !ruby/object:Gem::Version
|
|
174
|
-
version:
|
|
188
|
+
version: 0.51.0
|
|
175
189
|
- !ruby/object:Gem::Dependency
|
|
176
|
-
name:
|
|
190
|
+
name: simplecov
|
|
177
191
|
requirement: !ruby/object:Gem::Requirement
|
|
178
192
|
requirements:
|
|
179
193
|
- - "~>"
|
|
180
194
|
- !ruby/object:Gem::Version
|
|
181
|
-
version: 0.
|
|
195
|
+
version: '0.9'
|
|
182
196
|
type: :development
|
|
183
197
|
prerelease: false
|
|
184
198
|
version_requirements: !ruby/object:Gem::Requirement
|
|
185
199
|
requirements:
|
|
186
200
|
- - "~>"
|
|
187
201
|
- !ruby/object:Gem::Version
|
|
188
|
-
version: 0.
|
|
202
|
+
version: '0.9'
|
|
189
203
|
description: Wordmove deploys your WordPress websites at the speed of light.
|
|
190
204
|
email:
|
|
191
205
|
- stefano.verna@welaika.com
|
|
@@ -210,25 +224,48 @@ files:
|
|
|
210
224
|
- README.mdown
|
|
211
225
|
- Rakefile
|
|
212
226
|
- assets/images/wordmove.png
|
|
227
|
+
- bin/bundler
|
|
228
|
+
- bin/byebug
|
|
229
|
+
- bin/coderay
|
|
213
230
|
- bin/console
|
|
231
|
+
- bin/htmldiff
|
|
232
|
+
- bin/kwalify
|
|
233
|
+
- bin/ldiff
|
|
234
|
+
- bin/pry
|
|
214
235
|
- bin/rake
|
|
215
236
|
- bin/rspec
|
|
237
|
+
- bin/rubocop
|
|
238
|
+
- bin/ruby-parse
|
|
239
|
+
- bin/ruby-rewrite
|
|
240
|
+
- bin/rumoji
|
|
216
241
|
- bin/setup
|
|
242
|
+
- bin/thor
|
|
243
|
+
- bin/wordmove
|
|
217
244
|
- exe/wordmove
|
|
218
245
|
- lib/wordmove.rb
|
|
219
246
|
- lib/wordmove/assets/dump.php.erb
|
|
220
247
|
- lib/wordmove/assets/import.php.erb
|
|
248
|
+
- lib/wordmove/assets/wordmove_schema_global.yml
|
|
249
|
+
- lib/wordmove/assets/wordmove_schema_local.yml
|
|
250
|
+
- lib/wordmove/assets/wordmove_schema_remote.yml
|
|
221
251
|
- lib/wordmove/cli.rb
|
|
222
252
|
- lib/wordmove/deployer/base.rb
|
|
223
253
|
- lib/wordmove/deployer/ftp.rb
|
|
224
254
|
- lib/wordmove/deployer/ssh.rb
|
|
225
255
|
- lib/wordmove/deployer/ssh/default_sql_adapter.rb
|
|
226
256
|
- lib/wordmove/deployer/ssh/wpcli_sql_adapter.rb
|
|
257
|
+
- lib/wordmove/doctor.rb
|
|
258
|
+
- lib/wordmove/doctor/movefile.rb
|
|
259
|
+
- lib/wordmove/doctor/mysql.rb
|
|
260
|
+
- lib/wordmove/doctor/rsync.rb
|
|
261
|
+
- lib/wordmove/doctor/ssh.rb
|
|
262
|
+
- lib/wordmove/doctor/wpcli.rb
|
|
227
263
|
- lib/wordmove/exceptions.rb
|
|
228
264
|
- lib/wordmove/generators/movefile.rb
|
|
229
265
|
- lib/wordmove/generators/movefile.yml
|
|
230
266
|
- lib/wordmove/generators/movefile_adapter.rb
|
|
231
267
|
- lib/wordmove/logger.rb
|
|
268
|
+
- lib/wordmove/movefile.rb
|
|
232
269
|
- lib/wordmove/sql_adapter/default.rb
|
|
233
270
|
- lib/wordmove/sql_adapter/wpcli.rb
|
|
234
271
|
- lib/wordmove/version.rb
|