new_artrails_capistrano 0.0.1 → 0.0.2
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ded6859a7399bb2d6abd70b14b594c8b4b82832c
|
4
|
+
data.tar.gz: 1207eae9f16cbdf08ad40834abdd04bdcd440b14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51e5e6096b9d80372df93bc90a8c59626444b929785b36736b540e1151207e8ff09f67a45b5e55c0a7b001062eee7e3ec420eac2c210e02c1d4ac346c42570e4
|
7
|
+
data.tar.gz: 161d583d914c7a1f853a985dab1aa8bd34b270a0ba73f9ca59d33d5708d659fb2a7cc7ddcb4a4998c6f4db3ee12d2d84eee8ddce45ed8cb4156ddb00a7613eec
|
data/Manifest.txt
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
.codeclimate.yml
|
2
2
|
.gitignore
|
3
|
-
.rspec_status
|
4
3
|
.rubocop.yml
|
5
4
|
.rubocop_todo.yml
|
6
5
|
.travis.yml
|
@@ -17,6 +16,8 @@ bin/setup
|
|
17
16
|
config.reek
|
18
17
|
lib/.keep
|
19
18
|
lib/capistrano/new_artrails_capistrano.rb
|
19
|
+
lib/capistrano/new_artrails_capistrano/front_helpers.rb
|
20
|
+
lib/capistrano/new_artrails_capistrano/helpers.rb
|
20
21
|
lib/capistrano/new_artrails_capistrano/version.rb
|
21
22
|
lib/capistrano/tasks/new_artrails_capistrano.rake
|
22
23
|
lib/new_artrails_capistrano.rb
|
@@ -0,0 +1,115 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Capistrano
|
4
|
+
module NewArtrailsCapistrano
|
5
|
+
module FrontHelpers
|
6
|
+
|
7
|
+
def front_branch
|
8
|
+
fetch(:front_branch) || 'master'
|
9
|
+
end
|
10
|
+
|
11
|
+
def front_rsync_remote_cache
|
12
|
+
fetch(:front_remote_cache) || "shared/front-cached-copy-#{fetch(:local_user) || 'deploy'}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def front_local_cache
|
16
|
+
front_application = fetch(:front_application)
|
17
|
+
# "-#{fetch(:stage)}"
|
18
|
+
fetch(:front_local_cache) || "/tmp/.#{front_application}_rsync_cache"
|
19
|
+
end
|
20
|
+
|
21
|
+
def front_rsync_credentials
|
22
|
+
fetch(:local_user)
|
23
|
+
end
|
24
|
+
|
25
|
+
def front_dist_dir_name
|
26
|
+
fetch(:front_dist_dir_name) || 'dist'
|
27
|
+
end
|
28
|
+
|
29
|
+
def front_rsync_options
|
30
|
+
fetch(:front_rsync_options) || fetch(:rsync_options)
|
31
|
+
end
|
32
|
+
|
33
|
+
def front_rsync_include
|
34
|
+
fetch(:front_rsync_include) || fetch(:rsync_include)
|
35
|
+
end
|
36
|
+
|
37
|
+
def front_rsync_exclude
|
38
|
+
fetch(:front_rsync_exclude) || fetch(:rsync_exclude)
|
39
|
+
end
|
40
|
+
|
41
|
+
# do not delete Rails' Apache served folders
|
42
|
+
def front_copy_command
|
43
|
+
assets_prefix = fetch(:assets_prefix) || 'assets'
|
44
|
+
keeps = fetch(:backend_dirs_or_files_to_keep_in_public) || ([assets_prefix] + %w[ images system upload download])
|
45
|
+
if keeps.empty?
|
46
|
+
keep_string = ''
|
47
|
+
else
|
48
|
+
keep_string = ' ' + keeps.map { |keep| "--exclude=\'#{keep}\'" }.join(' ').to_s
|
49
|
+
end
|
50
|
+
"rsync -a --no-p --no-g --delete#{keep_string}"
|
51
|
+
end
|
52
|
+
|
53
|
+
def front_revision
|
54
|
+
@front_revision ||= `git ls-remote #{fetch(:front_repo_url)} #{front_branch}`.split("\t").first
|
55
|
+
end
|
56
|
+
|
57
|
+
def front_release_path
|
58
|
+
File.join(release_path, 'public')
|
59
|
+
end
|
60
|
+
|
61
|
+
def front_install_command
|
62
|
+
fetch(:front_install_command) ||
|
63
|
+
<<-CMD
|
64
|
+
npm install &&
|
65
|
+
bower install &&
|
66
|
+
gulp clean &&
|
67
|
+
gulp build
|
68
|
+
CMD
|
69
|
+
end
|
70
|
+
def front_sync_command
|
71
|
+
fetch(:front_sync_command) ||
|
72
|
+
<<-CMD
|
73
|
+
cd #{front_local_cache} &&
|
74
|
+
git fetch #{fetch(:front_repo_url)} #{front_branch} &&
|
75
|
+
git fetch --tags #{fetch(:front_repo_url)} #{front_branch} &&
|
76
|
+
git reset --hard #{front_revision} &&
|
77
|
+
#{front_install_command}
|
78
|
+
CMD
|
79
|
+
end
|
80
|
+
|
81
|
+
def front_checkout_command
|
82
|
+
fetch(:front_checkout_command) ||
|
83
|
+
<<-CMD
|
84
|
+
git clone #{fetch(:front_repo_url)} #{front_local_cache} &&
|
85
|
+
cd #{front_local_cache} &&
|
86
|
+
git checkout -b deploy/#{front_branch} #{front_revision} &&
|
87
|
+
#{front_install_command}
|
88
|
+
CMD
|
89
|
+
end
|
90
|
+
|
91
|
+
def front_command
|
92
|
+
if (File.exists?(front_local_cache) && File.directory?(front_local_cache))
|
93
|
+
puts "[FRONT] updating front local cache to revision #{front_revision}"
|
94
|
+
cmd = front_sync_command
|
95
|
+
end
|
96
|
+
unless (File.exists?(front_local_cache) || File.directory?(front_local_cache))
|
97
|
+
puts "[FRONT] creating front local cache with revision #{front_revision}"
|
98
|
+
File.delete(front_local_cache) if File.exists?(front_local_cache)
|
99
|
+
Dir.mkdir(File.dirname(front_local_cache)) unless File.directory?(File.dirname(front_local_cache))
|
100
|
+
|
101
|
+
cmd = front_checkout_command
|
102
|
+
end
|
103
|
+
cmd.gsub("\n", '')
|
104
|
+
end
|
105
|
+
|
106
|
+
def front_remote_cache
|
107
|
+
lambda do
|
108
|
+
cache = front_rsync_remote_cache
|
109
|
+
cache = deploy_to + '/' + cache if cache && cache !~ /^\//
|
110
|
+
cache
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Capistrano
|
4
|
+
module NewArtrailsCapistrano
|
5
|
+
module Helpers
|
6
|
+
def backend_branch
|
7
|
+
fetch(:branch) || 'master'
|
8
|
+
end
|
9
|
+
|
10
|
+
def backend_revision
|
11
|
+
@backend_revision ||= `git ls-remote #{fetch(:repo_url)} #{backend_branch}`.split("\t").first
|
12
|
+
end
|
13
|
+
|
14
|
+
def backend_local_cache
|
15
|
+
application = fetch(:application)
|
16
|
+
# "-#{fetch(:stage)}"
|
17
|
+
fetch(:local_cache) || "/tmp/.#{application}_rsync_cache"
|
18
|
+
end
|
19
|
+
|
20
|
+
def new_artrails_capistrano_sudo_as
|
21
|
+
"#{fetch(:new_artrails_capistrano_sudo_as)}" || 'deploy'
|
22
|
+
end
|
23
|
+
|
24
|
+
def file_exists?(path)
|
25
|
+
test "[ -e #{path} ]"
|
26
|
+
end
|
27
|
+
|
28
|
+
def dir_exists?(path)
|
29
|
+
test "[ -d #{path} ]"
|
30
|
+
end
|
31
|
+
|
32
|
+
def copy_command
|
33
|
+
"rsync -a --no-p --no-g --delete"
|
34
|
+
end
|
35
|
+
|
36
|
+
def rsync_remote_cache
|
37
|
+
fetch(:remote_cache) || "shared/cached-copy-#{fetch(:local_user) || 'deploy'}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def new_artrails_capistrano_detect_manifest_path
|
41
|
+
%w(
|
42
|
+
.sprockets-manifest*
|
43
|
+
manifest*.*
|
44
|
+
).each do |pattern|
|
45
|
+
candidate = release_path.join('public', fetch(:assets_prefix), pattern)
|
46
|
+
return capture(:ls, candidate).strip.gsub(/(\r|\n)/,' ') if test(:ls, candidate)
|
47
|
+
end
|
48
|
+
msg = 'Rails assets manifest file not found.'
|
49
|
+
warn msg
|
50
|
+
# Rails 5 only
|
51
|
+
# fail Capistrano::FileNotFound, msg
|
52
|
+
end
|
53
|
+
|
54
|
+
def new_artrails_capistrano_run_with_rvm_in_release_path(cmd, options={}, &block)
|
55
|
+
joined_cmd =<<-CMD
|
56
|
+
sudo -iu #{fetch(:new_artrails_capistrano_sudo_as)} sh -c "
|
57
|
+
source\\\\ '/usr/local/rvm/scripts/rvm' &&
|
58
|
+
cd #{fetch(:release_path)} &&
|
59
|
+
RAILS_ENV=#{fetch(:rails_env)} #{cmd}
|
60
|
+
"
|
61
|
+
CMD
|
62
|
+
new_artrails_capistrano_run(joined_cmd.gsub(/\r?\n/, '').gsub(/\s+/, ' '), options) do
|
63
|
+
block.call
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def new_artrails_capistrano_run(cmd, options={}, &block)
|
68
|
+
if cmd.include?('db:migrate')
|
69
|
+
c = cmd.split(';')
|
70
|
+
|
71
|
+
c.each_index do |index|
|
72
|
+
if c[index].strip[0..4].include?('rake ') && c[index].include?('db:migrate')
|
73
|
+
c[index] = " sudo -i -u #{new_artrails_capistrano_sudo_as} " + c[index]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
cmd = c.join(';')
|
78
|
+
end
|
79
|
+
if cmd.include?('find')
|
80
|
+
cmd = "sudo -u #{new_artrails_capistrano_sudo_as} " + cmd
|
81
|
+
end
|
82
|
+
|
83
|
+
if cmd.strip[0..3] != 'pwd ' &&
|
84
|
+
!cmd.include?( 'sudo' ) &&
|
85
|
+
!cmd.include?( 'chmod +r+w+x' ) &&
|
86
|
+
!cmd.include?( 'chmod g+w' ) &&
|
87
|
+
!cmd.include?( 'chgrp -R mongrel' ) &&
|
88
|
+
!cmd.include?( 'find' )
|
89
|
+
if !cmd.include?( ' && (' ) && !cmd.include?( 'sh -c' )
|
90
|
+
cmd = cmd.gsub( /\s&&\s/, " && sudo -i -u #{new_artrails_capistrano_sudo_as} " )
|
91
|
+
end
|
92
|
+
if !cmd.include?(' | (') && !cmd.include?('sh -c')
|
93
|
+
cmd = cmd.gsub(/\s\|\s/, " | sudo -i -u #{new_artrails_capistrano_sudo_as} ")
|
94
|
+
end
|
95
|
+
|
96
|
+
cmd = "sudo -i -u #{new_artrails_capistrano_sudo_as} " + cmd
|
97
|
+
end
|
98
|
+
|
99
|
+
execute(cmd, options, &block)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: new_artrails_capistrano
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcin Kalita
|
@@ -402,7 +402,6 @@ extra_rdoc_files: []
|
|
402
402
|
files:
|
403
403
|
- ".codeclimate.yml"
|
404
404
|
- ".gitignore"
|
405
|
-
- ".rspec_status"
|
406
405
|
- ".rubocop.yml"
|
407
406
|
- ".rubocop_todo.yml"
|
408
407
|
- ".travis.yml"
|
@@ -419,6 +418,8 @@ files:
|
|
419
418
|
- config.reek
|
420
419
|
- lib/.keep
|
421
420
|
- lib/capistrano/new_artrails_capistrano.rb
|
421
|
+
- lib/capistrano/new_artrails_capistrano/front_helpers.rb
|
422
|
+
- lib/capistrano/new_artrails_capistrano/helpers.rb
|
422
423
|
- lib/capistrano/new_artrails_capistrano/version.rb
|
423
424
|
- lib/capistrano/tasks/new_artrails_capistrano.rake
|
424
425
|
- lib/new_artrails_capistrano.rb
|