lib/vite_ruby/cli.rb



# frozen_string_literal: true

require 'dry/cli'

# Public: Command line interface that allows to install the library, and run
# simple commands.
class ViteRuby::CLI
  extend Dry::CLI::Registry

  register 'build', Build, aliases: ['b']
  register 'clobber', Clobber, aliases: %w[clean clear]
  register 'dev', Dev, aliases: %w[d serve]
  register 'install', Install
  register 'ssr', SSR
  register 'version', Version, aliases: ['v', '-v', '--version', 'info']
  register 'upgrade', Upgrade, aliases: ['update']
  register 'upgrade_packages', UpgradePackages, aliases: ['update_packages']

  # Internal: Allows framework-specific variants to extend the CLI.
  def self.require_framework_libraries(path = 'cli')
    ViteRuby.framework_libraries.each do |_framework, library|
      require [library.name.tr('-', '/').to_s, path].compact.join('/')
    end
  rescue LoadError
    require_framework_libraries 'installation' unless path == 'installation'
  end
end

# NOTE: This allows framework-specific variants to extend the CLI.
ViteRuby::CLI.require_framework_libraries('cli')