capistrano-technogate 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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