installers = {

"Angular": :angular,
"Elm": :elm,
"React": :react,
"Vue": :vue,
"Erb": :erb,
"Coffee": :coffee,
"Typescript": :typescript,
"Svelte": :svelte,
"Stimulus": :stimulus

}.freeze

dependencies = {

"Angular": [:typescript]

}

bin_path = ENV || “./bin”

namespace :webpacker do

namespace :install do
  installers.each do |name, task_name|
    desc "Install everything needed for #{name}"
    task task_name => ["webpacker:verify_install"] do
      template = File.expand_path("../install/#{task_name}.rb", __dir__)
      base_path =
        if Rails::VERSION::MAJOR >= 5
          "#{RbConfig.ruby} #{bin_path}/rails app:template"
        else
          "#{RbConfig.ruby} #{bin_path}/rake rails:template"
        end

      dependencies[name] ||= []
      dependencies[name].each do |dependency|
        dependency_template = File.expand_path("../install/#{dependency}.rb", __dir__)
        system "#{base_path} LOCATION=#{dependency_template}"
      end

      exec "#{base_path} LOCATION=#{template}"
    end
  end
end

end