lib/svelte_on_rails/configuration.rb



require "yaml"

module SvelteOnRails
  class Configuration

    def self.instance
      @instance ||= new
    end

    attr_accessor :configs

    def initialize
      @configs = {
        development: {
          watch_changes: true,
        },
        test: {
          watch_changes: true,
        }
      }
      load_yaml_config if defined?(Rails)
    end

    def watch_changes?
      if @configs[Rails.env]
        @configs[Rails.env]['watch_changes'] == true
      else
        false
      end
    end

    def rails_root
      Rails.root
    end

    def frontend_folder
      @configs['frontend_folder']
    end

    def frontend_folder_full
      rails_root.join(@configs['frontend_folder'].to_s)
    end

    def components_folder_full
      Pathname.new(frontend_folder_full).join(components_folder.to_s)
    end

    def components_folder
      @configs['components_folder']
    end

    def ssr
      rss = @configs['ssr']
      if rss == false || rss == :auto
        rss
      else
        true
      end
    end

    def dist_folder
      rails_root.join('public', 'svelteDist')
    end

    def system_type
      :vite_rails
    end

    private

    def load_yaml_config
      config_path = Rails.root.join("config", "svelte_on_rails.yml")
      return unless File.exist?(config_path)

      config_data = YAML.load_file(config_path)

      if config_data
        @configs = @configs.merge(config_data)
      end
    end
  end
end