require "non-stupid-digest-assets"
require "ember-cli/html_page"

module EmberCli
  class Sprockets
    def initialize(app)
      @app = app
    end

    def register!
      assets = %r{\A#{app.name}/}

      Rails.configuration.assets.precompile << assets
      NonStupidDigestAssets.whitelist << assets
    end

    def index_html(head:, body:)
      html_page = HtmlPage.new(
        content: app.index_file.read,
        head: head,
        body: body,
      )

      html_page.render
    end

    def assets
      ["#{app.name}/assets/vendor", "#{app.name}/assets/#{ember_app_name}"]
    end

    private

    attr_reader :app

    def ember_app_name
      @ember_app_name ||= app.options.fetch(:name) { package_json.fetch(:name) }
    end

    def package_json
      @package_json ||=
        JSON.parse(app.paths.package_json_file.read).with_indifferent_access
    end
  end
end