wslave 0.2.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f166ebdd86359e239e14471ae7eabe907ac34adae44529e1e420f437feee2a32
4
- data.tar.gz: 42e606369d33accbaf8fa6a00428547b45c340d437bfb543af674dbe9e05f2bc
3
+ metadata.gz: d9097b3fe47c8f112323d69a91628033a8fd1fe6f1d79cadd3070b49d1b66f23
4
+ data.tar.gz: 5286c213c8943c4abe5fe891c48bb52bc6221a0bd3e06421a1726765b7e468d9
5
5
  SHA512:
6
- metadata.gz: 7ed2dad207e47644c602cf9017c465166dd504bd054d1f0f4be37f8c455fd1177a4e455ea981f8d49c1ca6fa251b8388f2ab1f1866be1d37a2ba4c432d730d3d
7
- data.tar.gz: 6d2333831378f71024e36f56fc960260369427c42f7b93404ff4901d8f8878310f8884815155ab9aac7e43aa41d8b33a4db7db2497e55347516c9840d6c6b31b
6
+ metadata.gz: 575e6219da5b439cf6f3079f2e4adb7b54c841f705285620e7ae3dec884dd6e5360e8c20b086046fcdcc5304a42245b59f03c0334de389cc352d6f34bacb1fcd
7
+ data.tar.gz: 47d48b9b1f032b04c4965f13212e20cfb47b846622db763932472904d4e2015c52f591cbb954203fcac82524cff9516f59069033d010ee9172a25a60901f1418
data/base/Rakefile CHANGED
@@ -3,6 +3,11 @@ require 'yaml'
3
3
 
4
4
  @opts = YAML.load_file('config/definitions.yml')
5
5
 
6
+ desc "Print simple instructions."
7
+ task :default do
8
+ puts 'Please call rake with a taks name, such as "db:dev", or list tasks with "rake -T".'
9
+ end
10
+
6
11
  def rm_dbfile(profile)
7
12
  puts "Deleting db/#{profile}/wordpress.sql"
8
13
  FileUtils.rm("db/#{profile}/wordpress.sql") if File.exist?("db/#{profile}/wordpress.sql")
@@ -33,19 +33,19 @@ server {
33
33
  log_not_found off;
34
34
  }
35
35
 
