capistrano-technogate 0.0.1 → 0.1.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.
@@ -39,16 +39,6 @@ Capistrano::Configuration.instance(:must_exist).load do
39
39
  end
40
40
 
41
41
  namespace :deploy do
42
- if defined?(skip_deploy_restart) and skip_deploy_restart
43
- task :restart do
44
- end
45
- end
46
-
47
- if defined?(finalize_update) and finalize_update
48
- task :finalize_update do
49
- end
50
- end
51
-
52
42
  desc "Check if the branch is ready"
53
43
  task :check_if_branch_is_ready, :roles => :web do
54
44
  unless `git rev-parse #{branch}` == `git rev-parse origin/#{branch}`
@@ -80,13 +70,6 @@ Capistrano::Configuration.instance(:must_exist).load do
80
70
  end
81
71
  end
82
72
 
83
- namespace :bundle do
84
- if :skip_bundle_install
85
- task :install do
86
- end
87
- end
88
- end
89
-
90
73
  # Dependencies
91
74
  before "deploy", "deploy:check_if_remote_ready"
92
75
  after "deploy:check_if_remote_ready", "deploy:check_if_branch_is_ready"
@@ -21,11 +21,4 @@ Capistrano::Configuration.instance(:must_exist).load do
21
21
  # Set the current path
22
22
  set :current_path, "#{File.join deploy_to, 'current'}"
23
23
  end
24
-
25
- # Some helpers
26
- if defined?(skip_bundle_install) and skip_bundle_install
27
- set :try_bundle_exec, ""
28
- else
29
- set :try_bundle_exec, "bundle exec"
30
- end
31
24
  end
@@ -1,4 +1,6 @@
1
1
  require 'capistrano'
2
+ require 'capistrano/technogate/base'
3
+ require 'capistrano/technogate/mysql'
2
4
 
3
5
  # Verify that Capistrano is version 2
4
6
  unless Capistrano::Configuration.respond_to?(:instance)
@@ -6,6 +8,12 @@ unless Capistrano::Configuration.respond_to?(:instance)
6
8
  end
7
9
 
8
10
  Capistrano::Configuration.instance(:must_exist).load do
11
+ namespace :deploy do
12
+ desc "Empty task, overriden by #{__FILE__}"
13
+ task :finalize_update do
14
+ # Empty task, we do not want to delete the system folder.
15
+ end
16
+ end
9
17
 
10
18
  namespace :contao do
11
19
  task :setup, :roles => :web do
@@ -20,8 +28,6 @@ Capistrano::Configuration.instance(:must_exist).load do
20
28
  end
21
29
 
22
30
  task :setup_localconfig, :roles => :web do
23
- mysql_credentials = TechnoGate::Contao.instance.mysql_credentials
24
- mysql_db_name = TechnoGate::Contao.instance.mysql_database_name
25
31
  localconfig = File.read("public/system/config/localconfig.php.sample")
26
32
 
27
33
  # Add MySQL credentials
@@ -40,9 +46,6 @@ Capistrano::Configuration.instance(:must_exist).load do
40
46
  end
41
47
 
42
48
  task :setup_db, :roles => :db do
43
- mysql_credentials = TechnoGate::Contao.instance.mysql_credentials
44
- mysql_db_name = TechnoGate::Contao.instance.mysql_database_name
45
-
46
49
  unless blank?(mysql_credentials)
47
50
  begin
48
51
  run <<-CMD
@@ -72,107 +75,67 @@ Capistrano::Configuration.instance(:must_exist).load do
72
75
  CMD
73
76
  end
74
77
 
