Class: Serialbench::SiteGenerator
- Inherits:
-
Object
- Object
- Serialbench::SiteGenerator
- 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
-
#output_path ⇒ Object
readonly
Returns the value of attribute output_path.
-
#result ⇒ Object
readonly
Returns the value of attribute result.
-
#resultset ⇒ Object
readonly
Returns the value of attribute resultset.
Class Method Summary collapse
- .export_raw_data(resultset, data_dir) ⇒ Object
- .generate_for_result(result, output_path) ⇒ Object
- .generate_for_resultset(resultset, output_path) ⇒ Object
- .resultset_payload(resultset) ⇒ Object
Instance Method Summary collapse
- #export_raw_data_to(data_dir) ⇒ Object
- #generate_site ⇒ Object
-
#initialize(output_path:, result: nil, resultset: nil) ⇒ SiteGenerator
constructor
A new instance of SiteGenerator.
-
#libraries_information(resultset) ⇒ Object
Static capability matrix (adapter declarations) plus the versions actually measured in this resultset.
- #resultset_payload ⇒ Object
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.(output_path) @result = result if result @resultset = resultset if resultset setup_liquid_environment end |
Instance Attribute Details
#output_path ⇒ Object (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 |
#result ⇒ Object (readonly)
Returns the value of attribute result.
14 15 16 |
# File 'lib/serialbench/site_generator.rb', line 14 def result @result end |
#resultset ⇒ Object (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
.export_raw_data(resultset, data_dir) ⇒ Object
37 38 39 |
# File 'lib/serialbench/site_generator.rb', line 37 def self.export_raw_data(resultset, data_dir) new(output_path: '/dev/null', resultset: resultset).export_raw_data_to(data_dir) end |
.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 |
.resultset_payload(resultset) ⇒ Object
33 34 35 |
# File 'lib/serialbench/site_generator.rb', line 33 def self.resultset_payload(resultset) new(output_path: '/dev/null', resultset: resultset).resultset_payload end |
Instance Method Details
#export_raw_data_to(data_dir) ⇒ Object
70 71 72 73 |
# File 'lib/serialbench/site_generator.rb', line 70 def export_raw_data_to(data_dir) FileUtils.mkdir_p(data_dir) export_resultset(@resultset, data_dir) end |
#generate_site ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/serialbench/site_generator.rb', line 75 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 |
#libraries_information(resultset) ⇒ Object
Static capability matrix (adapter declarations) plus the versions actually measured in this resultset.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/serialbench/site_generator.rb', line 48 def libraries_information(resultset) versions = {} resultset.results.each do |result| serializers = result.benchmark_result.serializers || [] serializers.each { |si| versions[si.name] ||= si.version } end Serialbench::Serializers.all.filter_map do |adapter| next if adapter.name == 'syck' features = adapter.features next if features.is_a?(Array) { 'name' => adapter.name, 'format' => adapter.format.to_s, 'version' => versions[adapter.name] || 'unknown', 'features' => features.transform_values { |v| v == true } } end end |
#resultset_payload ⇒ Object
41 42 43 44 |
# File 'lib/serialbench/site_generator.rb', line 41 def resultset_payload transform_resultset_for_dashboard(@resultset) .merge('libraries' => libraries_information(@resultset)) end |