derpy 1.0.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.markdown +77 -2
- data/VERSION +1 -1
- data/bin/derpify +129 -0
- data/bin/derpy +4 -0
- data/derpy.gemspec +6 -3
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
data.tar.gz:
|
4
|
-
metadata.gz:
|
3
|
+
data.tar.gz: c434bd0c43b8d11277912b876606c268a5beca25
|
4
|
+
metadata.gz: f1dcdb795886b186e9703296792816a5fa0975fa
|
5
5
|
SHA512:
|
6
|
-
data.tar.gz:
|
7
|
-
metadata.gz:
|
6
|
+
data.tar.gz: af3b82e839d34a6f08ab66b8ddc6d7d107ef76f105da7f80524b961cc1f933ff1cb0ef677295166cdca97cd6326586e7d8b69119608faf539857330e5137859a
|
7
|
+
metadata.gz: 9c98f87dd96b5e9b072491254e12369ee021e19682fb0efe1fea3c3194832fbbd438601bac5f4bc894ae8116ce99566a4d616e97782172fb3134f84fa7299f2f
|
data/README.markdown
CHANGED
@@ -1,9 +1,17 @@
|
|
1
1
|
# Derpy
|
2
2
|
|
3
|
-
This gem provides a number of tasks which are useful for deploying Drupal projects with [Capistrano](https://github.com/capistrano/capistrano).
|
3
|
+
This gem provides a number of tasks which are useful for deploying Drupal projects with [Capistrano](https://github.com/capistrano/capistrano).
|
4
4
|
|
5
|
+
## Derpy features
|
6
|
+
|
7
|
+
* deploy Drupal project from scratch
|
8
|
+
* update Drupal project with the latest code
|
9
|
+
* pull/push databases
|
10
|
+
* pull/push files
|
11
|
+
* NO support for Drupal multi-site configurations!
|
5
12
|
|
6
13
|
## Installation
|
14
|
+
|
7
15
|
[gems](http://rubygems.org) must be installed on your system first.
|
8
16
|
|
9
17
|
### From RubyGems.org
|
@@ -15,4 +23,71 @@ This gem provides a number of tasks which are useful for deploying Drupal projec
|
|
15
23
|
$ git clone git://github.com/3sign/derpy.git
|
16
24
|
$ cd derpy
|
17
25
|
$ gem build derpy.gemspec
|
18
|
-
$ gem install derpy-{version}.gem
|
26
|
+
$ gem install derpy-{version}.gem
|
27
|
+
|
28
|
+
## Configuration
|
29
|
+
|
30
|
+
### Derpify
|
31
|
+
|
32
|
+
The command "derpify" will setup the necessary configuration files for a new Drupal project. You can alter these config files to suit your needs.
|
33
|
+
Beware that some of these settings are specific to 3SIGN's workflow.
|
34
|
+
|
35
|
+
$ derpify .
|
36
|
+
|
37
|
+
[add] writing './Capfile'
|
38
|
+
[add] making directory './config'
|
39
|
+
[add] writing './config/deploy.rb'
|
40
|
+
[add] making directory './config/deploy'
|
41
|
+
[add] writing './config/deploy/staging.rb'
|
42
|
+
[add] writing './config/deploy/production.rb'
|
43
|
+
[done] derpified!
|
44
|
+
|
45
|
+
After editing your config files just run: "derpy deploy:cold" to setup from scratch.
|
46
|
+
After that you can do incremental updates with: "derpy deploy"
|
47
|
+
|
48
|
+
### Derpy
|
49
|
+
|
50
|
+
The command "derpy" is an alias that calls the required Capistrano task, just to be fancy.
|
51
|
+
Specify the "-T" parameter to get a list of all available tasks.
|
52
|
+
|
53
|
+
$ derpy -T
|
54
|
+
|
55
|
+
cap deploy # Deploys your Drupal site, runs drush:update.
|
56
|
+
cap deploy:check # Test deployment dependencies.
|
57
|
+
cap deploy:cleanup # Removes old releases and corresponding DB backups.
|
58
|
+
cap deploy:cold # Setup a drupal site from scratch
|
59
|
+
cap deploy:create_symlink # Updates the symlink to the most recently deployed...
|
60
|
+
cap deploy:pending # Displays the commits since your last deploy.
|
61
|
+
cap deploy:pending:diff # Displays the `diff' since your last deploy.
|
62
|
+
cap deploy:rollback # Go back to the previous release (code and database)
|
63
|
+
cap deploy:rollback:code # Rolls back to the previously deployed version.
|
64
|
+
cap deploy:setup # Prepares one or more servers for deployment.
|
65
|
+
cap deploy:symlink # Deprecated API.
|
66
|
+
cap deploy:update # Copies your project and updates the symlink.
|
67
|
+
cap deploy:update_code # Copies your project to the remote servers.
|
68
|
+
cap deploy:upload # Copy files to the currently deployed version.
|
69
|
+
cap drush:backupdb # Backup the database
|
70
|
+
cap drush:cache_clear # Clear the drupal cache
|
71
|
+
cap drush:feature_revert # Revert feature
|
72
|
+
cap drush:get # Gets drush and installs it
|
73
|
+
cap drush:site_offline # Set the site offline
|
74
|
+
cap drush:site_online # Set the site online
|
75
|
+
cap drush:updatedb # Run Drupal database migrations if required
|
76
|
+
cap files:pull # Pull drupal sites files (from remote to local)
|
77
|
+
cap files:push # Push drupal sites files (from local to remote)
|
78
|
+
cap git:push_deploy_tag # Place release tag into Git and push it to origin ...
|
79
|
+
cap invoke # Invoke a single command on the remote servers.
|
80
|
+
cap manage:block_robots # Block bots via robots.txt
|
81
|
+
cap manage:pull_dump # Dump remote database and restore locally
|
82
|
+
cap manage:push_dump # Dump local database and restore remote
|
83
|
+
cap multistage:prepare # Stub out the staging config files.
|
84
|
+
cap production # Set the target stage to `production'.
|
85
|
+
cap shell # Begin an interactive Capistrano session.
|
86
|
+
cap staging # Set the target stage to `staging'.
|
87
|
+
|
88
|
+
|
89
|
+
## Credits
|
90
|
+
|
91
|
+
Inspired by [capdrupal](https://github.com/antistatique/capdrupal) and [didi](https://github.com/koenvw/didi).
|
92
|
+
|
93
|
+
Made by [3SIGN](http://www.3sign.com).
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.1
|
data/bin/derpify
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
OptionParser.new do |opts|
|
7
|
+
opts.banner = "Usage: #{File.basename($0)} [path]"
|
8
|
+
|
9
|
+
opts.on("-h", "--help", "Displays this help info") do
|
10
|
+
puts opts
|
11
|
+
exit 0
|
12
|
+
end
|
13
|
+
|
14
|
+
begin
|
15
|
+
opts.parse!(ARGV)
|
16
|
+
rescue OptionParser::ParseError => e
|
17
|
+
warn e.message
|
18
|
+
puts opts
|
19
|
+
exit 1
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
if ARGV.empty?
|
24
|
+
abort "Please specify the directory to derpify, e.g. `#{File.basename($0)} .'"
|
25
|
+
elsif !File.exists?(ARGV.first)
|
26
|
+
abort "`#{ARGV.first}' does not exist."
|
27
|
+
elsif !File.directory?(ARGV.first)
|
28
|
+
abort "`#{ARGV.first}' is not a directory."
|
29
|
+
elsif ARGV.length > 1
|
30
|
+
abort "Too many arguments; please specify only the directory to didify."
|
31
|
+
end
|
32
|
+
|
33
|
+
def unindent(string)
|
34
|
+
indentation = string[/\A\s*/]
|
35
|
+
string.strip.gsub(/^#{indentation}/, "")
|
36
|
+
end
|
37
|
+
|
38
|
+
dirname = File.basename(File.expand_path(ARGV[0]))
|
39
|
+
|
40
|
+
files = {
|
41
|
+
"Capfile" => unindent(<<-FILE),
|
42
|
+
require 'rubygems'
|
43
|
+
require 'derpy'
|
44
|
+
load 'config/deploy'
|
45
|
+
FILE
|
46
|
+
|
47
|
+
"config/deploy.rb" => 'set :stages, %w(staging production)
|
48
|
+
set :default_stage, "staging"
|
49
|
+
require "capistrano/ext/multistage"
|
50
|
+
|
51
|
+
set :application, "' + dirname + '"
|
52
|
+
set :repository, "git@git.3sign.com:git/' + dirname + '/' + dirname + '.git"
|
53
|
+
',
|
54
|
+
"config/deploy/staging.rb" => '# SERVER
|
55
|
+
set :user, "staging"
|
56
|
+
set :runner_group, "staging"
|
57
|
+
server "rd", :app, :web, :db, :primary => true
|
58
|
+
|
59
|
+
# APP
|
60
|
+
set :app_path, ""
|
61
|
+
set :domain, "default"
|
62
|
+
set :deploy_to, "/home/staging/public_html/' + dirname + '/"
|
63
|
+
|
64
|
+
# GIT
|
65
|
+
set :branch, "master"
|
66
|
+
|
67
|
+
# STAGE DB
|
68
|
+
set :db_type, "mysql"
|
69
|
+
set :db_name, "staging_' + dirname + '"
|
70
|
+
set :db_username, "staging_' + dirname + '"
|
71
|
+
set :db_password, "####"
|
72
|
+
set :db_host, "localhost"
|
73
|
+
|
74
|
+
# LOCAL DB
|
75
|
+
set :local_database, "' + dirname + '" # optional, used with manage:pull_dump
|
76
|
+
set :push_dump_enabled, true # optional, enables manage:push_dump (dangerous)
|
77
|
+
|
78
|
+
after "deploy:update", "deploy:cleanup"
|
79
|
+
',
|
80
|
+
"config/deploy/production.rb" => '# SERVER
|
81
|
+
set :user, "' + dirname + '"
|
82
|
+
set :runner_group, "' + dirname + '"
|
83
|
+
server "rd", :app, :web, :db, :primary => true
|
84
|
+
|
85
|
+
# APP
|
86
|
+
set :app_path, ""
|
87
|
+
set :domain, "default"
|
88
|
+
set :deploy_to, "/home/' + dirname + '/public_html/"
|
89
|
+
|
90
|
+
# GIT
|
91
|
+
set :branch, "master"
|
92
|
+
|
93
|
+
# PRODUCTION DB
|
94
|
+
set :db_type, "mysql"
|
95
|
+
set :db_name, "' + dirname + '_db"
|
96
|
+
set :db_username, "' + dirname + '_usr"
|
97
|
+
set :db_password, "####"
|
98
|
+
set :db_host, "localhost"
|
99
|
+
|
100
|
+
# LOCAL DB
|
101
|
+
set :local_database, "' + dirname + '" # optional, used with manage:pull_dump
|
102
|
+
set :push_dump_enabled, true # optional, enables manage:push_dump (dangerous)
|
103
|
+
|
104
|
+
after "deploy:update", "deploy:cleanup"
|
105
|
+
'
|
106
|
+
}
|
107
|
+
|
108
|
+
base = ARGV.shift
|
109
|
+
files.each do |file, content|
|
110
|
+
file = File.join(base, file)
|
111
|
+
if File.exists?(file)
|
112
|
+
warn "[skip] '#{file}' already exists"
|
113
|
+
elsif File.exists?(file.downcase)
|
114
|
+
warn "[skip] '#{file.downcase}' exists, which could conflict with `#{file}'"
|
115
|
+
else
|
116
|
+
unless File.exists?(File.dirname(file))
|
117
|
+
puts "[add] making directory '#{File.dirname(file)}'"
|
118
|
+
FileUtils.mkdir_p(File.dirname(file))
|
119
|
+
end
|
120
|
+
puts "[add] writing '#{file}'"
|
121
|
+
File.open(file, "w") { |f| f.write(content) }
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
puts "[done] derpified!"
|
126
|
+
|
127
|
+
puts ""
|
128
|
+
puts 'After editing your config files just run: "derpy deploy:cold" to setup from scratch.'
|
129
|
+
puts 'After that you can do incremental updates with: "derpy deploy"'
|
data/bin/derpy
ADDED
data/derpy.gemspec
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'derpy'
|
5
|
-
s.version = '1.
|
5
|
+
s.version = '1.1.1'
|
6
6
|
s.platform = Gem::Platform::RUBY
|
7
7
|
s.description = <<-DESC
|
8
|
-
|
8
|
+
Derpy contains a set of tasks for deploying Drupal projects with Capistrano.
|
9
9
|
DESC
|
10
|
-
s.summary = '
|
10
|
+
s.summary = 'Deploying Drupal projects with Capistrano'
|
11
11
|
|
12
12
|
s.extra_rdoc_files = [
|
13
13
|
"README.markdown"
|
@@ -16,8 +16,11 @@ Gem::Specification.new do |s|
|
|
16
16
|
"README.markdown",
|
17
17
|
"VERSION",
|
18
18
|
"derpy.gemspec",
|
19
|
+
"bin/derpify",
|
20
|
+
"bin/derpy",
|
19
21
|
"lib/derpy.rb"
|
20
22
|
]
|
23
|
+
s.executables = ["derpify", "derpy"]
|
21
24
|
s.require_path = 'lib'
|
22
25
|
|
23
26
|
s.add_dependency 'capistrano', ">= 2.13.5","<= 2.15.4"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: derpy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robin De Langhe
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2014-03-
|
12
|
+
date: 2014-03-19 00:00:00 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
@@ -34,10 +34,11 @@ dependencies:
|
|
34
34
|
version: 1.1.2
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id002
|
37
|
-
description: "
|
37
|
+
description: " Derpy contains a set of tasks for deploying Drupal projects with Capistrano.\n"
|
38
38
|
email: robin@3sign.com
|
39
|
-
executables:
|
40
|
-
|
39
|
+
executables:
|
40
|
+
- derpify
|
41
|
+
- derpy
|
41
42
|
extensions: []
|
42
43
|
|
43
44
|
extra_rdoc_files:
|
@@ -46,6 +47,8 @@ files:
|
|
46
47
|
- README.markdown
|
47
48
|
- VERSION
|
48
49
|
- derpy.gemspec
|
50
|
+
- bin/derpify
|
51
|
+
- bin/derpy
|
49
52
|
- lib/derpy.rb
|
50
53
|
homepage: http://github.com/3sign/derpy/
|
51
54
|
licenses: []
|
@@ -72,6 +75,6 @@ rubyforge_project:
|
|
72
75
|
rubygems_version: 2.0.4
|
73
76
|
signing_key:
|
74
77
|
specification_version: 4
|
75
|
-
summary:
|
78
|
+
summary: Deploying Drupal projects with Capistrano
|
76
79
|
test_files: []
|
77
80
|
|