namespace :setup do
docker_tasks name = docker_container_name(true), image = docker_image_name(true) task :config_files do touch config.config_files end task :build => [:config_files, *config.build_files] do docker_build image end task :config => :start do url, cfg = docker_url(name), config.config_files.first broken, args = broken_version?(ENV['STRICTVERSION']), ["#{url}/mw-config/", config.data_path, cfg] !verified_version?(ENV['STRICTVERSION']) ? broken ? setup_broken(cfg) : setup_manual(*args << nil << true) : begin require 'mechanize' rescue LoadError => err broken ? setup_broken(err) : setup_manual(*args << err) else ENV['NOMECHANIZE'] ? broken ? setup_broken(nil) : setup_manual(*args) : setup_mechanize(*args) end fix_config(cfg, File.basename(url)) end task :dump => :config do path = File.join(docker_volume(name), config.data_directory, config.database_file) args = %W[sqlite3 -batch -cmd .mode\ insert -cmd .dump #{path} .exit] args.unshift('sudo') unless ENV['NOSUDO'] File.write(config.config_files.last, IO.popen(args, &:read).chomp) end task :setup => [:build, :config] task :export => [:dump, :clean]
end