75
- desc "Copy master database to staging"
76
- task :replicate_master_database, :roles => :web do
77
- mysql_credentials = TechnoGate::Contao.instance.mysql_credentials
78
- mysql_master_db_name = TechnoGate::Contao.instance.mysql_database_name("master")
79
- mysql_staging_db_name = TechnoGate::Contao.instance.mysql_database_name("staging")
80
-
81
- mysql_staging_db_backup_path = "#{configurations[:staging][:deploy_to]}/backups/#{mysql_staging_db_name}_#{Time.now.strftime('%d-%m-%Y_%H-%M-%S')}.sql"
82
-
83
- begin
84
- run <<-CMD
85
- mysqldump \
86
- --user='#{mysql_credentials[:user]}' \
87
- --password='#{mysql_credentials[:pass]}' \
88
- --default-character-set=utf8 \
89
- '#{mysql_staging_db_name}' > \
90
- '#{mysql_staging_db_backup_path}'
91
- CMD
92
-
93
- run <<-CMD
94
- bzip2 -9 '#{mysql_staging_db_backup_path}'
95
- CMD
96
-
97
- run <<-CMD
98
- mysqladmin --user='#{mysql_credentials[:user]}' --password='#{mysql_credentials[:pass]}' drop --force '#{mysql_staging_db_name}'
99
- CMD
100
- rescue
101
- puts "NOTICE: #{application}'s staging database does not exist, continuing under this assumption."
102
- end
103
-
104
- run <<-CMD
105
- mysqladmin --user='#{mysql_credentials[:user]}' --password='#{mysql_credentials[:pass]}' create '#{mysql_staging_db_name}'
106
- CMD
107
-
108
- run <<-CMD
109
- mysqldump \
110
- --user='#{mysql_credentials[:user]}' \
111
- --password='#{mysql_credentials[:pass]}' \
112
- --default-character-set=utf8 \
113
- '#{mysql_master_db_name}' > \
114
- '/tmp/#{mysql_master_db_name}.sql'
115
- CMD
116
-
117
- run <<-CMD
118
- mysql \
119
- --user='#{mysql_credentials[:user]}' \
120
- --password='#{mysql_credentials[:pass]}' \
121
- --default-character-set=utf8 \
122
- '#{mysql_staging_db_name}' < \
123
- /tmp/#{mysql_master_db_name}.sql
124
- CMD
125
-
126
- run <<-CMD
127
- rm -f '/tmp/#{mysql_master_db_name}.sql'
128
- CMD
129
- end
130
-
131
- desc "Copy master contents to staging"
132
- task :replicate_master_contents, :roles => :web do
133
- run <<-CMD
134
- cp -R #{configurations[:development][:deploy_to]}/shared/contenu #{configurations[:staging][:deploy_to]}/shared/
135
- CMD
136
- end
137
- end
138
-
139
- # This module serve as a placeholder for mysql credentials
140
- # and other stuff that would go around in contao.
141
- module TechnoGate
142
- class Contao
143
-
144
- attr_accessor :config
145
-
146
- def self.instance(deploy_to = nil)
147
- @@instance ||= Contao.new
148
-
149
- @@instance
150
- end
151
-
152
- def mysql_credentials
153
- return @mysql_credentials unless @mysql_credentials.nil?
154
-
155
- begin
156
- mysql_credentials_file = @config.capture "cat #{@config.deploy_to}/.mysql_password"
157
- rescue
158
- return false
159
- end
160
-
161
- unless mysql_credentials_file.nil? or mysql_credentials_file.empty?
162
- @mysql_credentials = {
163
- :user => mysql_credentials_file.match(/username: (.*)$/o)[1].chomp,
164
- :pass => mysql_credentials_file.match(/password: (.*)$/o)[1].chomp,
165
- }
166
- end
167
-
168
- @mysql_credentials
169
- end
170
-
171
- def mysql_database_name(branch = nil)
172
- branch ||= @config.branch
173
- "#{@config.application}_co_#{branch}"
174
- end
175
- end
78
+ # desc "Copy master database to staging"
79
+ # task :replicate_master_database, :roles => :web do
80
+ # mysql_master_db_name = mysql_db_name("master")
81
+ # mysql_staging_db_name = mysql_db_name("staging")
82
+ #
83
+ # mysql_staging_db_backup_path = "#{configurations[:staging][:deploy_to]}/backups/#{mysql_staging_db_name}_#{Time.now.strftime('%d-%m-%Y_%H-%M-%S')}.sql"
84
+ #
85
+ # begin
86
+ # run <<-CMD
87
+ # mysqldump \
88
+ # --user='#{mysql_credentials[:user]}' \
89
+ # --password='#{mysql_credentials[:pass]}' \
90
+ # --default-character-set=utf8 \
91
+ # '#{mysql_staging_db_name}' > \
92
+ # '#{mysql_staging_db_backup_path}'
93
+ # CMD
94
+ #
95
+ # run <<-CMD
96
+ # bzip2 -9 '#{mysql_staging_db_backup_path}'
97
+ # CMD
98
+ #
99
+ # run <<-CMD
100
+ # mysqladmin --user='#{mysql_credentials[:user]}' --password='#{mysql_credentials[:pass]}' drop --force '#{mysql_staging_db_name}'
101
+ # CMD
102
+ # rescue
103
+ # puts "NOTICE: #{application}'s staging database does not exist, continuing under this assumption."
104
+ # end
105
+ #
106
+ # run <<-CMD
107
+ # mysqladmin --user='#{mysql_credentials[:user]}' --password='#{mysql_credentials[:pass]}' create '#{mysql_staging_db_name}'
108
+ # CMD
109
+ #
110
+ # run <<-CMD
111
+ # mysqldump \
112
+ # --user='#{mysql_credentials[:user]}' \
113
+ # --password='#{mysql_credentials[:pass]}' \
114
+ # --default-character-set=utf8 \
115
+ # '#{mysql_master_db_name}' > \
116
+ # '/tmp/#{mysql_master_db_name}.sql'
117
+ # CMD
118
+ #
119
+ # run <<-CMD
120
+ # mysql \
121
+ # --user='#{mysql_credentials[:user]}' \
122
+ # --password='#{mysql_credentials[:pass]}' \
123
+ # --default-character-set=utf8 \
124
+ # '#{mysql_staging_db_name}' < \
125
+ # /tmp/#{mysql_master_db_name}.sql
126
+ # CMD
127
+ #
128
+ # run <<-CMD
129
+ # rm -f '/tmp/#{mysql_master_db_name}.sql'
130
+ # CMD
131
+ # end
132
+ #
133
+ # desc "Copy master contents to staging"
134
+ # task :replicate_master_contents, :roles => :web do
135
+ # run <<-CMD
136
+ # cp -R #{configurations[:development][:deploy_to]}/shared/contenu #{configurations[:staging][:deploy_to]}/shared/
137
+ # CMD
138
+ # end
176
139
  end
