module SvelteOnRails::Installer::Vite

def self.install_vite(major_version: nil, minimal_version: nil)

def self.install_vite(major_version: nil, minimal_version: nil)
  iu = SvelteOnRails::Installer::Utils
  puts '-' * 80
  gu = SvelteOnRails::GemUtils
  if gu.check_gem_version('vite_rails')
    puts "vite_rails already installed, skipping this part."
  else
    # check non-existence
    iu.check_file_not_exists('config/vite.json')
    iu.check_file_not_exists('vite.config.ts')
    iu.check_folder_not_exists('app/frontend')
    # install
    gu.install_gem('vite_rails')
    Dir.chdir(Rails.root) do
      puts '++ running «bundle exec vite install» ++'
      `bundle exec vite install`
      puts '++ vite installer finished ++'
    end
  end
  # check existence
  iu.check_file_exists('config/vite.json')
  iu.check_file_exists('vite.config.ts')
  iu.check_file_exists('package.json')
  iu.check_file_exists('package-lock.json')
  iu.check_file_exists('app/frontend/entrypoints/application.js')
  iu.check_folder_exists('app/frontend')
  # check npm package version
  ni = SvelteOnRails::Installer::Npm
  ni.install_or_update_package('vite', major_version: major_version, minimal_version: minimal_version)
end