capistrano-typo3 0.4.7 → 0.4.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/capistrano-typo3.gemspec +2 -0
- data/lib/capistrano/tasks/db.cap +132 -0
- data/lib/capistrano/typo3.rb +5 -0
- data/lib/capistrano/typo3/dt3_mysql.rb +24 -82
- data/lib/capistrano/typo3/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18ad521a406fd4ffd9502784269ce5119e4b1cb6
|
4
|
+
data.tar.gz: 5082d9b53a97bb96265a3364fdf16dd6c1681a16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b16242087ee0fd2889cee854a95cbad09d210abc60cbef4351b564ecb466632165a8f8de33be5c5a951c97aa173966f3d35b544e35949fe6ac6cce55a696583a
|
7
|
+
data.tar.gz: 1e40c5181cb08672744851ba5a7cfbe69ba88e2057e2229f3e39ce87cbbf00bf2d6a3aed108a287148dbadb91699555b37a7e0d2f88af0fdf85b0e4855bc1872
|
data/capistrano-typo3.gemspec
CHANGED
@@ -21,4 +21,6 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.7"
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
23
|
spec.add_runtime_dependency "capistrano", "~> 3"
|
24
|
+
spec.add_runtime_dependency "text-table", "~> 1"
|
25
|
+
require 'text-table'
|
24
26
|
end
|
@@ -0,0 +1,132 @@
|
|
1
|
+
namespace :db do
|
2
|
+
|
3
|
+
desc 'test db connection'
|
4
|
+
task :conntest do
|
5
|
+
on roles(:all) do
|
6
|
+
stdout = capture DT3MySQL::mysql_execute('SHOW TABLES;')
|
7
|
+
if stdout.include? 'denied'
|
8
|
+
print "\nNO CORRECT DB CONNECTION. CHECK DB SETTINGS\n\n"
|
9
|
+
else
|
10
|
+
print "\nCORRECT DB CONNECTION.\n\n"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
#### LIBRARY TASKS
|
16
|
+
task :create_dump_dir do
|
17
|
+
on roles(:all) do
|
18
|
+
execute "cd #{fetch(:deploy_to)}/current && mkdir -p #{TYPO3_DB_DUMP_DIR}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
#### END LIBRARY TASKS
|
22
|
+
|
23
|
+
desc 'dump a full sql-image'
|
24
|
+
task :dump do
|
25
|
+
|
26
|
+
invoke 'db:create_dump_dir'
|
27
|
+
|
28
|
+
on roles(:all) do
|
29
|
+
execute "cd #{fetch(:deploy_to)}/current && " + DT3MySQL::dump_db_version
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
desc 'list dumped sql-images'
|
34
|
+
task :imglist do
|
35
|
+
images_arr = DT3MySQL::db_image_list
|
36
|
+
print DT3Div::hashlist_to_table_string(images_arr)
|
37
|
+
end
|
38
|
+
|
39
|
+
desc 'show all tables'
|
40
|
+
task :tables do
|
41
|
+
print("Show tables:\n\n")
|
42
|
+
on roles(:all) do
|
43
|
+
execute DT3MySQL::show_tables
|
44
|
+
end
|
45
|
+
print("\n")
|
46
|
+
end
|
47
|
+
|
48
|
+
desc 'dump an sql-image with only the essential tables'
|
49
|
+
task :dump_essential do
|
50
|
+
|
51
|
+
on roles(:all) do
|
52
|
+
table_exclude_list = %w( be_users be_sessions cache_* cf_* fe_session_data fe_sessions static_countries \
|
53
|
+
static_country_zones static_currencies static_languages static_territories sys_history sys_log tx_devlog \
|
54
|
+
zzz_deleted_* )
|
55
|
+
|
56
|
+
tables = capture DT3MySQL::show_tables
|
57
|
+
table_arr = tables.split("\n")
|
58
|
+
|
59
|
+
substr_arr = []
|
60
|
+
excltable_arr = []
|
61
|
+
realexclude_list = []
|
62
|
+
|
63
|
+
table_exclude_list.each {|excltable|
|
64
|
+
if(excltable.include? '*')
|
65
|
+
substr_arr << excltable[0,excltable.index('*')]
|
66
|
+
else
|
67
|
+
excltable_arr << excltable
|
68
|
+
end
|
69
|
+
}
|
70
|
+
|
71
|
+
table_arr.each {|table|
|
72
|
+
if(excltable_arr.include?(table))
|
73
|
+
realexclude_list << table
|
74
|
+
else
|
75
|
+
substr_arr.each {|substr|
|
76
|
+
if(table[0,substr.length] == substr)
|
77
|
+
realexclude_list << table
|
78
|
+
end
|
79
|
+
}
|
80
|
+
end
|
81
|
+
}
|
82
|
+
|
83
|
+
table_exclude_list = realexclude_list.uniq
|
84
|
+
|
85
|
+
execute "cd #{fetch(:deploy_to)}/current && " + DT3MySQL::dump_db_version(table_exclude_list)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
desc 'import one of the sql image into the current database'
|
90
|
+
task :import do
|
91
|
+
|
92
|
+
images_arr = DT3MySQL::db_image_list
|
93
|
+
print DT3Div::hashlist_to_table_string(images_arr)
|
94
|
+
|
95
|
+
print "\nEnter the index of the image you want to import from the list above: "
|
96
|
+
|
97
|
+
imageChoosen = STDIN.gets.chomp
|
98
|
+
if imageChoosen=~ /^[0-9]+$/
|
99
|
+
imageChoosen = imageChoosen.to_i-1
|
100
|
+
if images_arr[(imageChoosen)].nil?
|
101
|
+
print "ERR. You must enter an existing index from above."
|
102
|
+
else
|
103
|
+
print "\nImporting database #{images_arr[imageChoosen]['filename']}\n"
|
104
|
+
|
105
|
+
on roles(:all) do
|
106
|
+
execute "cd #{fetch(:deploy_to)}/current && " + DT3MySQL.mysql_import(images_arr[imageChoosen]['filename'])
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
else
|
111
|
+
print "ERR. You must enter a number"
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
desc 'delete all tables'
|
116
|
+
task :flush do
|
117
|
+
print "Flush tables in DB? Enter YES to confirm: "
|
118
|
+
cleanConfirm = STDIN.gets.chomp
|
119
|
+
if(cleanConfirm.downcase=='yes')
|
120
|
+
on roles(:all) do
|
121
|
+
tablelist = capture "#{DT3MySQL.create_mysql_base_command} -e \"show tables\" | grep -v Tables_in | grep -v \"+\""
|
122
|
+
dropsql = ''
|
123
|
+
tablelist.split("\n").each {|table|
|
124
|
+
dropsql +="drop table #{table};"
|
125
|
+
}
|
126
|
+
execute DT3MySQL::mysql_execute(dropsql)
|
127
|
+
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
data/lib/capistrano/typo3.rb
CHANGED
@@ -6,9 +6,14 @@ require "capistrano/typo3/dt3_div"
|
|
6
6
|
require "capistrano/typo3/dt3_mysql"
|
7
7
|
require 'yaml' # Built in, no gem required
|
8
8
|
|
9
|
+
|
10
|
+
|
11
|
+
TYPO3_DB_DUMP_DIR = 'db_dumps'
|
12
|
+
|
9
13
|
load File.expand_path('../tasks/typo3.cap', __FILE__)
|
10
14
|
load File.expand_path('../tasks/deploy.cap', __FILE__)
|
11
15
|
load File.expand_path('../tasks/git.cap', __FILE__)
|
16
|
+
load File.expand_path('../tasks/db.cap', __FILE__)
|
12
17
|
|
13
18
|
|
14
19
|
|
@@ -9,13 +9,12 @@ class DT3MySQL
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.flush_tables
|
12
|
-
tablelist =
|
12
|
+
tablelist = `#{self.create_mysql_base_command} -e "show tables" | grep -v Tables_in | grep -v "+"`
|
13
13
|
dropsql = ''
|
14
14
|
tablelist.split("\n").each {|table|
|
15
15
|
dropsql +="drop table #{table};"
|
16
16
|
}
|
17
17
|
self.mysql_execute(dropsql)
|
18
|
-
return true
|
19
18
|
end
|
20
19
|
|
21
20
|
def self.show_tables
|
@@ -31,48 +30,6 @@ class DT3MySQL
|
|
31
30
|
return cmd
|
32
31
|
end
|
33
32
|
|
34
|
-
def self.test_connection
|
35
|
-
stdout = self.mysql_execute('SHOW TABLES;')
|
36
|
-
if stdout.include? 'denied'
|
37
|
-
return false
|
38
|
-
else
|
39
|
-
return 1
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.dump_db_version(name=nil, table_exclude_list=nil)
|
44
|
-
|
45
|
-
if not File.directory?(TYPO3_DB_DUMP_DIR)
|
46
|
-
FileUtils.mkdir TYPO3_DB_DUMP_DIR
|
47
|
-
end
|
48
|
-
|
49
|
-
filename =''
|
50
|
-
numbers = []
|
51
|
-
dbsettings = Typo3Helper::get_db_settings
|
52
|
-
|
53
|
-
if name
|
54
|
-
filename = File.join(TYPO3_DB_DUMP_DIR,"#{dbsettings['name']}-#{ENV['name']}.sql")
|
55
|
-
version = name
|
56
|
-
else
|
57
|
-
Dir.foreach(TYPO3_DB_DUMP_DIR) {|sql|
|
58
|
-
tmpname = sql.split('.')
|
59
|
-
if(tmpname.count == 3)
|
60
|
-
numbers << tmpname[1].to_i
|
61
|
-
end
|
62
|
-
}
|
63
|
-
if(numbers.count > 0)
|
64
|
-
version = (numbers.max + 1)
|
65
|
-
else
|
66
|
-
version = 1
|
67
|
-
end
|
68
|
-
|
69
|
-
filename = File.join(TYPO3_DB_DUMP_DIR,"#{dbsettings['name']}.#{version.to_s}.sql")
|
70
|
-
end
|
71
|
-
|
72
|
-
print "new image:#{dbsettings['name']} version:#{version}\n"
|
73
|
-
DT3MySQL::mysqldump_to(filename,table_exclude_list)
|
74
|
-
end
|
75
|
-
|
76
33
|
def self.db_image_list
|
77
34
|
images_arr = []
|
78
35
|
idx = 0
|
@@ -96,7 +53,7 @@ class DT3MySQL
|
|
96
53
|
image['version'] = '[MASTER]'
|
97
54
|
image['name'] = File.basename(sql,'.*')
|
98
55
|
end
|
99
|
-
image['time'] = File.mtime(sql).strftime("%Y-%m-%d")
|
56
|
+
image['time'] = File.mtime(sql).strftime("%Y-%m-%d %H:%M")
|
100
57
|
image['filename'] = sql
|
101
58
|
|
102
59
|
images_arr << image
|
@@ -105,42 +62,29 @@ class DT3MySQL
|
|
105
62
|
return images_arr
|
106
63
|
end
|
107
64
|
|
108
|
-
def self.
|
65
|
+
def self.dump_db_version(table_exclude_list=nil)
|
109
66
|
|
110
|
-
|
111
|
-
|
112
|
-
zzz_deleted_* )
|
113
|
-
|
114
|
-
tables = self.show_tables
|
115
|
-
table_arr = tables.split("\n")
|
116
|
-
|
117
|
-
substr_arr = []
|
118
|
-
excltable_arr = []
|
119
|
-
realexclude_list = []
|
120
|
-
|
121
|
-
table_exclude_list.each {|excltable|
|
122
|
-
if(excltable.include? '*')
|
123
|
-
substr_arr << excltable[0,excltable.index('*')]
|
124
|
-
else
|
125
|
-
excltable_arr << excltable
|
126
|
-
end
|
127
|
-
}
|
67
|
+
filename =''
|
68
|
+
numbers = []
|
128
69
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
substr_arr.each {|substr|
|
134
|
-
if(table[0,substr.length] == substr)
|
135
|
-
realexclude_list << table
|
136
|
-
end
|
137
|
-
}
|
70
|
+
Dir.foreach(TYPO3_DB_DUMP_DIR) {|sql|
|
71
|
+
tmpname = sql.split('.')
|
72
|
+
if(tmpname.count == 3)
|
73
|
+
numbers << tmpname[1].to_i
|
138
74
|
end
|
139
75
|
}
|
76
|
+
if(numbers.count > 0)
|
77
|
+
version = (numbers.max + 1)
|
78
|
+
else
|
79
|
+
version = 1
|
80
|
+
end
|
140
81
|
|
141
|
-
|
82
|
+
filename = File.join(TYPO3_DB_DUMP_DIR,"#{fetch(:dbname)}-#{fetch(:branch)}.#{version.to_s}.sql")
|
83
|
+
print "new image:#{fetch(:dbname)} version:#{version}\n"
|
84
|
+
DT3MySQL::mysqldump_to(filename,table_exclude_list)
|
142
85
|
end
|
143
86
|
|
87
|
+
|
144
88
|
def self.create_mysql_base_command(exec='mysql')
|
145
89
|
return self.create_mysql_base_command_with(fetch(:dbuser),fetch(:dbhost),fetch(:dbpass),fetch(:dbname),exec)
|
146
90
|
end
|
@@ -149,13 +93,13 @@ class DT3MySQL
|
|
149
93
|
"#{self.create_mysql_base_command} -e \"#{sql}\""
|
150
94
|
end
|
151
95
|
|
152
|
-
def self.create_exclude_string(excludelist
|
96
|
+
def self.create_exclude_string(excludelist)
|
153
97
|
s = ''
|
154
98
|
excludelist.each {|extab|
|
155
99
|
if(s.length>0)
|
156
100
|
s += " "
|
157
101
|
end
|
158
|
-
s += "--ignore-table=#{
|
102
|
+
s += "--ignore-table=#{fetch(:dbname)}.#{extab}"
|
159
103
|
}
|
160
104
|
return s
|
161
105
|
end
|
@@ -163,17 +107,15 @@ class DT3MySQL
|
|
163
107
|
def self.mysqldump_to(outputfile,excludelist=nil,no_schema=nil)
|
164
108
|
|
165
109
|
if(not excludelist.nil?)
|
166
|
-
excludestring = self.create_exclude_string(excludelist
|
110
|
+
excludestring = self.create_exclude_string(excludelist)
|
167
111
|
else
|
168
112
|
excludestring = ''
|
169
113
|
end
|
170
114
|
|
171
|
-
|
172
|
-
system(cmd)
|
115
|
+
"#{create_mysql_base_command('mysqldump')} #{excludestring} > #{outputfile}"
|
173
116
|
end
|
174
117
|
|
175
|
-
def self.mysql_import(
|
176
|
-
|
177
|
-
system(cmd)
|
118
|
+
def self.mysql_import(insqlfile)
|
119
|
+
"#{create_mysql_base_command} < #{insqlfile}"
|
178
120
|
end
|
179
121
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-typo3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pim Snel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: text-table
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1'
|
55
69
|
description: Capistrano 3 deployment and continious delivery tasks for TYPO3 versions
|
56
70
|
6.2+, 7.x, 8.x
|
57
71
|
email:
|
@@ -73,6 +87,7 @@ files:
|
|
73
87
|
- homestead_files/Vagrantfile
|
74
88
|
- homestead_files/homestead.rb
|
75
89
|
- homestead_files/vagrant.yml
|
90
|
+
- lib/capistrano/tasks/db.cap
|
76
91
|
- lib/capistrano/tasks/deploy.cap
|
77
92
|
- lib/capistrano/tasks/git.cap
|
78
93
|
- lib/capistrano/tasks/typo3.cap
|