lib/tasks/config.rake (61 lines of code) (raw):
# frozen_string_literal: true
require_relative '../gdk'
require_relative '../gdk/task_helpers'
require 'rake/clean'
desc 'Dump the configured settings'
task 'dump_config' do
puts GDK.config.dump_as_yaml
end
desc 'Regenerate all config files from scratch'
task generate_config_files: [:all]
desc 'Generate gdk.example.yml'
task 'gdk.example.yml' do |t|
path = GDK.config.gdk_root.join('support/templates/gdk.example.yml.erb')
GDK::Templates::ErbRenderer.new(path).render(t.name)
end
file GDK::Config::FILE do |t|
FileUtils.touch(t.name)
end
# Define as a task instead of a file, so it's built unconditionally
desc nil
task 'gdk-config.mk' do |t|
source = GDK.config.gdk_root.join('support/templates/makefiles/gdk-config.mk.erb')
target = GDK.config.gdk_root.join(t.name)
GDK::Templates::ErbRenderer.new(source).render(target)
end
tasks = GDK::TaskHelpers::ConfigTasks.build
configs = tasks.diffable_template_tasks.map(&:name)
desc 'Generate all config files'
task all: configs
CLOBBER.include(*configs)
# Generate a file task for each template we manage
tasks.template_tasks.each do |task|
no_op = "[NO-OP] " unless task.enabled?
desc "#{no_op}Generate #{task.name}"
file task.name => [task.template, GDK::Config::FILE, *task.rake_dependencies] do |t, args|
if task.enabled?
destination = args[:destination] || t.name
GDK::Templates::ErbRenderer.new(t.source, **task.erb_extra_args).safe_render!(destination)
block = task.post_render
# Execute post_render in context of Rake so `chmod` works.
instance_exec(t, &block) if block
end
end
end
desc 'Generate postgresql/data/gitlab.conf'
file 'postgresql/data/gitlab.conf' => ['support/templates/postgresql/data/gitlab.conf.erb', GDK::Config::FILE] do |t|
created = !File.exist?(t.name)
modified = GDK::Templates::ErbRenderer.new(t.source).safe_render!(t.name)
GDK::Command::Restart.new.run(['postgresql']) if created || modified
end
desc 'Generate postgresql-geo/data/gitlab.conf'
file 'postgresql-geo/data/gitlab.conf' => ['support/templates/postgresql-geo/data/gitlab.conf.erb', GDK::Config::FILE] do |t|
created = !File.exist?(t.name)
modified = GDK::Templates::ErbRenderer.new(t.source).safe_render!(t.name)
GDK::Command::Restart.new.run(['postgresql-geo']) if created || modified
end
desc 'Show all the claimed ports'
task :claimed_ports do
config = GDK.config.tap(&:validate!)
printf("\n| %5s | %-20s |\n", 'Port', 'Service')
printf("| %5s | %20s |\n", '-' * 5, '-' * 20)
config.port_manager.claimed_ports_and_services.keys.sort.each do |p|
printf("| %5d | %-20s |\n", p, config.port_manager.claimed_service_for_port(p))
end
end