installers = {

'API Gateway (HTTP API)' => :http,
'API Gateway (REST API)' => :rest,
'Application Load Balancer' => :alb

}.freeze

namespace :lamby do

namespace :install do

  installers.each do |name, task_name|
    desc "Install Lamby files for #{name}"
    task task_name do
      exec "#{base_path} LOCATION=#{template(task_name)}"
    end
  end

  def template(task_name)
    File.expand_path "../lamby/templates/#{task_name}.rb", __dir__
  end

  def bin_path
    ENV['BUNDLE_BIN'] || './bin'
  end

  def base_path
    if Rails::VERSION::MAJOR >= 5
      "#{RbConfig.ruby} #{bin_path}/rails app:template"
    else
      "#{RbConfig.ruby} #{bin_path}/rake rails:template"
    end
  end

end

desc "Install Lamby files for #{installers.first.first}"
task install: 'install:http'

end