Sha256: d43cf2641a5943bb0b3f56bfd533944de4adedc1d2c6105eb7123ad86ca78d6e

Contents?: true

Size: 1.98 KB

Versions: 18

Compression:

Stored size: 1.98 KB

Contents

# frozen_string_literal: true

require 'fileutils'
require 'rubycritic/configuration'
require 'rubycritic/generators/html/overview'
require 'rubycritic/generators/html/smells_index'
require 'rubycritic/generators/html/code_index'
require 'rubycritic/generators/html/simple_cov_index'
require 'rubycritic/generators/html/code_file'

module RubyCritic
  module Generator
    class HtmlReport
      ASSETS_DIR = File.expand_path('html/assets', __dir__)

      def initialize(analysed_modules)
        @analysed_modules = analysed_modules
      end

      def generate_report
        create_directories_and_files
        copy_assets_to_report_directory
        puts "New critique at #{report_location}"
        browser.open unless Config.no_browser
      end

      def browser
        @browser ||= RubyCritic::Browser.new(report_location)
      end

      private

      def create_directories_and_files
        Array(generators).each do |generator|
          FileUtils.mkdir_p(generator.file_directory)
          File.open(generator.file_pathname, 'w+') do |file|
            file.write(generator.render)
          end
        end
      end

      def generators
        [overview_generator, code_index_generator, smells_index_generator, simple_cov_index_generator] + file_generators
      end

      def overview_generator
        @overview_generator ||= Html::Overview.new(@analysed_modules)
      end

      def code_index_generator
        Html::CodeIndex.new(@analysed_modules)
      end

      def smells_index_generator
        Html::SmellsIndex.new(@analysed_modules)
      end

      def simple_cov_index_generator
        Html::SimpleCovIndex.new(@analysed_modules)
      end

      def file_generators
        @analysed_modules.map do |analysed_module|
          Html::CodeFile.new(analysed_module)
        end
      end

      def copy_assets_to_report_directory
        FileUtils.cp_r(ASSETS_DIR, Config.root)
      end

      def report_location
        overview_generator.file_href
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 2 rubygems

Version Path
rubycritic-4.8.0 lib/rubycritic/generators/html_report.rb
rubycritic-4.7.0 lib/rubycritic/generators/html_report.rb
rubycritic-4.6.1 lib/rubycritic/generators/html_report.rb
rubycritic-4.6.0 lib/rubycritic/generators/html_report.rb
rubycritic-4.5.2 lib/rubycritic/generators/html_report.rb
rubycritic-4.5.1 lib/rubycritic/generators/html_report.rb
rubycritic-4.5.0 lib/rubycritic/generators/html_report.rb
rubycritic-4.4.1 lib/rubycritic/generators/html_report.rb
rubycritic-4.4.0 lib/rubycritic/generators/html_report.rb
rubycritic-4.3.3 lib/rubycritic/generators/html_report.rb
rubycritic-4.3.2 lib/rubycritic/generators/html_report.rb
rubycritic-4.3.1 lib/rubycritic/generators/html_report.rb
rubycritic-4.3.0 lib/rubycritic/generators/html_report.rb
rubycritic-4.2.2 lib/rubycritic/generators/html_report.rb
rubycritic-4.2.1 lib/rubycritic/generators/html_report.rb
rubycritic-4.2.0 lib/rubycritic/generators/html_report.rb
rubycritic-simplecov-4.1.1 lib/rubycritic/generators/html_report.rb
rubycritic-simplecov-4.1.0 lib/rubycritic/generators/html_report.rb