capifony 2.1.7 → 2.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +18 -0
- data/bin/capifony +5 -2
- data/lib/capifony.rb +15 -5
- data/lib/symfony1.rb +60 -575
- data/lib/symfony1/database.rb +118 -0
- data/lib/symfony1/deploy.rb +56 -0
- data/lib/symfony1/doctrine.rb +76 -0
- data/lib/symfony1/propel.rb +57 -0
- data/lib/symfony1/shared.rb +50 -0
- data/lib/symfony1/symfony.rb +187 -0
- data/lib/symfony1/web.rb +13 -0
- data/lib/symfony2.rb +26 -528
- data/lib/symfony2/database.rb +127 -0
- data/lib/symfony2/deploy.rb +86 -0
- data/lib/symfony2/doctrine.rb +118 -0
- data/lib/symfony2/output.rb +44 -0
- data/lib/symfony2/propel.rb +80 -0
- data/lib/symfony2/symfony.rb +118 -0
- data/lib/symfony2/web.rb +69 -0
- metadata +38 -8
@@ -0,0 +1,118 @@
|
|
1
|
+
namespace :database do
|
2
|
+
namespace :dump do
|
3
|
+
desc "Dump remote database"
|
4
|
+
task :remote do
|
5
|
+
filename = "#{application}.remote_dump.#{Time.now.strftime("%Y-%m-%d_%H-%M-%S")}.sql.gz"
|
6
|
+
file = "/tmp/#{filename}"
|
7
|
+
sqlfile = "#{application}_dump.sql"
|
8
|
+
config = ""
|
9
|
+
|
10
|
+
run "cat #{shared_path}/config/databases.yml" do |ch, st, data|
|
11
|
+
config = load_database_config data, symfony_env_prod
|
12
|
+
end
|
13
|
+
|
14
|
+
sql_dump_cmd = generate_sql_command('dump', config)
|
15
|
+
run "#{sql_dump_cmd} | gzip -c > #{file}" do |ch, stream, data|
|
16
|
+
puts data
|
17
|
+
end
|
18
|
+
|
19
|
+
require "fileutils"
|
20
|
+
FileUtils.mkdir_p("backups")
|
21
|
+
get file, "backups/#{filename}"
|
22
|
+
begin
|
23
|
+
FileUtils.ln_sf(filename, "backups/#{application}.remote_dump.latest.sql.gz")
|
24
|
+
rescue NotImplementedError # hack for windows which doesnt support symlinks
|
25
|
+
FileUtils.cp_r("backups/#{filename}", "backups/#{application}.remote_dump.latest.sql.gz")
|
26
|
+
end
|
27
|
+
run "rm #{file}"
|
28
|
+
end
|
29
|
+
|
30
|
+
desc "Dump local database"
|
31
|
+
task :local do
|
32
|
+
filename = "#{application}.local_dump.#{Time.now.strftime("%Y-%m-%d_%H-%M-%S")}.sql.gz"
|
33
|
+
tmpfile = "backups/#{application}_dump_tmp.sql"
|
34
|
+
file = "backups/#{filename}"
|
35
|
+
config = load_database_config IO.read('config/databases.yml'), symfony_env_local
|
36
|
+
sqlfile = "#{application}_dump.sql"
|
37
|
+
|
38
|
+
require "fileutils"
|
39
|
+
FileUtils::mkdir_p("backups")
|
40
|
+
|
41
|
+
sql_dump_cmd = generate_sql_command('dump', config)
|
42
|
+
run_locally "#{sql_dump_cmd} > #{tmpfile}"
|
43
|
+
|
44
|
+
File.open(tmpfile, "r+") do |f|
|
45
|
+
gz = Zlib::GzipWriter.open(file)
|
46
|
+
while (line = f.gets)
|
47
|
+
gz << line
|
48
|
+
end
|
49
|
+
gz.flush
|
50
|
+
gz.close
|
51
|
+
end
|
52
|
+
|
53
|
+
begin
|
54
|
+
FileUtils.ln_sf(filename, "backups/#{application}.local_dump.latest.sql.gz")
|
55
|
+
rescue NotImplementedError # hack for windows which doesnt support symlinks
|
56
|
+
FileUtils.cp_r("backups/#{filename}", "backups/#{application}.local_dump.latest.sql.gz")
|
57
|
+
end
|
58
|
+
FileUtils.rm(tmpfile)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
namespace :move do
|
63
|
+
desc "Dump remote database, download it to local & populate here"
|
64
|
+
task :to_local do
|
65
|
+
|
66
|
+
database.dump.remote
|
67
|
+
|
68
|
+
begin
|
69
|
+
zipped_file_path = `readlink -f backups/#{application}.remote_dump.latest.sql.gz`.chop # gunzip does not work with a symlink
|
70
|
+
rescue NotImplementedError # hack for windows which doesnt support symlinks
|
71
|
+
zipped_file_path = "backups/#{application}.remote_dump.latest.sql.gz"
|
72
|
+
end
|
73
|
+
unzipped_file_path = "backups/#{application}_dump.sql"
|
74
|
+
|
75
|
+
run_locally "gunzip -c #{zipped_file_path} > #{unzipped_file_path}"
|
76
|
+
|
77
|
+
config = load_database_config IO.read('config/databases.yml'), symfony_env_local
|
78
|
+
|
79
|
+
run_locally generate_sql_command('drop', config)
|
80
|
+
run_locally generate_sql_command('create', config)
|
81
|
+
|
82
|
+
sql_import_cmd = generate_sql_command('import', config)
|
83
|
+
run_locally "#{sql_import_cmd} < #{unzipped_file_path}"
|
84
|
+
|
85
|
+
FileUtils.rm("#{unzipped_file_path}")
|
86
|
+
end
|
87
|
+
|
88
|
+
desc "Dump local database, load it to remote & populate there"
|
89
|
+
task :to_remote do
|
90
|
+
|
91
|
+
filename = "#{application}.local_dump.latest.sql.gz"
|
92
|
+
file = "backups/#{filename}"
|
93
|
+
sqlfile = "#{application}_dump.sql"
|
94
|
+
config = ""
|
95
|
+
|
96
|
+
database.dump.local
|
97
|
+
|
98
|
+
upload(file, "/tmp/#{filename}", :via => :scp)
|
99
|
+
run "gunzip -c /tmp/#{filename} > /tmp/#{sqlfile}"
|
100
|
+
|
101
|
+
run "cat #{shared_path}/config/databases.yml" do |ch, st, data|
|
102
|
+
config = load_database_config data, symfony_env_prod
|
103
|
+
end
|
104
|
+
|
105
|
+
run generate_sql_command('drop', config)
|
106
|
+
run generate_sql_command('create', config)
|
107
|
+
|
108
|
+
sql_import_cmd = generate_sql_command('import', config)
|
109
|
+
|
110
|
+
run "#{sql_import_cmd} < /tmp/#{sqlfile}" do |ch, stream, data|
|
111
|
+
puts data
|
112
|
+
end
|
113
|
+
|
114
|
+
run "rm /tmp/#{filename}"
|
115
|
+
run "rm /tmp/#{sqlfile}"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
namespace :deploy do
|
2
|
+
desc "Runs the symfony migrations"
|
3
|
+
task :migrate do
|
4
|
+
symfony.orm.migrate
|
5
|
+
end
|
6
|
+
|
7
|
+
desc "Symlink static directories and static files that need to remain between deployments."
|
8
|
+
task :share_childs do
|
9
|
+
if shared_children
|
10
|
+
shared_children.each do |link|
|
11
|
+
run "mkdir -p #{shared_path}/#{link}"
|
12
|
+
run "if [ -d #{release_path}/#{link} ] ; then rm -rf #{release_path}/#{link}; fi"
|
13
|
+
run "ln -nfs #{shared_path}/#{link} #{release_path}/#{link}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
if shared_files
|
17
|
+
shared_files.each do |link|
|
18
|
+
link_dir = File.dirname("#{shared_path}/#{link}")
|
19
|
+
run "mkdir -p #{link_dir}"
|
20
|
+
run "touch #{shared_path}/#{link}"
|
21
|
+
run "ln -nfs #{shared_path}/#{link} #{release_path}/#{link}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "Customize the finalize_update task to work with symfony."
|
27
|
+
task :finalize_update, :except => { :no_release => true } do
|
28
|
+
run "chmod -R g+w #{latest_release}" if fetch(:group_writable, true)
|
29
|
+
run "mkdir -p #{latest_release}/cache"
|
30
|
+
run "chmod -R g+w #{latest_release}/cache"
|
31
|
+
|
32
|
+
# Share common files & folders
|
33
|
+
share_childs
|
34
|
+
|
35
|
+
if fetch(:normalize_asset_timestamps, true)
|
36
|
+
stamp = Time.now.utc.strftime("%Y%m%d%H%M.%S")
|
37
|
+
asset_paths = asset_children.map { |p| "#{latest_release}/#{p}" }.join(" ")
|
38
|
+
run "find #{asset_paths} -exec touch -t #{stamp} {} ';'; true", :env => { "TZ" => "UTC" }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
desc "Need to overwrite the deploy:cold task so it doesn't try to run the migrations."
|
43
|
+
task :cold do
|
44
|
+
update
|
45
|
+
symfony.orm.build_db_and_load
|
46
|
+
start
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "Deploy the application and run the test suite."
|
50
|
+
task :testall do
|
51
|
+
update_code
|
52
|
+
create_symlink
|
53
|
+
symfony.orm.build_db_and_load
|
54
|
+
symfony.tests.all
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
namespace :symfony do
|
2
|
+
namespace :doctrine do
|
3
|
+
desc "Compile doctrine"
|
4
|
+
task :compile do
|
5
|
+
run "cd #{latest_release} && #{php_bin} ./symfony doctrine:compile"
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "Ensure Doctrine is correctly configured"
|
9
|
+
task :setup do
|
10
|
+
conf_files_exists = capture("if test -s #{shared_path}/config/databases.yml ; then echo 'exists' ; fi").strip
|
11
|
+
if (!conf_files_exists.eql?("exists"))
|
12
|
+
symfony.configure.database
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
desc "Execute a DQL query and view the results"
|
17
|
+
task :dql do
|
18
|
+
prompt_with_default(:query, "")
|
19
|
+
|
20
|
+
stream "cd #{latest_release} && #{php_bin} ./symfony doctrine:dql #{query} --env=#{symfony_env_prod}"
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "Dumps data to the fixtures directory"
|
24
|
+
task :data_dump do
|
25
|
+
run "cd #{latest_release} && #{php_bin} ./symfony doctrine:data-dump --env=#{symfony_env_prod}"
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "Loads YAML fixture data"
|
29
|
+
task :data_load do
|
30
|
+
run "cd #{latest_release} && #{php_bin} ./symfony doctrine:data-load --env=#{symfony_env_prod}"
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "Loads YAML fixture data without remove"
|
34
|
+
task :data_load_append do
|
35
|
+
run "cd #{latest_release} && #{php_bin} ./symfony doctrine:data-load --append --env=#{symfony_env_prod}"
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "Migrates database to current version"
|
39
|
+
task :migrate do
|
40
|
+
run "cd #{latest_release} && #{php_bin} ./symfony doctrine:migrate --env=#{symfony_env_prod}"
|
41
|
+
end
|
42
|
+
|
43
|
+
desc "Generate model lib form and filters classes based on your schema"
|
44
|
+
task :build_classes do
|
45
|
+
run "cd #{latest_release} && #{php_bin} ./symfony doctrine:build --all-classes --env=#{symfony_env_prod}"
|
46
|
+
end
|
47
|
+
|
48
|
+
desc "Generate code & database based on your schema"
|
49
|
+
task :build_all do
|
50
|
+
if Capistrano::CLI.ui.agree("Do you really want to rebuild #{symfony_env_prod}'s database? (y/N)")
|
51
|
+
run "cd #{latest_release} && #{php_bin} ./symfony doctrine:build --all --no-confirmation --env=#{symfony_env_prod}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
desc "Generate code & database based on your schema & load fixtures"
|
56
|
+
task :build_all_and_load do
|
57
|
+
if Capistrano::CLI.ui.agree("Do you really want to rebuild #{symfony_env_prod}'s database and load #{symfony_env_prod}'s fixtures? (y/N)")
|
58
|
+
run "cd #{latest_release} && #{php_bin} ./symfony doctrine:build --all --and-load --no-confirmation --env=#{symfony_env_prod}"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
desc "Generate sql & database based on your schema"
|
63
|
+
task :build_db do
|
64
|
+
if Capistrano::CLI.ui.agree("Do you really want to rebuild #{symfony_env_prod}'s database? (y/N)")
|
65
|
+
run "cd #{latest_release} && #{php_bin} ./symfony doctrine:build --sql --db --no-confirmation --env=#{symfony_env_prod}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
desc "Generate sql & database based on your schema & load fixtures"
|
70
|
+
task :build_db_and_load do
|
71
|
+
if Capistrano::CLI.ui.agree("Do you really want to rebuild #{symfony_env_prod}'s database and load #{symfony_env_prod}'s fixtures? (y/N)")
|
72
|
+
run "cd #{latest_release} && #{php_bin} ./symfony doctrine:build --sql --db --and-load --no-confirmation --env=#{symfony_env_prod}"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
namespace :symfony do
|
2
|
+
namespace :propel do
|
3
|
+
desc "Ensure Propel is correctly configured"
|
4
|
+
task :setup do
|
5
|
+
conf_files_exists = capture("if test -s #{shared_path}/config/propel.ini -a -s #{shared_path}/config/databases.yml ; then echo 'exists' ; fi").strip
|
6
|
+
|
7
|
+
# share childs again (for propel.ini file)
|
8
|
+
shared_files << "config/propel.ini"
|
9
|
+
deploy.share_childs
|
10
|
+
|
11
|
+
if (!conf_files_exists.eql?("exists"))
|
12
|
+
run "cp #{symfony_lib}/plugins/sfPropelPlugin/config/skeleton/config/propel.ini #{shared_path}/config/propel.ini"
|
13
|
+
symfony.configure.database
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Migrates database to current version"
|
18
|
+
task :migrate do
|
19
|
+
puts "propel doesn't have built-in migration for now"
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "Generate model lib form and filters classes based on your schema"
|
23
|
+
task :build_classes do
|
24
|
+
run "php #{latest_release}/symfony propel:build --model --env=#{symfony_env_prod}"
|
25
|
+
run "php #{latest_release}/symfony propel:build --forms --env=#{symfony_env_prod}"
|
26
|
+
run "php #{latest_release}/symfony propel:build --filters --env=#{symfony_env_prod}"
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "Generate code & database based on your schema"
|
30
|
+
task :build_all do
|
31
|
+
if Capistrano::CLI.ui.agree("Do you really want to rebuild #{symfony_env_prod}'s database? (y/N)")
|
32
|
+
run "cd #{latest_release} && #{php_bin} ./symfony propel:build --sql --db --no-confirmation --env=#{symfony_env_prod}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
desc "Generate code & database based on your schema & load fixtures"
|
37
|
+
task :build_all_and_load do
|
38
|
+
if Capistrano::CLI.ui.agree("Do you really want to rebuild #{symfony_env_prod}'s database and load #{symfony_env_prod}'s fixtures? (y/N)")
|
39
|
+
run "cd #{latest_release} && #{php_bin} ./symfony propel:build --sql --db --and-load --no-confirmation --env=#{symfony_env_prod}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
desc "Generate sql & database based on your schema"
|
44
|
+
task :build_db do
|
45
|
+
if Capistrano::CLI.ui.agree("Do you really want to rebuild #{symfony_env_prod}'s database? (y/N)")
|
46
|
+
run "cd #{latest_release} && #{php_bin} ./symfony propel:build --sql --db --no-confirmation --env=#{symfony_env_prod}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "Generate sql & database based on your schema & load fixtures"
|
51
|
+
task :build_db_and_load do
|
52
|
+
if Capistrano::CLI.ui.agree("Do you really want to rebuild #{symfony_env_prod}'s database and load #{symfony_env_prod}'s fixtures? (y/N)")
|
53
|
+
run "cd #{latest_release} && #{php_bin} ./symfony propel:build --sql --db --and-load --no-confirmation --env=#{symfony_env_prod}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
namespace :shared do
|
2
|
+
namespace :databases do
|
3
|
+
desc "Download config/databases.yml from remote server"
|
4
|
+
task :to_local do
|
5
|
+
download("#{shared_path}/config/databases.yml", "config/databases.yml", :via => :scp)
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "Upload config/databases.yml to remote server"
|
9
|
+
task :to_remote do
|
10
|
+
upload("config/databases.yml", "#{shared_path}/config/databases.yml", :via => :scp)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
namespace :log do
|
15
|
+
desc "Download all logs from remote folder to local one"
|
16
|
+
task :to_local do
|
17
|
+
download("#{shared_path}/log", "./", :via => :scp, :recursive => true)
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "Upload all logs from local folder to remote one"
|
21
|
+
task :to_remote do
|
22
|
+
upload("log", "#{shared_path}/", :via => :scp, :recursive => true)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
namespace :uploads do
|
27
|
+
desc "Download all files from remote web/uploads folder to local one"
|
28
|
+
task :to_local do
|
29
|
+
download("#{shared_path}/web/uploads", "web", :via => :scp, :recursive => true)
|
30
|
+
end
|
31
|
+
|
32
|
+
desc "Upload all files from local web/uploads folder to remote one"
|
33
|
+
task :to_remote do
|
34
|
+
upload("web/uploads", "#{shared_path}/web", :via => :scp, :recursive => true)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
namespace :symfony do
|
39
|
+
desc "Downloads symfony framework to shared directory"
|
40
|
+
task :download do
|
41
|
+
prompt_with_default(:version, symfony_version)
|
42
|
+
|
43
|
+
run <<-CMD
|
44
|
+
if [ ! -d #{shared_path}/symfony-#{version} ]; then
|
45
|
+
wget -q http://www.symfony-project.org/get/symfony-#{version}.tgz -O- | tar -zxf - -C #{shared_path};
|
46
|
+
fi
|
47
|
+
CMD
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
namespace :symfony do
|
2
|
+
desc "Runs custom symfony task"
|
3
|
+
task :default do
|
4
|
+
prompt_with_default(:task_arguments, "cache:clear")
|
5
|
+
|
6
|
+
stream "cd #{latest_release} && #{php_bin} ./symfony #{task_arguments}"
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "Downloads & runs check_configuration.php on remote"
|
10
|
+
task :check_configuration do
|
11
|
+
prompt_with_default(:version, "1.4")
|
12
|
+
|
13
|
+
run "wget http://sf-to.org/#{version}/check.php -O /tmp/check_configuration.php"
|
14
|
+
stream "#{php_bin} /tmp/check_configuration.php"
|
15
|
+
run "rm /tmp/check_configuration.php"
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Clears the cache"
|
19
|
+
task :cc do
|
20
|
+
run "cd #{latest_release} && #{try_sudo} #{php_bin} ./symfony cache:clear"
|
21
|
+
run "chmod -R g+w #{latest_release}/cache"
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Creates symbolic link to symfony lib in shared"
|
25
|
+
task :create_lib_symlink do
|
26
|
+
prompt_with_default(:version, symfony_version)
|
27
|
+
symlink_path = "#{latest_release}/lib/vendor/symfony"
|
28
|
+
|
29
|
+
run "if [ ! -d #{shared_path}/symfony-#{version} ]; then exit 1; fi;"
|
30
|
+
run "ln -nfs #{shared_path}/symfony-#{version} #{symlink_path};"
|
31
|
+
end
|
32
|
+
|
33
|
+
namespace :configure do
|
34
|
+
desc "Configure database DSN"
|
35
|
+
task :database do
|
36
|
+
prompt_with_default(:dsn, "mysql:host=localhost;dbname=#{application}")
|
37
|
+
prompt_with_default(:db_username, "root")
|
38
|
+
db_password = Capistrano::CLI.password_prompt("db_password : ")
|
39
|
+
|
40
|
+
# surpress debug log output to hide the password
|
41
|
+
current_logger_level = self.logger.level
|
42
|
+
if current_logger_level >= Capistrano::Logger::DEBUG
|
43
|
+
logger.debug %(executing "cd #{latest_release} && #{php_bin} ./symfony configure:database '#{dsn}' '#{db_username}' ***")
|
44
|
+
self.logger.level = Capistrano::Logger::INFO
|
45
|
+
end
|
46
|
+
|
47
|
+
stream "cd #{latest_release} && #{php_bin} ./symfony configure:database '#{dsn}' '#{db_username}' '#{db_password}'"
|
48
|
+
|
49
|
+
# restore logger level
|
50
|
+
self.logger.level = current_logger_level
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
namespace :project do
|
55
|
+
desc "Disables an application in a given environment"
|
56
|
+
task :disable do
|
57
|
+
run "cd #{latest_release} && #{php_bin} ./symfony project:disable #{symfony_env_prod}"
|
58
|
+
end
|
59
|
+
|
60
|
+
desc "Enables an application in a given environment"
|
61
|
+
task :enable do
|
62
|
+
run "cd #{latest_release} && #{php_bin} ./symfony project:enable #{symfony_env_prod}"
|
63
|
+
end
|
64
|
+
|
65
|
+
desc "Fixes symfony directory permissions"
|
66
|
+
task :permissions do
|
67
|
+
run "cd #{latest_release} && #{php_bin} ./symfony project:permissions"
|
68
|
+
end
|
69
|
+
|
70
|
+
desc "Optimizes a project for better performance"
|
71
|
+
task :optimize do
|
72
|
+
prompt_with_default(:application, "frontend")
|
73
|
+
|
74
|
+
run "cd #{latest_release} && #{php_bin} ./symfony project:optimize #{application}"
|
75
|
+
end
|
76
|
+
|
77
|
+
desc "Clears all non production environment controllers"
|
78
|
+
task :clear_controllers do
|
79
|
+
run "cd #{latest_release} && #{php_bin} ./symfony project:clear-controllers"
|
80
|
+
end
|
81
|
+
|
82
|
+
desc "Sends emails stored in a queue"
|
83
|
+
task :send_emails do
|
84
|
+
prompt_with_default(:message_limit, 10)
|
85
|
+
prompt_with_default(:time_limit, 10)
|
86
|
+
|
87
|
+
stream "cd #{latest_release} && #{php_bin} ./symfony project:send-emails --message-limit=#{message_limit} --time-limit=#{time_limit} --env=#{symfony_env_prod}"
|
88
|
+
end
|
89
|
+
|
90
|
+
desc 'Task to set all front controllers to a specific environment'
|
91
|
+
task :set_environment do
|
92
|
+
if (env = fetch(:symfony_env_prod, nil)) && env != 'prod'
|
93
|
+
cmd = []
|
94
|
+
apps = fetch(:symfony_apps, ['frontend'])
|
95
|
+
|
96
|
+
# First application listed becomes index.php
|
97
|
+
if app = apps.shift
|
98
|
+
cmd << "cp #{release_path}/web/#{app}_#{env}.php #{release_path}/web/index.php"
|
99
|
+
end
|
100
|
+
|
101
|
+
# All other apps are copied to their default controllers
|
102
|
+
for app in apps
|
103
|
+
cmd << "cp #{release_path}/web/#{app}_#{env}.php #{release_path}/web/#{app}.php"
|
104
|
+
end
|
105
|
+
|
106
|
+
run cmd.join(';') if cmd.join(';')
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
namespace :plugin do
|
112
|
+
desc "Publishes web assets for all plugins"
|
113
|
+
task :publish_assets do
|
114
|
+
run "cd #{latest_release} && #{php_bin} ./symfony plugin:publish-assets"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
namespace :log do
|
119
|
+
desc "Clears log files"
|
120
|
+
task :clear do
|
121
|
+
run "cd #{latest_release} && #{php_bin} ./symfony log:clear"
|
122
|
+
end
|
123
|
+
|
124
|
+
desc "Rotates an application's log files"
|
125
|
+
task :rotate do
|
126
|
+
prompt_with_default(:application, "frontend")
|
127
|
+
|
128
|
+
run "cd #{latest_release} && #{php_bin} ./symfony log:rotate #{application} #{symfony_env_prod}"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
namespace :tests do
|
133
|
+
desc "Launches all tests"
|
134
|
+
task :all do
|
135
|
+
run "cd #{latest_release} && #{php_bin} ./symfony test:all"
|
136
|
+
end
|
137
|
+
|
138
|
+
desc "Launches functional tests"
|
139
|
+
task :functional do
|
140
|
+
prompt_with_default(:application, "frontend")
|
141
|
+
|
142
|
+
run "cd #{latest_release} && #{php_bin} ./symfony test:functional #{application}"
|
143
|
+
end
|
144
|
+
|
145
|
+
desc "Launches unit tests"
|
146
|
+
task :unit do
|
147
|
+
run "cd #{latest_release} && #{php_bin} ./symfony test:unit"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
namespace :orm do
|
152
|
+
desc "Ensure symfony ORM is properly configured"
|
153
|
+
task :setup do
|
154
|
+
find_and_execute_task("symfony:#{symfony_orm}:setup")
|
155
|
+
end
|
156
|
+
|
157
|
+
desc "Migrates database to current version"
|
158
|
+
task :migrate do
|
159
|
+
find_and_execute_task("symfony:#{symfony_orm}:migrate")
|
160
|
+
end
|
161
|
+
|
162
|
+
desc "Generate model lib form and filters classes based on your schema"
|
163
|
+
task :build_classes do
|
164
|
+
find_and_execute_task("symfony:#{symfony_orm}:build_classes")
|
165
|
+
end
|
166
|
+
|
167
|
+
desc "Generate code & database based on your schema"
|
168
|
+
task :build_all do
|
169
|
+
find_and_execute_task("symfony:#{symfony_orm}:build_all")
|
170
|
+
end
|
171
|
+
|
172
|
+
desc "Generate code & database based on your schema & load fixtures"
|
173
|
+
task :build_all_and_load do
|
174
|
+
find_and_execute_task("symfony:#{symfony_orm}:build_all_and_load")
|
175
|
+
end
|
176
|
+
|
177
|
+
desc "Generate sql & database based on your schema"
|
178
|
+
task :build_db do
|
179
|
+
find_and_execute_task("symfony:#{symfony_orm}:build_db")
|
180
|
+
end
|
181
|
+
|
182
|
+
desc "Generate sql & database based on your schema & load fixtures"
|
183
|
+
task :build_db_and_load do
|
184
|
+
find_and_execute_task("symfony:#{symfony_orm}:build_db_and_load")
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|