Class: Serialbench::SiteGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/serialbench/site_generator.rb

Overview

Unified site generator for creating static HTML sites from benchmark results

Constant Summary collapse

TEMPLATE_DIR =
File.join(__dir__, 'templates')

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(output_path:, result: nil, resultset: nil) ⇒ SiteGenerator

Returns a new instance of SiteGenerator.



16
17
18
19
20
21
# File 'lib/serialbench/site_generator.rb', line 16

def initialize(output_path:, result: nil, resultset: nil)
  @output_path = File.expand_path(output_path)
  @result = result if result
  @resultset = resultset if resultset
  setup_liquid_environment
end

Instance Attribute Details

#output_pathObject (readonly)

Returns the value of attribute output_path.



14
15
16
# File 'lib/serialbench/site_generator.rb', line 14

def output_path
  @output_path
end

#resultObject (readonly)

Returns the value of attribute result.



14
15
16
# File 'lib/serialbench/site_generator.rb', line 14

def result
  @result
end

#resultsetObject (readonly)

Returns the value of attribute resultset.



14
15
16
# File 'lib/serialbench/site_generator.rb', line 14

def resultset
  @resultset
end

Class Method Details

.generate_for_result(result, output_path) ⇒ Object



23
24
25
26
# File 'lib/serialbench/site_generator.rb', line 23

def self.generate_for_result(result, output_path)
  generator = new(output_path: output_path, result: result)
  generator.generate_site
end

.generate_for_resultset(resultset, output_path) ⇒ Object



28
29
30
31
# File 'lib/serialbench/site_generator.rb', line 28

def self.generate_for_resultset(resultset, output_path)
  generator = new(output_path: output_path, resultset: resultset)
  generator.generate_site
end

Instance Method Details

#generate_siteObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/serialbench/site_generator.rb', line 33

def generate_site
  target_name = @result ? @result.environment_config.name : @resultset.name

  puts "🏗️  Generating HTML site for #{@result ? 'run' : 'resultset'}: #{target_name}"
  puts "Output: #{@output_path}"

  # Transform data for dashboard.js compatibility
  data = if @result
           transform_result_for_dashboard(@result)
         else
           transform_resultset_for_dashboard(@resultset)
         end

  prepare_output_directory
  render_site(
    {
      'data' => JSON.generate(data),
      'kind' => @result ? 'run' : 'resultset'
    },
    'format_based.liquid'
  )

  # Export raw data files for download
  export_raw_data

  puts "✅ Site generated successfully at: #{@output_path}"
  @output_path
end