def do_in_parent_dir
cd '../' yield cd PROJECT_NAME
end
task :environment do
PROJECT_NAME = File.basename(pwd)
end
task :create_domain => :create_frontend do
dir = "#{PROJECT_NAME}_domain" app_dir = "#{dir}/app" config_dir = "#{dir}/config" bin_dir = "#{dir}/bin" db_dir = "#{dir}/db" do_in_parent_dir do mkdir dir unless Dir.exists?(dir) mkdir app_dir unless Dir.exists?(app_dir) move "#{FRONTEND_DIR}/domain/command_processors", app_dir move "#{FRONTEND_DIR}/domain/models", app_dir move "#{FRONTEND_DIR}/domain/projections", app_dir move "#{FRONTEND_DIR}/domain/validations", app_dir remove_dir "#{FRONTEND_DIR}/domain" mkdir config_dir unless Dir.exists?(config_dir) move "#{FRONTEND_DIR}/config/disco.yml", config_dir mkdir bin_dir unless Dir.exists?(bin_dir) move "#{FRONTEND_DIR}/bin/domain_server.rb", bin_dir mkdir db_dir unless Dir.exists?(db_dir) move "#{FRONTEND_DIR}/db/migrate_domain/.", "#{db_dir}/migrate" remove_dir "#{FRONTEND_DIR}/db" if Dir["#{FRONTEND_DIR}/db/*"].empty? #todo: gemfile and gemspec end
end
task :create_projection => :create_frontend do
dir = "#{PROJECT_NAME}_projection" app_dir = "#{dir}/app" config_dir = "#{dir}/config" bin_dir = "#{dir}/bin" db_dir = "#{dir}/db" do_in_parent_dir do mkdir dir unless Dir.exists?(dir) mkdir app_dir unless Dir.exists?(app_dir) move "#{FRONTEND_DIR}/app/models", app_dir move "#{FRONTEND_DIR}/app/projections", app_dir mkdir config_dir unless Dir.exists?(config_dir) move "#{FRONTEND_DIR}/config/disco.yml", config_dir mkdir bin_dir unless Dir.exists?(bin_dir) move "#{FRONTEND_DIR}/bin/projection_servers.rb", bin_dir mkdir db_dir unless Dir.exists?(db_dir) move "#{FRONTEND_DIR}/db/migrate/.", "#{db_dir}/migrate" remove_dir "#{FRONTEND_DIR}/db" if Dir["#{FRONTEND_DIR}/db/*"].empty? #todo: gemfile and gemspec end
end
task :create_interface => :create_frontend do
dir = "#{PROJECT_NAME}_interface" app_dir = "#{dir}/app" lib_dir = "#{dir}/lib" do_in_parent_dir do mkdir dir unless Dir.exists?(dir) mkdir app_dir unless Dir.exists?(app_dir) move "#{FRONTEND_DIR}/app/commands", app_dir move "#{FRONTEND_DIR}/app/events", app_dir move "#{FRONTEND_DIR}/app/validations", app_dir mkdir lib_dir unless Dir.exists?(lib_dir) temp_dir = "#{lib_dir}/#{PROJECT_NAME}" mkdir temp_dir unless Dir.exists?(temp_dir) move "#{FRONTEND_DIR}/lib/#{PROJECT_NAME}/domain.rb", temp_dir move "#{FRONTEND_DIR}/lib/#{PROJECT_NAME}.rb", "#{lib_dir}/#{dir}.rb" #todo: delete first line in this file #todo: gemfile and gemspec end
end
task :create_frontend => :environment do
FRONTEND_DIR = "#{PROJECT_NAME}_frontend" app_dir = "#{FRONTEND_DIR}/app" lib_dir = "#{FRONTEND_DIR}/lib" do_in_parent_dir do mkdir FRONTEND_DIR unless Dir.exists?(FRONTEND_DIR) cp_r "#{PROJECT_NAME}/.", FRONTEND_DIR cp_r "#{FRONTEND_DIR}/lib/#{PROJECT_NAME}.rb", "#{lib_dir}/#{FRONTEND_DIR}.rb" #todo: delete line 2, 5 and 6 in this file end
end
desc ‘split this’ task :split => [:create_projection, :create_domain, :create_interface] do
puts 'done'
end