177
140
 
178
141
  # Dependencies
@@ -181,11 +144,15 @@ Capistrano::Configuration.instance(:must_exist).load do
181
144
  after "contao:setup_localconfig", "contao:setup_db"
182
145
  after "deploy:finalize_update", "contao:fix_links"
183
146
  after "contao:fix_links", "deploy:cleanup"
147
+ after "deploy:restart", "contao:fix_permissions"
184
148
 
185
- if branch == 'staging'
186
- before "deploy:restart", "contao:replicate_master_database"
187
- after "contao:replicate_master_database", "contao:replicate_master_contents"
188
- end
149
+ # Mysql Credentials
150
+ before "contao:setup_localconfig", "mysql:credentials"
151
+ before "contao:setup_db", "mysql:credentials"
152
+ # before "contao:replicate_master_database", "mysql:credentials"
189
153
 
190
- after "deploy:restart", "contao:fix_permissions"
154
+ # if branch == 'staging'
155
+ # before "deploy:restart", "contao:replicate_master_database"
156
+ # after "contao:replicate_master_database", "contao:replicate_master_contents"
157
+ # end
191
158
  end
@@ -1,4 +1,5 @@
1
1
  require 'capistrano'
2
+ require 'capistrano/technogate/base'
2
3
 
3
4
  # Verify that Capistrano is version 2
4
5
  unless Capistrano::Configuration.respond_to?(:instance)
@@ -6,11 +7,14 @@ unless Capistrano::Configuration.respond_to?(:instance)
6
7
  end
7
8
 
8
9
  Capistrano::Configuration.instance(:must_exist).load do
10
+ def mysql_db_name(local_branch = nil)
11
+ local_branch ||= branch
12
+ "#{application}_co_#{local_branch}"
13
+ end
14
+
9
15
  namespace :mysql do
10
16
  desc "Backup database"
11
17
  task :backup_db do
12
- mysql_credentials = TechnoGate::Contao.instance.mysql_credentials
13
- mysql_db_name = TechnoGate::Contao.instance.mysql_database_name
14
18
  MYSQL_DB_BACKUP_PATH = "#{deploy_to}/backups/#{mysql_db_name}_#{Time.now.strftime('%d-%m-%Y_%H-%M-%S')}.sql"
15
19
 
16
20
  unless blank?(mysql_credentials)
@@ -30,14 +34,13 @@ Capistrano::Configuration.instance(:must_exist).load do
30
34
  rescue
31
35
  puts "WARNING: The database doesn't exist."
32
36
  end
37
+ else
38
+ abort "MySQL credentials are empty"
33
39
  end
34
40
  end
35
41
 
36
42
  desc "drop database"
37
43
  task :drop_db do
38
- mysql_credentials = TechnoGate::Contao.instance.mysql_credentials
39
- mysql_db_name = TechnoGate::Contao.instance.mysql_database_name
40
-
41
44
  begin
42
45
  run <<-CMD
43
46
  mysqladmin --user='#{mysql_credentials[:user]}' --password='#{mysql_credentials[:pass]}' drop --force '#{mysql_db_name}'
@@ -49,9 +52,6 @@ Capistrano::Configuration.instance(:must_exist).load do
49
52
 
50
53
  desc "create database"
51
54
  task :create_db do
