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
