module SvelteOnRails::Installer::HelloWorld

def self.install_hello_world(templates, force: false, app_root: nil, silent: false)

def self.install_hello_world(templates, force: false, app_root: nil, silent: false)
  utils_i = SvelteOnRails::Installer::Utils
  # write templates
  utils_i.write_templates(templates, ask_for_overwrite: !force, app_root: app_root, silent: silent)
  # route
  route = 'svelte_on_rails_hello_world#index'
  utils_i.add_route("  get \"#{route.sub('#', '/')}\"", app_root: app_root)
  utils_i.add_route("  get \"svelte_on_rails_hello_world/backend_frontend_rendered\"", app_root: app_root)
  utils_i.add_route("  get \"svelte_on_rails_hello_world/ssr_auto_rendered\"", app_root: app_root)
  rr = utils_i.which_root_route(app_root)
  root_url = "/"
  url = root_url + route.sub('#', '/')
  if rr && rr == route
    puts "Root route «#{route}» already exists, skipping."
    root_url
  elsif rr && utils_i.route_exists?(route.sub('#', '/'))
    puts "route «#{route}» already exists, skipping."
    url
  elsif rr
    url
  else
    utils_i.add_route('  root "svelte_on_rails_hello_world#index"', app_root: app_root)
    root_url
  end
end

def self.remove_hello_world(templates = ['rails_vite_hello_world'], app_root: nil, ask: true)

def self.remove_hello_world(templates = ['rails_vite_hello_world'], app_root: nil, ask: true)
  utils = SvelteOnRails::Installer::Utils
  files = utils.template_paths(templates, app_root: app_root)
  existing_files = files.dup.select { |f| File.exist?(f[2]) }
  if ask && existing_files.any?
    question = "Remove Hello World component?\nThe following files will be removed:\n#{existing_files.map { |f| f[1] }.join("\n")}"
    return unless utils.ask_yn(question)
  end
  existing_files.each do |f|
    File.delete(f[2])
  end
  puts "Removed Hello World component files."
  utils.remove_line_from_file(
    utils.app_root_path(app_root).join('config/routes.rb'),
    "svelte_on_rails_hello_world",
    force: !ask,
  )
end