Skip to content

Instantly share code, notes, and snippets.

@Jekis
Forked from carlcraig/parameters.rake
Created January 18, 2016 09:52
Show Gist options
  • Save Jekis/29451f8c18a04147e14f to your computer and use it in GitHub Desktop.
Save Jekis/29451f8c18a04147e14f to your computer and use it in GitHub Desktop.
Capistrano Symfony Parameters
namespace :symfony do
namespace :parameters do
desc "Create parameters.yml file based on the parameters.yml.dist one. Ask for all parameters."
task :create do
on roles(:all) do
if not test("[ -f #{shared_path}/app/config/parameters.yml ]")
distParameters = YAML::load(capture("cat #{release_path}/app/config/parameters.yml.dist"))
parameters = { "parameters" => {} }
distParameters['parameters'].each do |k,v|
set :parameter, ask(k, v)
parameters['parameters'][k] = fetch(:parameter)
end
upload! StringIO.new(parameters.to_yaml(line_width: -1)), "#{shared_path}/app/config/parameters.yml"
end
end
end
desc "Update parameters.yml file based on the parameters.yml.dist one. Old parameters will be deleted, for the new ones you will be asked."
task :update do
on roles(:all) do
if test("[ -f #{shared_path}/app/config/parameters.yml ]")
distParameters = YAML::load(capture("cat #{release_path}/app/config/parameters.yml.dist"))
parameters = YAML::load(capture("cat #{shared_path}/app/config/parameters.yml"))
# Remove old parameters
parameters['parameters'].each do |k,v|
if !distParameters['parameters'].has_key?(k)
parameters['parameters'].delete(k)
end
end
# Ask for new parameters
distParameters['parameters'].each do |k,v|
if !parameters['parameters'].has_key?(k)
set :parameter, ask(k, v)
parameters['parameters'][k] = fetch(:parameter)
end
end
upload! StringIO.new(parameters.to_yaml(line_width: -1)), "#{shared_path}/app/config/parameters.yml"
end
end
end
desc "Edit parameters."
task :edit do
on roles(:all) do
if test("[ -f #{shared_path}/app/config/parameters.yml ]")
parameters = YAML::load(capture("cat #{shared_path}/app/config/parameters.yml"))
# Ask for new values
parameters['parameters'].each do |k,v|
set :parameter, ask(k, v)
parameters['parameters'][k] = fetch(:parameter)
end
upload! StringIO.new(parameters.to_yaml(line_width: -1)), "#{shared_path}/app/config/parameters.yml"
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment