capifony 2.1.9 → 2.1.10
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/CHANGELOG +20 -0
- data/bin/capifony +4 -4
- data/lib/capifony.rb +2 -2
- data/lib/symfony2.rb +26 -6
- data/lib/symfony2/database.rb +4 -4
- data/lib/symfony2/deploy.rb +51 -3
- data/lib/symfony2/output.rb +8 -4
- data/lib/symfony2/symfony.rb +28 -17
- metadata +4 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
== 2.1.10 / July 16, 2012
|
2
|
+
|
3
|
+
* Fix CS
|
4
|
+
* Add ownership check before changing permissions
|
5
|
+
* Add pretty output
|
6
|
+
* Fix normalizing assets
|
7
|
+
* Fix build bootstrap
|
8
|
+
* Added set_permissions task
|
9
|
+
* Fix PR #158
|
10
|
+
* fix for remote check of composer.phar, File.exist? only checks local files
|
11
|
+
* Fix capifony script
|
12
|
+
* Use `--no-scripts` during `composer install/update` to avoid useless/duplicate processing.
|
13
|
+
* Fixed database tasks for postgresql
|
14
|
+
* Better pretty output if error raised
|
15
|
+
* Add task for updating `assets_version` in `config.yml`
|
16
|
+
* Avoid the use of try_sudo
|
17
|
+
* More `:no_release`...
|
18
|
+
* Since `:roles` isn't used in Capifony, these need `:no_release` *at least*.
|
19
|
+
* Fixing missing `pretty_print`.
|
20
|
+
|
1
21
|
== 2.1.9 / July 3, 2012
|
2
22
|
|
3
23
|
* fixed regression
|
data/bin/capifony
CHANGED
@@ -53,7 +53,7 @@ if symfony_version == 2
|
|
53
53
|
files = {
|
54
54
|
"Capfile" => unindent(<<-FILE),
|
55
55
|
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
|
56
|
-
Dir['vendor/
|
56
|
+
Dir['vendor/**/Resources/recipes/*.rb'].each { |bundle| load(bundle) }
|
57
57
|
load Gem.find_files('symfony2.rb').last.to_s
|
58
58
|
load '#{symfony_app_path}/config/deploy'
|
59
59
|
FILE
|
@@ -73,7 +73,7 @@ if symfony_version == 2
|
|
73
73
|
|
74
74
|
role :web, domain # Your HTTP server, Apache/etc
|
75
75
|
role :app, domain # This may be the same as your `Web` server
|
76
|
-
role :db, domain, :primary => true # This is where
|
76
|
+
role :db, domain, :primary => true # This is where Symfony2 migrations will run
|
77
77
|
|
78
78
|
set :keep_releases, 3
|
79
79
|
|
@@ -100,7 +100,7 @@ set :scm, :git
|
|
100
100
|
|
101
101
|
role :web, domain # Your HTTP server, Apache/etc
|
102
102
|
role :app, domain # This may be the same as your `Web` server
|
103
|
-
role :db, domain, :primary => true # This is where
|
103
|
+
role :db, domain, :primary => true # This is where symfony migrations will run
|
104
104
|
|
105
105
|
set :keep_releases, 3'
|
106
106
|
}
|
@@ -122,4 +122,4 @@ files.each do |file, content|
|
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
125
|
-
puts "[done]
|
125
|
+
puts "[done] symfony #{symfony_version.to_s} project capifonied!"
|
data/lib/capifony.rb
CHANGED
@@ -48,7 +48,7 @@ namespace :deploy do
|
|
48
48
|
DESC
|
49
49
|
task :setup, :except => { :no_release => true } do
|
50
50
|
dirs = [deploy_to, releases_path, shared_path]
|
51
|
-
run "
|
52
|
-
run "
|
51
|
+
run "mkdir -p #{dirs.join(' ')}"
|
52
|
+
run "chmod g+w #{dirs.join(' ')}" if fetch(:group_writable, true)
|
53
53
|
end
|
54
54
|
end
|
data/lib/symfony2.rb
CHANGED
@@ -51,6 +51,9 @@ set :dump_assetic_assets, false
|
|
51
51
|
# Assets install
|
52
52
|
set :assets_install, true
|
53
53
|
|
54
|
+
# Whether to update `assets_version` in `config.yml`
|
55
|
+
set :update_assets_version, false
|
56
|
+
|
54
57
|
# Files that need to remain the same between deploys
|
55
58
|
set :shared_files, false
|
56
59
|
|
@@ -60,6 +63,15 @@ set :shared_children, [log_path, web_path + "/uploads"]
|
|
60
63
|
# Asset folders (that need to be timestamped)
|
61
64
|
set :asset_children, [web_path + "/css", web_path + "/images", web_path + "/js"]
|
62
65
|
|
66
|
+
# Dirs that need to be writable by the HTTP Server (i.e. cache, log dirs)
|
67
|
+
set :writable_dirs, [log_path, cache_path]
|
68
|
+
|
69
|
+
# Name used by the Web Server (i.e. www-data for Apache)
|
70
|
+
set :webserver_user, "www-data"
|
71
|
+
|
72
|
+
# Method used to set permissions (:chmod, :acl, or :chown)
|
73
|
+
set :permission_method, false
|
74
|
+
|
63
75
|
# Model manager: (doctrine, propel)
|
64
76
|
set :model_manager, "doctrine"
|
65
77
|
|
@@ -77,7 +89,11 @@ def load_database_config(data, env)
|
|
77
89
|
end
|
78
90
|
|
79
91
|
def guess_symfony_version
|
80
|
-
capture("cd #{latest_release} && #{php_bin} #{symfony_console} --version
|
92
|
+
capture("cd #{latest_release} && #{php_bin} #{symfony_console} --version |cut -d \" \" -f 3")
|
93
|
+
end
|
94
|
+
|
95
|
+
def remote_file_exists?(full_path)
|
96
|
+
'true' == capture("if [ -e #{full_path} ]; then echo 'true'; fi").strip
|
81
97
|
end
|
82
98
|
|
83
99
|
after "deploy:finalize_update" do
|
@@ -95,25 +111,29 @@ after "deploy:finalize_update" do
|
|
95
111
|
when "install" then symfony.vendors.install
|
96
112
|
when "reinstall" then symfony.vendors.reinstall
|
97
113
|
end
|
98
|
-
else
|
99
|
-
symfony.bootstrap.build
|
100
114
|
end
|
101
115
|
end
|
102
116
|
|
117
|
+
symfony.bootstrap.build
|
118
|
+
|
103
119
|
if model_manager == "propel"
|
104
120
|
symfony.propel.build.model
|
105
121
|
end
|
106
122
|
|
107
123
|
if assets_install
|
108
|
-
symfony.assets.install
|
124
|
+
symfony.assets.install # 2. Publish bundle assets
|
109
125
|
end
|
110
126
|
|
111
127
|
if cache_warmup
|
112
|
-
symfony.cache.warmup
|
128
|
+
symfony.cache.warmup # 3. Warmup clean cache
|
129
|
+
end
|
130
|
+
|
131
|
+
if update_assets_version
|
132
|
+
symfony.assets.update_version # 4. Update `assets_version`
|
113
133
|
end
|
114
134
|
|
115
135
|
if dump_assetic_assets
|
116
|
-
symfony.assetic.dump
|
136
|
+
symfony.assetic.dump # 5. Dump assetic assets
|
117
137
|
end
|
118
138
|
end
|
119
139
|
|
data/lib/symfony2/database.rb
CHANGED
@@ -20,7 +20,7 @@ namespace :database do
|
|
20
20
|
puts data
|
21
21
|
end
|
22
22
|
when "pdo_pgsql", "pgsql"
|
23
|
-
run "pg_dump -U #{config['database_user']} #{config['database_name']} | gzip -c > #{file}" do |ch, stream, data|
|
23
|
+
run "pg_dump -U #{config['database_user']} #{config['database_name']} --clean | gzip -c > #{file}" do |ch, stream, data|
|
24
24
|
puts data
|
25
25
|
end
|
26
26
|
end
|
@@ -49,7 +49,7 @@ namespace :database do
|
|
49
49
|
when "pdo_mysql", "mysql"
|
50
50
|
`mysqldump -u#{config['database_user']} --password=\"#{config['database_password']}\" #{config['database_name']} > #{tmpfile}`
|
51
51
|
when "pdo_pgsql", "pgsql"
|
52
|
-
`pg_dump -U #{config['database_user']} #{config['database_name']} > #{tmpfile}`
|
52
|
+
`pg_dump -U #{config['database_user']} #{config['database_name']} --clean > #{tmpfile}`
|
53
53
|
end
|
54
54
|
|
55
55
|
File.open(tmpfile, "r+") do |f|
|
@@ -88,7 +88,7 @@ namespace :database do
|
|
88
88
|
when "pdo_mysql", "mysql"
|
89
89
|
`mysql -u#{config['database_user']} --password=\"#{config['database_password']}\" #{config['database_name']} < backups/#{sqlfile}`
|
90
90
|
when "pdo_pgsql", "pgsql"
|
91
|
-
`psql -U #{config['database_user']}
|
91
|
+
`psql -U #{config['database_user']} #{config['database_name']} < backups/#{sqlfile}`
|
92
92
|
end
|
93
93
|
FileUtils.rm("backups/#{sqlfile}")
|
94
94
|
end
|
@@ -115,7 +115,7 @@ namespace :database do
|
|
115
115
|
puts data
|
116
116
|
end
|
117
117
|
when "pdo_pgsql", "pgsql"
|
118
|
-
run "psql -U #{config['database_user']}
|
118
|
+
run "psql -U #{config['database_user']} #{config['database_name']} < /tmp/#{sqlfile}" do |ch, stream, data|
|
119
119
|
puts data
|
120
120
|
end
|
121
121
|
end
|
data/lib/symfony2/deploy.rb
CHANGED
@@ -1,7 +1,55 @@
|
|
1
1
|
# Overrided Capistrano tasks
|
2
2
|
namespace :deploy do
|
3
|
+
desc <<-DESC
|
4
|
+
Sets permissions for writable_dirs folders as described in the Symfony documentation
|
5
|
+
(http://symfony.com/doc/master/book/installation.html#configuration-and-setup)
|
6
|
+
DESC
|
7
|
+
task :set_permissions, :roles => :app do
|
8
|
+
if writable_dirs && permission_method
|
9
|
+
dirs = []
|
10
|
+
|
11
|
+
writable_dirs.each do |link|
|
12
|
+
if shared_children && shared_children.include?(link)
|
13
|
+
absolute_link = shared_path + "/" + link
|
14
|
+
else
|
15
|
+
absolute_link = latest_release + "/" + link
|
16
|
+
end
|
17
|
+
|
18
|
+
dirs << absolute_link
|
19
|
+
end
|
20
|
+
|
21
|
+
methods = {
|
22
|
+
:chmod => "#{try_sudo} chmod +a \"#{webserver_user} allow delete,write,append,file_inherit,directory_inherit\" %s",
|
23
|
+
:acl => "#{try_sudo} setfacl -dR -m u:#{webserver_user}:rwx %s",
|
24
|
+
:chown => "#{try_sudo} chown #{webserver_user} %s"
|
25
|
+
}
|
26
|
+
|
27
|
+
if methods[permission_method]
|
28
|
+
pretty_print "--> Setting permissions"
|
29
|
+
|
30
|
+
if use_sudo
|
31
|
+
run sprintf(methods[permission_method], dirs.join(' '))
|
32
|
+
else if permission_method == :chown
|
33
|
+
puts " You can't use chown method without sudoing"
|
34
|
+
else
|
35
|
+
dirs.each do |dir|
|
36
|
+
is_owner = (capture "`echo stat #{dir} -c %U`").chomp == user
|
37
|
+
if is_owner && permission_method != :chown
|
38
|
+
run sprintf(methods[permission_method], dir)
|
39
|
+
else
|
40
|
+
puts " #{dir} is not owned by #{user} or you are using 'chown' method without 'use_sudo'"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
puts_ok
|
45
|
+
else
|
46
|
+
puts " Permission method '#{permission_method}' does not exist.".yellow
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
3
51
|
desc "Symlinks static directories and static files that need to remain between deployments"
|
4
|
-
task :share_childs do
|
52
|
+
task :share_childs, :except => { :no_release => true } do
|
5
53
|
if shared_children
|
6
54
|
pretty_print "--> Creating symlinks for shared directories"
|
7
55
|
|
@@ -51,7 +99,7 @@ namespace :deploy do
|
|
51
99
|
else
|
52
100
|
pretty_print "--> Normalizing asset timestamps"
|
53
101
|
|
54
|
-
run "find #{asset_paths} -exec touch -t #{stamp} {} ';'
|
102
|
+
run "find #{asset_paths} -exec touch -t #{stamp} {} ';' >& /dev/null || true", :env => { "TZ" => "UTC" }
|
55
103
|
puts_ok
|
56
104
|
end
|
57
105
|
end
|
@@ -67,7 +115,7 @@ namespace :deploy do
|
|
67
115
|
end
|
68
116
|
|
69
117
|
desc "Deploys the application and runs the test suite"
|
70
|
-
task :testall do
|
118
|
+
task :testall, :except => { :no_release => true } do
|
71
119
|
update_code
|
72
120
|
create_symlink
|
73
121
|
run "cd #{latest_release} && phpunit -c #{app_path} src"
|
data/lib/symfony2/output.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require 'colored'
|
2
2
|
|
3
|
+
STDOUT.sync
|
4
|
+
$error = false
|
5
|
+
$pretty_errors_defined = false
|
6
|
+
|
3
7
|
# Be less verbose by default
|
4
8
|
logger.level = Logger::IMPORTANT
|
5
9
|
|
6
|
-
STDOUT.sync
|
7
10
|
def pretty_print(msg)
|
8
11
|
if logger.level == Logger::IMPORTANT
|
9
12
|
pretty_errors
|
@@ -16,12 +19,12 @@ def pretty_print(msg)
|
|
16
19
|
end
|
17
20
|
|
18
21
|
def puts_ok
|
19
|
-
if logger.level == Logger::IMPORTANT
|
22
|
+
if logger.level == Logger::IMPORTANT && !$error
|
20
23
|
puts '✔'.green
|
21
24
|
end
|
22
|
-
end
|
23
25
|
|
24
|
-
$
|
26
|
+
$error = false
|
27
|
+
end
|
25
28
|
|
26
29
|
def pretty_errors
|
27
30
|
if !$pretty_errors_defined
|
@@ -38,6 +41,7 @@ def pretty_errors
|
|
38
41
|
end
|
39
42
|
|
40
43
|
_write(s.red)
|
44
|
+
$error = true
|
41
45
|
end
|
42
46
|
end
|
43
47
|
end
|
data/lib/symfony2/symfony.rb
CHANGED
@@ -7,8 +7,13 @@ namespace :symfony do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
namespace :assets do
|
10
|
+
desc "Updates assets version (in config.yml)"
|
11
|
+
task :update_version, :except => { :no_release => true } do
|
12
|
+
run "sed -i 's/\\(assets_version: \\)\\(.*\\)$/\\1 #{real_revision}/g' #{latest_release}/app/config/config.yml"
|
13
|
+
end
|
14
|
+
|
10
15
|
desc "Installs bundle's assets"
|
11
|
-
task :install do
|
16
|
+
task :install, :except => { :no_release => true } do
|
12
17
|
pretty_print "--> Installing bundle's assets"
|
13
18
|
|
14
19
|
run "cd #{latest_release} && #{php_bin} #{symfony_console} assets:install #{web_path} --env=#{symfony_env_prod}"
|
@@ -18,8 +23,8 @@ namespace :symfony do
|
|
18
23
|
|
19
24
|
namespace :assetic do
|
20
25
|
desc "Dumps all assets to the filesystem"
|
21
|
-
task :dump do
|
22
|
-
|
26
|
+
task :dump, :except => { :no_release => true } do
|
27
|
+
pretty_print "--> Dumping all assets to the filesystem"
|
23
28
|
|
24
29
|
run "cd #{latest_release} && #{php_bin} #{symfony_console} assetic:dump --env=#{symfony_env_prod} --no-debug"
|
25
30
|
puts_ok
|
@@ -28,7 +33,7 @@ namespace :symfony do
|
|
28
33
|
|
29
34
|
namespace :vendors do
|
30
35
|
desc "Runs the bin/vendors script to install the vendors (fast if already installed)"
|
31
|
-
task :install do
|
36
|
+
task :install, :except => { :no_release => true } do
|
32
37
|
pretty_print "--> Installing vendors"
|
33
38
|
|
34
39
|
run "cd #{latest_release} && #{php_bin} #{symfony_vendors} install"
|
@@ -36,7 +41,7 @@ namespace :symfony do
|
|
36
41
|
end
|
37
42
|
|
38
43
|
desc "Runs the bin/vendors script to reinstall the vendors"
|
39
|
-
task :reinstall do
|
44
|
+
task :reinstall, :except => { :no_release => true } do
|
40
45
|
pretty_print "--> Reinstalling vendors"
|
41
46
|
|
42
47
|
run "cd #{latest_release} && #{php_bin} #{symfony_vendors} install --reinstall"
|
@@ -44,7 +49,7 @@ namespace :symfony do
|
|
44
49
|
end
|
45
50
|
|
46
51
|
desc "Runs the bin/vendors script to upgrade the vendors"
|
47
|
-
task :upgrade do
|
52
|
+
task :upgrade, :except => { :no_release => true } do
|
48
53
|
pretty_print "--> Upgrading vendors"
|
49
54
|
|
50
55
|
run "cd #{latest_release} && #{php_bin} #{symfony_vendors} update"
|
@@ -54,17 +59,23 @@ namespace :symfony do
|
|
54
59
|
|
55
60
|
namespace :bootstrap do
|
56
61
|
desc "Runs the bin/build_bootstrap script"
|
57
|
-
task :build do
|
62
|
+
task :build, :except => { :no_release => true } do
|
58
63
|
pretty_print "--> Building bootstrap file"
|
59
64
|
|
60
|
-
|
65
|
+
if !remote_file_exists?("#{latest_release}/#{build_bootstrap}") && true == use_composer then
|
66
|
+
build_bootstrap = "vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php"
|
67
|
+
run "cd #{latest_release} && test -f #{build_bootstrap} && #{php_bin} #{build_bootstrap} #{app_path} || echo '#{build_bootstrap} not found, skipped'"
|
68
|
+
else
|
69
|
+
run "cd #{latest_release} && test -f #{build_bootstrap} && #{php_bin} #{build_bootstrap} || echo '#{build_bootstrap} not found, skipped'"
|
70
|
+
end
|
71
|
+
|
61
72
|
puts_ok
|
62
73
|
end
|
63
74
|
end
|
64
75
|
|
65
76
|
namespace :composer do
|
66
77
|
desc "Gets composer and installs it"
|
67
|
-
task :get do
|
78
|
+
task :get, :except => { :no_release => true } do
|
68
79
|
pretty_print "--> Downloading Composer"
|
69
80
|
|
70
81
|
run "cd #{latest_release} && curl -s http://getcomposer.org/installer | #{php_bin}"
|
@@ -72,33 +83,33 @@ namespace :symfony do
|
|
72
83
|
end
|
73
84
|
|
74
85
|
desc "Runs composer to install vendors from composer.lock file"
|
75
|
-
task :install do
|
76
|
-
if !
|
86
|
+
task :install, :except => { :no_release => true } do
|
87
|
+
if !remote_file_exists?("#{latest_release}/composer.phar")
|
77
88
|
symfony.composer.get
|
78
89
|
end
|
79
90
|
|
80
91
|
pretty_print "--> Installing Composer dependencies"
|
81
92
|
|
82
|
-
run "cd #{latest_release} && #{php_bin} composer.phar install -
|
93
|
+
run "cd #{latest_release} && #{php_bin} composer.phar install --no-scripts --verbose"
|
83
94
|
puts_ok
|
84
95
|
end
|
85
96
|
|
86
97
|
desc "Runs composer to update vendors, and composer.lock file"
|
87
|
-
task :update do
|
88
|
-
if !
|
98
|
+
task :update, :except => { :no_release => true } do
|
99
|
+
if !remote_file_exists?("#{latest_release}/composer.phar")
|
89
100
|
symfony.composer.get
|
90
101
|
end
|
91
102
|
|
92
103
|
pretty_print "--> Updating Composer dependencies"
|
93
104
|
|
94
|
-
run "cd #{latest_release} && #{php_bin} composer.phar update -
|
105
|
+
run "cd #{latest_release} && #{php_bin} composer.phar update --no-scripts --verbose"
|
95
106
|
puts_ok
|
96
107
|
end
|
97
108
|
end
|
98
109
|
|
99
110
|
namespace :cache do
|
100
111
|
desc "Clears cache"
|
101
|
-
task :clear do
|
112
|
+
task :clear, :except => { :no_release => true } do
|
102
113
|
pretty_print "--> Clearing cache"
|
103
114
|
|
104
115
|
run "cd #{latest_release} && #{php_bin} #{symfony_console} cache:clear --env=#{symfony_env_prod}"
|
@@ -107,7 +118,7 @@ namespace :symfony do
|
|
107
118
|
end
|
108
119
|
|
109
120
|
desc "Warms up an empty cache"
|
110
|
-
task :warmup do
|
121
|
+
task :warmup, :except => { :no_release => true } do
|
111
122
|
pretty_print "--> Warming up cache"
|
112
123
|
|
113
124
|
run "cd #{latest_release} && #{php_bin} #{symfony_console} cache:warmup --env=#{symfony_env_prod}"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capifony
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 2.1.
|
9
|
+
- 10
|
10
|
+
version: 2.1.10
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Konstantin Kudryashov
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2012-07-
|
19
|
+
date: 2012-07-16 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: capistrano
|