36
- location ~- \.(blade\.php)$ {
36
+ location ~* \.(blade\.php)$ {
37
37
  deny all;
38
38
  }
39
39
 
40
- location ~- composer\.(json|lock)$ {
40
+ location ~* composer\.(json|lock)$ {
41
41
  deny all;
42
42
  }
43
43
 
44
- location ~- package(-lock)?\.json$ {
44
+ location ~* package(-lock)?\.json$ {
45
45
  deny all;
46
46
  }
47
47
 
48
- location ~- yarn\.lock$ {
48
+ location ~* yarn\.lock$ {
49
49
  deny all;
50
50
  }
51
51
  }
@@ -1,5 +1,5 @@
1
1
  # config valid only for current version of Capistrano
2
- lock "3.14.1"
2
+ lock "3.16.0"
3
3
 
4
4
  require 'yaml'
5
5
  opts = YAML.load_file('config/definitions.yml')
Binary file
@@ -14,14 +14,16 @@ site_fqdn = opts['deployer']['fqdn']['production']
14
14
  disable_rsync = (opts.include?('options') && opts['options'].include?('rsync_enabled') &&
15
15
  opts['options']['rsync_enabled'] == false)
16
16
 
17
- set :branch, fetch(opts['deployer']['branch']['production'], 'master')
17
+ if (opts['deployer'].include?('branch') && opts['deployer']['branch'].include?('production'))
18
+ set :branch, opts['deployer']['branch']['production']
19
+ end
18
20
 
19
21
  role :web, "#{deploy_user}@#{host_addr}"
20
22
 
21
23
  set :tmp_dir, "#{multisite_root}/tmp"
22
24
  deploy_path = "#{multisite_root}/#{site_fqdn}"
23
25
 
24
- set :linked_dirs, %w{public/wp-content/uploads public/wordpress public/wp-content/upgrade public/wp-content/plugins tmp}
26
+ set :linked_dirs, %w{public/wp-content/uploads public/wordpress public/wp-content/upgrade public/wp-content/plugins public/data tmp}
25
27
  set :linked_files, %w{public/wp-config.php}
26
28
 
27
29
  set :deploy_to, deploy_path
@@ -80,6 +82,20 @@ namespace :deploy do
80
82
  end
81
83
  end
82
84
 
85
+ desc 'Syncs the static data directory with rsync'
86
+ task :sync_static_data do
87
+ on roles(:web) do
88
+ `rsync -avzPhu --delete ./public/data/ #{deploy_user}@#{host_addr}:#{deploy_path}/shared/public/data/`
89
+ end
90
+ end
91
+
92
+ desc 'Uploads the static data directory'
93
+ task :upload_static_data do
94
+ on roles(:web) do
95
+ upload! './public/data', "#{deploy_path}/shared/public/data/", recursive: true
96
+ end
97
+ end
98
+
83
99
  desc 'Builds and Syncs the project Sage theme'
84
100
  task :sync_sage_theme do
85
101
  on roles(:web) do
@@ -89,8 +105,8 @@ namespace :deploy do
89
105
  puts "Couldn't find a Sage theme for this project."
90
106
  else
91
107
  wss.production()
92
- `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/vendor #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/vendor`
93
- `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/dist #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/dist`
108
+ `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/vendor/ #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/vendor/`
109
+ `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/dist/ #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/dist/`
94
110
  end
95
111
  end
96
112
  end
@@ -104,8 +120,8 @@ namespace :deploy do
104
120
  puts "Couldn't find a Sage theme for this project."
105
121
  else
106
122
  wss.production()
107
- upload! "./public/wp-content/themes/#{sage_theme_name}/vendor", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
108
- upload! "./public/wp-content/themes/#{sage_theme_name}/dist", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
123
+ upload! "./public/wp-content/themes/#{sage_theme_name}/vendor/", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
124
+ upload! "./public/wp-content/themes/#{sage_theme_name}/dist/", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
109
125
  end
110
126
  end
111
127
  end
@@ -192,15 +208,17 @@ namespace :deploy do
192
208
  invoke('deploy:upload_wp')
193
209
  invoke('deploy:upload_plugins')
194
210
  invoke('deploy:upload_uploads')
211
+ invoke('deploy:upload_static_data')
195
212
  else
196
213
  invoke('deploy:sync_wp')
197
214
  invoke('deploy:sync_plugins')
198
215
  invoke('deploy:sync_uploads')
216
+ invoke('deploy:sync_static_data')
199
217
  end
200
218
  invoke('deploy')
201
- invoke('sage')
202
219
  invoke('db:seed')
203
220
  invoke('deploy:chikan')
221
+ invoke('deploy:sage')
204
222
  invoke('deploy:set_permissions')
205
223
  end
206
224
  end
@@ -14,14 +14,16 @@ site_fqdn = opts['deployer']['fqdn']['staging']
14
14
  disable_rsync = (opts.include?('options') && opts['options'].include?('rsync_enabled') &&
15
15
  opts['options']['rsync_enabled'] == false)
16
16
 
17
- set :branch, fetch(opts['deployer']['branch']['staging'], 'master')
17
+ if (opts['deployer'].include?('branch') && opts['deployer']['branch'].include?('staging'))
18
+ set :branch, opts['deployer']['branch']['staging']
19
+ end
18
20
 
19
21
  role :web, "#{deploy_user}@#{host_addr}"
20
22
 
21
23
  set :tmp_dir, "#{multisite_root}/tmp"
22
24
  deploy_path = "#{multisite_root}/#{site_fqdn}"
23
25
 
24
- set :linked_dirs, %w{public/wp-content/uploads public/wordpress public/wp-content/upgrade public/wp-content/plugins tmp}
26
+ set :linked_dirs, %w{public/wp-content/uploads public/wordpress public/wp-content/upgrade public/wp-content/plugins public/data tmp}
25
27
  set :linked_files, %w{public/wp-config.php}
26
28
 
27
29
  set :deploy_to, deploy_path
@@ -30,6 +32,7 @@ namespace :deploy do
30
32
  desc "Generate wp-config.php for profile"
31
33
  task :wp_config do
32
34
  on roles(:web) do
35
+ invoke 'deploy:check:make_linked_dirs'
33
36
  require_relative '../deploy-tools/gen-wp-config'
34
37
  FileUtils.mkdir('./tmp') unless Dir.exist?('./tmp')
35
38
  GenerateWPConfig('staging', './tmp')
@@ -79,6 +82,20 @@ namespace :deploy do
79
82
  end
80
83
  end
81
84
 
85
+ desc 'Syncs the static data directory with rsync'
86
+ task :sync_static_data do
87
+ on roles(:web) do
88
+ `rsync -avzPhu --delete ./public/data/ #{deploy_user}@#{host_addr}:#{deploy_path}/shared/public/data/`
89
+ end
90
+ end
91
+
92
+ desc 'Uploads the static data directory'
93
+ task :upload_static_data do
94
+ on roles(:web) do
95
+ upload! './public/data', "#{deploy_path}/shared/public/data/", recursive: true
96
+ end
97
+ end
98
+
82
99
  desc 'Builds and Syncs the project Sage theme'
83
100
  task :sync_sage_theme do
84
101
  on roles(:web) do
@@ -88,8 +105,8 @@ namespace :deploy do
88
105
  puts "Couldn't find a Sage theme for this project."
89
106
  else
90
107
  wss.production()
91
- `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/vendor #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/vendor`
92
- `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/dist #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/dist`
108
+ `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/vendor/ #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/vendor/`
109
+ `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/dist/ #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/dist/`
93
110
  end
94
111
  end
95
112
  end
@@ -103,8 +120,8 @@ namespace :deploy do
103
120
  puts "Couldn't find a Sage theme for this project."
104
121
  else
105
122
  wss.production()
106
- upload! "./public/wp-content/themes/#{sage_theme_name}/vendor", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
107
- upload! "./public/wp-content/themes/#{sage_theme_name}/dist", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
123
+ upload! "./public/wp-content/themes/#{sage_theme_name}/vendor/", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
124
+ upload! "./public/wp-content/themes/#{sage_theme_name}/dist/", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
108
125
  end
109
126
  end
110
127
  end
@@ -191,15 +208,17 @@ namespace :deploy do
191
208
  invoke('deploy:upload_wp')
192
209
  invoke('deploy:upload_plugins')
193
210
  invoke('deploy:upload_uploads')
211
+ invoke('deploy:upload_static_data')
194
212
  else
195
213
  invoke('deploy:sync_wp')
196
214
  invoke('deploy:sync_plugins')
197
215
  invoke('deploy:sync_uploads')
216
+ invoke('deploy:sync_static_data')
198
217
  end
199
218
  invoke('deploy')
200
- invoke('sage')
201
219
  invoke('db:seed')
202
220
  invoke('deploy:chikan')
221
+ invoke('deploy:sage')
203
222
  invoke('deploy:set_permissions')
204
223
  end
205
224
  end
@@ -1,8 +1,8 @@
1
- version: '3'
1
+ version: '3.7'
2
2
 
3
3
  services:
4
4
  db:
5
- image: mariadb:10.5.4-focal
5
+ image: mariadb:10.5-focal
6
6
  volumes:
7
7
  - "./db/dev:/db"
8
8
  - "./db/active:/docker-entrypoint-initdb.d"
@@ -1,4 +1,4 @@
1
- FROM php:7.4-apache
1
+ FROM php:8.0-apache
2
2
 
3
3
  RUN a2enmod rewrite
4
4
  RUN service apache2 restart
@@ -3,9 +3,14 @@ FROM ubuntu:20.04
3
3
  COPY nginx.vhost /etc/nginx/sites-enabled/default
4
4
  COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
5
5
 
6
- RUN apt-get update
6
+ RUN apt-get update && apt-get dist-upgrade -y
7
7
  RUN DEBIAN_FRONTEND="noninteractive" apt-get -y install tzdata
8
- RUN apt-get install -y nginx php-fpm php-mysql \
8
+ # NOTE: When the PHP FPM version changes, you MUST update the
9
+ # version named in base/docker/nginx/supervisord.conf and
10
+ # in base/docker/nginx/nginx.vhost, then rebuild the nweb image!
11
+ RUN apt-get install -y nginx php7.4-fpm php-mysql \
12
+ php7.4-mbstring php7.4-curl php7.4-dom php7.4-exif php7.4-fileinfo \
13
+ php7.4-json php7.4-imagick php7.4-xml php7.4-zip php7.4-iconv \
9
14
  libpng-dev libjpeg-dev \
10
15
  mariadb-client mariadb-common \
11
16
  supervisor curl
@@ -1,48 +1,48 @@
1
1
  server {
2
- listen 80;
3
- listen [::]:80;
2
+ listen 80;
3
+ listen [::]:80;
4
4
 
5
- server_name testing;
5
+ server_name testing;
6
6
 
7
- root /var/www/html;
7
+ root /var/www/html;
8
8
 
9
- index index.php;
9
+ index index.php;
10
10
 
11
- location / {
12
- rewrite ^/(wp-(admin|includes).*) /wordpress/$1 last;
11
+ location / {
12
+ rewrite ^/(wp-(admin|includes).*) /wordpress/$1 last;
13
13
 
14
- rewrite ^/$ /wordpress/index.php last;
14
+ rewrite ^/$ /wordpress/index.php last;
15
15
 
16
- location ~ \.php {
17
- if ($request_uri !~* "/wp-config.php") {
18
- rewrite ^/wp-(.*)\.php$ /wordpress/wp-$1.php last;
19
- }
20
- rewrite ^/index\.php$ /wordpress/index.php last;
21
- rewrite ^/wp-login\.php$ /hello.php last;
22
- include snippets/fastcgi-php.conf;
23
- fastcgi_pass unix:/run/php/php7.2-fpm.sock;
24
- }
16
+ location ~ \.php {
17
+ if ($request_uri !~* "/wp-config.php") {
18
+ rewrite ^/wp-(.*)\.php$ /wordpress/wp-$1.php last;
19
+ }
20
+ rewrite ^/index\.php$ /wordpress/index.php last;
21
+ rewrite ^/wp-login\.php$ /hello.php last;
22
+ include snippets/fastcgi-php.conf;
23
+ fastcgi_pass unix:/run/php/php7.4-fpm.sock;
25
24
  }
25
+ }
26
26
 
27
- location ~ /\. {
28
- deny all;
29
- access_log off;
30
- log_not_found off;
31
- }
27
+ location ~ /\. {
28
+ deny all;
29
+ access_log off;
30
+ log_not_found off;
31
+ }
32
32
 
33
- location ~- \.(blade\.php)$ {
33
+ location ~* \.(blade\.php)$ {
34
34
  deny all;
35
35
  }
36
36
 
37
- location ~- composer\.(json|lock)$ {
37
+ location ~* composer\.(json|lock)$ {
38
38
  deny all;
39
39
  }
40
40
 
41
- location ~- package(-lock)?\.json$ {
41
+ location ~* package(-lock)?\.json$ {
42
42
  deny all;
43
43
  }
44
44
 
45
- location ~- yarn\.lock$ {
45
+ location ~* yarn\.lock$ {
46
46
  deny all;
47
47
  }
48
48
  }
@@ -5,7 +5,7 @@ logfile_maxbytes=0
5
5
  pidfile=/run/supervisord.pid
6
6
 
7
7
  [program:php-fpm]
8
- command=php-fpm7.2 -F
8
+ command=php-fpm7.4 -F
9
9
  stdout_logfile=/dev/stdout
10
10
  stdout_logfile_maxbytes=0
11
11
  stderr_logfile=/dev/stderr
data/bin/wslave CHANGED
@@ -8,6 +8,13 @@ class WSlaveCLI < Thor
8
8
  true
9
9
  end
10
10
 
11
+ desc 'version', "Prints the version of the installed WSlave"
12
+ def version()
13
+ require 'rubygems'
14
+ spec = Gem::Specification::load("#{__dir__}/../wslave.gemspec")
15
+ puts spec.version
16
+ end
17
+
11
18
  desc 'new [APP_PATH]', "Generate a new app at APP_PATH"
12
19
  long_desc "Creates a new application in the current directory or in the specificed path."
13
20
  option :version, default: '',
@@ -27,57 +34,6 @@ class WSlaveCLI < Thor
27
34
  WSlaveUpdate.new()
28
35
  end
29
36
 
30
- desc 'server COMMAND [options]', "Control the development server container. " \
31
- "Commands include: start stop log console"
32
- long_desc <<-LONGDESC
33
- Start, stop, view logs for, or connect to a console in a development server container.
34
- \x5
35
- \x5 COMMANDs:
36
- \x5 start Starts a development server container. *Will restart the container if already running.
37
- \x5 stop Stops a running development container.
38
- \x5 log Connects to the container logs and follows them.
39
- \x5 console Gives a terminal connection to a bash console on the web container.
40
- \x5\x5
41
- Examples:
42
- \x5 Start dev container servers
43
- \x5 > wslave server start
44
- \x5 Start or restart dev container servers after resetting all volumes (reinit)
45
- \x5 > wslave server start -v
46
- \x5 Force stop all dev container servers
47
- \x5 > wslave server stop -f
48
- \x5 Show logs
49
- \x5 > wslave server logs
50
-
51
-
52
- \x5 * If you do not specify a COMMAND the default is to start a server.
53
- \x5 * If a server is alredy running this command will restart the server.
54
- LONGDESC
55
- method_option :v, type: :boolean, default: false, description: 'remove volume data'
56
- method_option :f, type: :boolean, default: false, description: 'force close other servers first'
57
- def server(command = 'start')
58
- puts 'Starting server...'
59
- require_relative '../lib/wslave_docker'
60
- WSlaveDocker.new().server(command.to_sym, options['f'], options['v'])
61
- end
62
-
63
- desc 'start [options]', "Starts the development server (short for 'server start')"
64
- method_option :v, type: :boolean, default: false, description: 'remove volume data'
65
- method_option :f, type: :boolean, default: false, description: 'force close other servers first'
66
- def start()
67
- puts 'Starting server...'
68
- require_relative '../lib/wslave_docker'
69
- WSlaveDocker.new().server(:start, options['f'], options['v'])
70
- end
71
-
72
- desc 'stop [options]', "Stops the development server (short for 'server stop')"
73
- method_option :v, type: :boolean, default: false, description: 'remove volume data'
74
- method_option :f, type: :boolean, default: false, description: 'force close other servers first'
75
- def stop()
76
- puts 'Stopping server...'
77
- require_relative '../lib/wslave_docker'
78
- WSlaveDocker.new().server(:stop, options['f'], options['v'])
79
- end
80
-
81
37
  desc 'sync', "Synchronizes submodules and file permissions"
82
38
  def sync()
83
39
  require_relative '../lib/wslave_tools'
@@ -85,39 +41,76 @@ class WSlaveCLI < Thor
85
41
  WSlaveTools.sync()
86
42
  end
87
43
 
88
- desc 'version', "Prints the version of the installed WSlave"
89
- def version()
90
- require 'rubygems'
91
- spec = Gem::Specification::load("#{__dir__}/../wslave.gemspec")
92
- puts spec.version
44
+ class Server < Thor
45
+ desc 'start [options]', "Starts the development server"
46
+ method_option :f, type: :boolean, default: false, description: 'force close other servers first'
47
+ def start()
48
+ puts 'Starting server...'
49
+ require_relative '../lib/wslave_docker'
50
+ WSlaveDocker.new().server(:start, options['f'])
51
+ end
52
+
53
+ desc 'stop [options]', "Stops the development server"
54
+ method_option :f, type: :boolean, default: false, description: 'force close other servers first'
55
+ def stop()
56
+ puts 'Stopping server...'
57
+ require_relative '../lib/wslave_docker'
58
+ WSlaveDocker.new().server(:stop, options['f'])
59
+ end
60
+
61
+ desc 'reset [options]', "Deletes all container data and volumes, then rebuilds and restarts the containers"
62
+ method_option :f, type: :boolean, default: false, description: 'force close other servers first'
63
+ def reset()
64
+ puts 'Stopping server...'
65
+ require_relative '../lib/wslave_docker'
66
+ WSlaveDocker.new().server(:reset, options['f'])
67
+ end
68
+
69
+ desc 'reset [options]', "Shuts down containers and deletes all container data and volumes"
70
+ method_option :f, type: :boolean, default: false, description: 'force close other servers first'
71
+ def remove()
72
+ puts 'Stopping server...'
73
+ require_relative '../lib/wslave_docker'
74
+ WSlaveDocker.new().server(:remove, options['f'])
75
+ end
93
76
  end
77
+ desc 'server COMMAND [options]', "Control the development server container"
78
+ subcommand 'server', Server
94
79
 
95
- desc 'sage COMMAND', "Generate a theme with NAME"
96
- long_desc "Generates a theme base with sage in the themes directory with the given " \
97
- "NAME. A random name will be generated if you do not specify a NAME."
98
- def sage(command = '', arg = '')
99
- case command
100
- when 'create'
80
+ class Sage < Thor
81
+ desc 'create THEME_NAME', "Creates a theme with the specified name using Sage"
82
+ def create(theme_name = "wslave_sage_theme")
101
83
  require_relative '../lib/wslave_sage'
102
- puts "Generating sage theme base for #{arg}"
103
- WSlaveSage.new().create(arg)
104
- when 'update'
84
+ puts "Generating sage theme base for #{theme_name}"
85
+ WSlaveSage.new().create(theme_name)
86
+ end
87
+
88
+ desc 'update', "Updates theme generator components"
89
+ def update
105
90
  require_relative '../lib/wslave_sage'
106
91
  WSlaveSage.new().update()
107
- when 'dev'
92
+ end
93
+
94
+ desc 'dev', "Starts a development server which dynamically compiles the theme"
95
+ def dev
108
96
  require_relative '../lib/wslave_sage'
109
97
  WSlaveSage.new().dev()
110
- when 'build'
98
+ end
99
+
100
+ desc 'build', "Builds the theme (generates development grade static assets)"
101
+ def build
111
102
  require_relative '../lib/wslave_sage'
112
103
  WSlaveSage.new().build()
113
- when 'production'
104
+ end
105
+
106
+ desc 'production', "Builds the theme (generates production grade static assets)"
107
+ def production
114
108
  require_relative '../lib/wslave_sage'
115
109
  WSlaveSage.new().production()
116
- else
117
- puts "sage command \"#{command}\" not found."
118
- puts "sage commands available: create update dev build production"
119
110
  end
120
111
  end
112
+ desc 'sage COMMAND', "Generates and manages a Sage theme"
113
+ subcommand 'sage', Sage
121
114
  end
122
115
 
123
116
  WSlaveCLI.start(ARGV)
data/lib/wslave_docker.rb CHANGED
@@ -6,12 +6,16 @@ class WSlaveDocker
6
6
  puts 'Initializing WSlave Docker Control'
7
7
  end
8
8
 
9
- def server(command = :start, force = false, volume = false)
9
+ def server(command = :start, force = false)
10
10
  case (command)
11
11
  when :start
12
- start(force, volume)
12
+ start(force)
13
13
  when :stop
14
- stop(force, volume)
14
+ stop(force)
15
+ when :reset
16
+ reset(force)
17
+ when :remove
18
+ remove(force)
15
19
  when :log
16
20
  log()
17
21
  when :console
@@ -22,19 +26,35 @@ class WSlaveDocker
22
26
  end
23
27
  end
24
28
 
25
- def start(force = false, volume = false)
29
+ def start(force = false)
26
30
  return unless _check()
27
31
  _force_down() if force
28
- `docker-compose down#{volume ? ' -v' : ''}` # Shutdown existing instances
32
+ `docker-compose stop` # Shutdown existing instances
29
33
  _unfuck_dot_htaccess()
30
34
  WSlaveTools.set_dev_perms
35
+ `docker-compose build`
36
+ `docker-compose start -d`
31
37
  `docker-compose up -d`
32
38
  end
33
39
 
34
- def stop(force = false, volume = false)
40
+ def stop(force = false)
35
41
  return unless _check()
36
42
  _force_down() if force
37
- `docker-compose down#{volume ? ' -v' : ''}`
43
+ `docker-compose stop`
44
+ end
45
+
46
+ def reset(force = false)
47
+ return unless _check()
48
+ _force_down() if force
49
+ `docker-compose down -v`
50
+ `docker-compose build`
51
+ `docker-compose up -d`
52
+ end
53
+
54
+ def remove(force = false)
55
+ return unless _check()
56
+ _force_down() if force
57
+ `docker-compose down -v`
38
58
  end
39
59
 
40
60
  def log()
data/lib/wslave_new.rb CHANGED
@@ -57,6 +57,9 @@ class WSlaveNew
57
57
  FileUtils.touch("#{path}/public/wp-content/upgrade/.gitkeep")
58
58
  Dir.chdir path
59
59
 
60
+ puts " > Preparing static data directory"
61
+ FileUtils.mkdir("#{path}/public/data") unless Dir.exist?("#{path}/public/data")
62
+
60
63
  puts " > Setting permissions"
61
64
  WSlaveTools.set_dev_perms
62
65
 
@@ -71,12 +74,28 @@ class WSlaveNew
71
74
  end
72
75
 
73
76
  def get_stable_branch_version(path)
74
- latest = '5.4' # This is just a fallback (latest at time of update)
75
- # TODO Implementation requires this issue be resolved: https://github.com/ruby-git/ruby-git/issues/424
76
- #g = Git.open(path)
77
- #g.brances.remote.each do |branch|
78
- #end
77
+ latest_major = 5
78
+ latest_minor = 7
79
+
80
+ reg = /^(\d*)\.(\d)-branch$/
81
+ puts "> Checking for WordPress versions in: #{path}"
82
+ cdir = Dir.pwd()
83
+ Dir.chdir(path)
84
+ g = Git.open("./")
85
+ g.branches.remote.each do |branch|
86
+ ver = reg.match(branch.name)
87
+ if (ver) # If the branch matched the x.y-branch pattern
88
+ if ((ver[1].to_i >= latest_major) && (ver[2].to_i > latest_minor))
89
+ latest_major = ver[1].to_i
90
+ latest_minor = ver[2].to_i
91
+ end
92
+ end
93
+
94
+ end
95
+ Dir.chdir(cdir)
79
96
 
97
+ latest = "#{latest_major}.#{latest_minor}"
98
+ puts "> Detected latest WordPress version as: #{latest}"
80
99
  latest
81
100
  end
82
101
  end
data/lib/wslave_tools.rb CHANGED
@@ -23,6 +23,8 @@ class WSlaveTools
23
23
  FileUtils.chmod(0775, "#{path}/public/wp-content/plugins")
24
24
  FileUtils.chown(nil, 'www-data', "#{path}/public/wp-content/upgrade")
25
25
  FileUtils.chmod(0775, "#{path}/public/wp-content/upgrade")
26
+ FileUtils.chown(nil, 'www-data', "#{path}/public/data")
27
+ FileUtils.chmod(0775, "#{path}/public/data")
26
28
 
27
29
  unless Dir.exist?("#{path}/db")
28
30
  FileUtils.mkdir("#{path}/db")
data/wslave.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'wslave'
3
- s.version = '0.2.0'
3
+ s.version = '0.3.1'
4
4
  s.licenses = ['GPL-3.0', 'AGPL-3.0']
5
5
  s.summary = '"Word Slave" generates and controls a WordPress installation'
6
6
  s.description = 'Word Slave includes the wslave command and a control library to generate a ' \
@@ -20,13 +20,13 @@ Gem::Specification.new do |s|
20
20
  s.bindir = 'bin'
21
21
  s.executables << 'wslave'
22
22
 
23
- s.add_dependency 'capistrano', '= 3.14.1'
23
+ s.add_dependency 'capistrano', '= 3.16.0'
24
24
  s.add_dependency 'capistrano-git-with-submodules', '~> 2.0', '2.0.4'
25
25
  s.add_dependency 'capistrano-scm-copy', '~> 0.7', '0.7.0'
26
26
  s.add_dependency 'capistrano-file-permissions', '~> 1.0', '1.0.0'
27
27
 
28
- s.add_dependency 'git', '~> 1.7', '1.7.0'
28
+ s.add_dependency 'git', '~> 1.8', '1.8.1'
29
29
 
30
- s.add_dependency 'thor', '~> 1.0', '1.0.1'
31
- s.add_dependency 'haikunator', '~> 1.1', '1.1.0'
30
+ s.add_dependency 'thor', '~> 1.1', '1.1.0'
31
+ s.add_dependency 'haikunator', '~> 1.1', '1.1.1'
32
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wslave
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rei Kagetsuki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-09 00:00:00.000000000 Z
11
+ date: 2021-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.14.1
19
+ version: 3.16.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 3.14.1
26
+ version: 3.16.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: capistrano-git-with-submodules
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -90,40 +90,40 @@ dependencies:
90
90
  requirements:
91
91
  - - "~>"
92
92
  - !ruby/object:Gem::Version
93
- version: '1.7'
93
+ version: '1.8'
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 1.7.0
96
+ version: 1.8.1
97
97
  type: :runtime
98
98
  prerelease: false
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.7'
103
+ version: '1.8'
104
104
  - - '='
105
105
  - !ruby/object:Gem::Version
106
- version: 1.7.0
106
+ version: 1.8.1
107
107
  - !ruby/object:Gem::Dependency
108
108
  name: thor
109
109
  requirement: !ruby/object:Gem::Requirement
110
110
  requirements:
111
111
  - - "~>"
112
112
  - !ruby/object:Gem::Version
113
- version: '1.0'
113
+ version: '1.1'
114
114
  - - '='
115
115
  - !ruby/object:Gem::Version
116
- version: 1.0.1
116
+ version: 1.1.0
117
117
  type: :runtime
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '1.0'
123
+ version: '1.1'
124
124
  - - '='
125
125
  - !ruby/object:Gem::Version
126
- version: 1.0.1
126
+ version: 1.1.0
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: haikunator
129
129
  requirement: !ruby/object:Gem::Requirement
@@ -133,7 +133,7 @@ dependencies:
133
133
  version: '1.1'
134
134
  - - '='
135
135
  - !ruby/object:Gem::Version
136
- version: 1.1.0
136
+ version: 1.1.1
137
137
  type: :runtime
138
138
  prerelease: false
139
139
  version_requirements: !ruby/object:Gem::Requirement
@@ -143,7 +143,7 @@ dependencies:
143
143
  version: '1.1'
144
144
  - - '='
145
145
  - !ruby/object:Gem::Version
146
- version: 1.1.0
146
+ version: 1.1.1
147
147
  description: Word Slave includes the wslave command and a control library to generate
148
148
  a "best practice" WordPress installation and includes a pre-rolled Docker setup
149
149
  for running a development server and a Capistrano setup for deployment.
@@ -164,6 +164,8 @@ files:
164
164
  - base/config/deploy-tools/wp-config.php.erb
165
165
  - base/config/deploy-tools/wp-config.php.local
166
166
  - base/config/deploy.rb
167
+ - base/config/deploy/.production.rb.swp
168
+ - base/config/deploy/.staging.rb.swp
167
169
  - base/config/deploy/production.rb
168
170
  - base/config/deploy/staging.rb
169
171
  - base/docker-compose.yml
@@ -202,7 +204,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
204
  - !ruby/object:Gem::Version
203
205
  version: '0'
204
206
  requirements: []
205
- rubygems_version: 3.1.2
207
+ rubygems_version: 3.2.15
206
208
  signing_key:
207
209
  specification_version: 4
208
210
  summary: '"Word Slave" generates and controls a WordPress installation'