capistrano-demonz 0.0.7 → 0.0.8

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.
data/README.md CHANGED
@@ -2,7 +2,18 @@
2
2
 
3
3
  Capistrano recipes developed for use by [Demonz Media](http://demonzmedia.com).
4
4
 
5
- **Current version:** 0.0.5
5
+ **Current version:** 0.0.8
6
+
7
+ ## Changes ##
8
+ ### 0.0.8 ###
9
+ * Added 'deploy:delete_release' for the Drupal recipe, lets you remove a specific release (and cleanup as required).
10
+
11
+ ### 0.0.6/0.0.7
12
+ * Fixed a number of bugs and default settings issues.
13
+ * Added automated Compass (SASS) compilation
14
+
15
+ ### 0.0.5
16
+ * Initial stable release
6
17
 
7
18
  Only includes a Drupal recipe for now.
8
19
 
data/lib/demonz/drupal.rb CHANGED
@@ -73,6 +73,72 @@ configuration.load do
73
73
  run "#{try_sudo} rm -Rf #{latest_release}/sites/default/files"
74
74
  end
75
75
 
76
+ desc "Delete a specified release"
77
+ task :delete_release, :roles => :web do
78
+ removed_release = ENV['RELEASE'] || fetch(:release, nil)
79
+ delete_latest = false
80
+
81
+ # If no release specified, use latest.
82
+ if removed_release.nil?
83
+ logger.important "no release specified, using latest release instead"
84
+ removed_release = releases.last
85
+
86
+ # Keep track of some extra variables for this special case.
87
+ delete_latest = true
88
+ prior_release = releases[-2]
89
+ end
90
+
91
+ # Prevent heart attacks.
92
+ confirm_deletion = text_prompt("About to delete release '#{removed_release}', continue? (Y/n) ").downcase
93
+ raise Capistrano::Error, "User unsure, exiting." if confirm_deletion != 'y'
94
+
95
+ removal_path = File.join(releases_path, removed_release)
96
+ removed_db_file = File.join(tmp_backups_path, "#{removed_release}.sql.gz")
97
+
98
+ logger.info "backing up to '#{tmp_backups_path}"
99
+ logger.important "this backup is temporary, please make sure you move it elsewhere if you need it!"
100
+ run "#{drush_bin} -r #{removal_path} sql-dump | gzip -c --best > #{removed_db_file}"
101
+ logger.info "database backed up"
102
+
103
+ if (delete_latest)
104
+ set :latest_release, :previous_release
105
+ set :previous_release, releases.length > 2 ? File.join(releases_path, releases[-3]) : nil
106
+
107
+ # Backup files dir.
108
+ removed_files_bak = File.join(tmp_backups_path, "#{removed_release}.files.tar.gz")
109
+ files_dir_location = File.join(shared_path, 'default')
110
+ run "cd #{files_dir_location} && tar -cvpf - files | #{try_sudo} gzip -c --best > #{removed_files_bak}"
111
+ logger.info "files directory backed up"
112
+
113
+ # Update 'current' symlink to previous release if removing latest.
114
+ if previous_release.nil?
115
+ logger.info "no previous release detected, removing symlink"
116
+ run "#{try_sudo} rm -f #{current_path}"
117
+ else
118
+ logger.info "updating symlink to point to previous release"
119
+ symlink
120
+
121
+ # Restore previous files dir.
122
+ previous_files_bak = File.join(backups_path, "files_before_#{removed_release}.tar.gz")
123
+ if remote_file_exists?(previous_files_bak)
124
+ logger.info "restoring previous files backup"
125
+ run "cd #{files_dir_location} && #{try_sudo} tar -xvpzf #{previous_files_bak}"
126
+ end
127
+ end
128
+ end
129
+
130
+ # Remove database.
131
+ mysql_connection = capture("#{drush_bin} -r #{removal_path} sql-connect").chomp
132
+ removed_db_name = get_db_name(application, removed_release)
133
+ delete_database(mysql_connection, removed_db_name)
134
+ logger.info "removed database"
135
+
136
+ # Remove code and release from the release file
137
+ run "#{try_sudo} rm -rf #{removal_path}; true"
138
+ remove_release_from_history(removed_release, release_file)
139
+ logger.info "removed release"
140
+ end
141
+
76
142
  namespace :web do
77
143
  desc "Disable the application and show a message screen"
78
144
  task :disable, :roles => :web do
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Demonz
3
- VERSION = "0.0.7"
3
+ VERSION = "0.0.8"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,64 +1,55 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: capistrano-demonz
3
- version: !ruby/object:Gem::Version
4
- hash: 17
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.8
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 7
10
- version: 0.0.7
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Chinthaka Godawita
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-01-09 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-01-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: railsless-deploy
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 19
29
- segments:
30
- - 1
31
- - 0
32
- - 2
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
33
21
  version: 1.0.2
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: capistrano
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: capistrano
32
+ requirement: !ruby/object:Gem::Requirement
40
33
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 49
45
- segments:
46
- - 2
47
- - 13
48
- - 5
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
49
37
  version: 2.13.5
50
38
  type: :runtime
51
- version_requirements: *id002
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 2.13.5
52
46
  description: Demonz Media recipes for Capistrano (for Drupal and other web apps).
53
- email:
47
+ email:
54
48
  - chinthaka.godawita@demonzmedia.com
55
49
  executables: []
56
-
57
50
  extensions: []
58
-
59
51
  extra_rdoc_files: []
60
-
61
- files:
52
+ files:
62
53
  - Gemfile
63
54
  - LICENSE.txt
64
55
  - README.md
@@ -71,36 +62,26 @@ files:
71
62
  - lib/demonz/version.rb
72
63
  homepage: https://github.com/demonz/capistrano-demonz
73
64
  licenses: []
74
-
75
65
  post_install_message:
76
66
  rdoc_options: []
77
-
78
- require_paths:
67
+ require_paths:
79
68
  - lib
80
- required_ruby_version: !ruby/object:Gem::Requirement
69
+ required_ruby_version: !ruby/object:Gem::Requirement
81
70
  none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
- version: "0"
89
- required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
76
  none: false
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- hash: 3
95
- segments:
96
- - 0
97
- version: "0"
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
98
81
  requirements: []
99
-
100
82
  rubyforge_project:
101
83
  rubygems_version: 1.8.24
102
84
  signing_key:
103
85
  specification_version: 3
104
86
  summary: Useful task libraries for Demonz Media recipes for Capistrano
105
87
  test_files: []
106
-