52
- mysql_credentials = TechnoGate::Contao.instance.mysql_credentials
53
- mysql_db_name = TechnoGate::Contao.instance.mysql_database_name
54
-
55
55
  begin
56
56
  run <<-CMD
57
57
  mysqladmin --user='#{mysql_credentials[:user]}' --password='#{mysql_credentials[:pass]}' create '#{mysql_db_name}'
@@ -63,9 +63,6 @@ Capistrano::Configuration.instance(:must_exist).load do
63
63
 
64
64
  desc "Import a database dump"
65
65
  task :import_db_dump do
66
- mysql_credentials = TechnoGate::Contao.instance.mysql_credentials
67
- mysql_db_name = TechnoGate::Contao.instance.mysql_database_name
68
-
69
66
  unless ARGV.size >=2 and File.exists?(ARGV[1])
70
67
  puts "ERROR: please run 'cap mysql:import_db_dump <sql dump>'"
71
68
  exit 1
@@ -98,9 +95,6 @@ Capistrano::Configuration.instance(:must_exist).load do
98
95
 
99
96
  desc "Export a database dump"
100
97
  task :export_db_dump do
101
- mysql_credentials = TechnoGate::Contao.instance.mysql_credentials
102
- mysql_db_name = TechnoGate::Contao.instance.mysql_database_name
103
-
104
98
  unless ARGV.size >=2 or File.exists?(ARGV[1])
105
99
  puts "ERROR: please run 'cap mysql:import_db_dump <sql dump>'"
106
100
  puts " <sql dump> should not exist"
@@ -125,8 +119,29 @@ Capistrano::Configuration.instance(:must_exist).load do
125
119
  end
126
120
  end
127
121
  end
122
+
123
+ desc "Get Mysql credentials"
124
+ task :credentials do
125
+ unless defined?(mysql_credentials) and !blank?(mysql_credentials)
126
+ begin
127
+ mysql_credentials_file_contents = capture "cat #{mysql_credentials_file}"
128
+ rescue
129
+ set :mysql_credentials, false
130
+ end
131
+
132
+ unless mysql_credentials_file_contents.nil? or mysql_credentials_file_contents.empty?
133
+ set :mysql_credentials, {
134
+ :user => mysql_credentials_file_contents.match(mysql_credentials_user_regex)[mysql_credentials_user_regex_match].chomp,
135
+ :pass => mysql_credentials_file_contents.match(mysql_credentials_pass_regex)[mysql_credentials_pass_regex_match].chomp,
136
+ }
137
+ end
138
+ end
139
+ end
128
140
  end
129
141
 
142
+ before "mysql:backup_db", "mysql:credentials"
143
+ before "mysql:drop_db", "mysql:credentials"
144
+ before "mysql:create_db", "mysql:credentials"
130
145
  before "mysql:import_db_dump", "mysql:backup_db"
131
146
  before "mysql:export_db_dump", "mysql:backup_db"
132
147
  end
@@ -1,4 +1,5 @@
1
1
  require 'capistrano'
2
+ require 'capistrano/technogate/base'
2
3
 
3
4
  # Verify that Capistrano is version 2
4
5
  unless Capistrano::Configuration.respond_to?(:instance)
@@ -2,8 +2,8 @@ module Capistrano
2
2
  module Technogate
3
3
  module Version #:nodoc:
4
4
  MAJOR = 0
5
- MINOR = 0
6
- TINY = 1
5
+ MINOR = 1
6
+ TINY = 0
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY].join(".")
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-technogate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: capistrano
17
- requirement: &2152070100 !ruby/object:Gem::Requirement
17
+ requirement: &2156870060 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,7 +22,7 @@ dependencies:
22
22
  version: 1.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2152070100
25
+ version_requirements: *2156870060
26
26
  description: This gem provides some receipts for helping me in my every-day development
27
27
  email:
28
28
  - wael.nasreddine@gmail.com
@@ -30,7 +30,6 @@ executables: []
30
30
  extensions: []
31
31
  extra_rdoc_files: []
32
32
  files:
33
- - ..gemspec
34
33
  - .gitignore
35
34
  - Gemfile
36
35
  - Rakefile
data/..gemspec DELETED
@@ -1,20 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "./version"
4
-
5
- Gem::Specification.new do |s|
6
- s.name = "."
7
- s.version = .::VERSION
8
- s.authors = ["Wael Nasreddine"]
9
- s.email = ["wael.nasreddine@gmail.com"]
10
- s.homepage = ""
11
- s.summary = %q{TODO: Write a gem summary}
12
- s.description = %q{TODO: Write a gem description}
13
-
14
- s.rubyforge_project = "."
15
-
16
- s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
- s.require_paths = ["lib"]
20
- end