Module: Igniter::Extensions::Contracts::ProvenancePack

Defined in:
lib/igniter/extensions/contracts/provenance_pack.rb

Constant Summary collapse

REPORT_CONTRIBUTOR =
Module.new do
  module_function

  def augment(report:, result:, profile:) # rubocop:disable Lint/UnusedMethodArgument
    summary = result.outputs.keys.sort.each_with_object({}) do |output_name, memo|
      lineage = Igniter::Extensions::Contracts::ProvenancePack.lineage(result, output_name)
      memo[output_name] = {
        value: lineage.value,
        contributing_inputs: lineage.contributing_inputs
      }
    end

    report.add_section(:provenance, { outputs: summary })
  end
end

Class Method Summary collapse

Class Method Details

.explain(result, output_name) ⇒ Object



46
47
48
# File 'lib/igniter/extensions/contracts/provenance_pack.rb', line 46

def explain(result, output_name)
  lineage(result, output_name).explain
end

.install_into(kernel) ⇒ Object



37
38
39
40
# File 'lib/igniter/extensions/contracts/provenance_pack.rb', line 37

def install_into(kernel)
  kernel.diagnostics_contributors.register(:provenance, REPORT_CONTRIBUTOR)
  kernel
end

.lineage(result, output_name) ⇒ Object



42
43
44
# File 'lib/igniter/extensions/contracts/provenance_pack.rb', line 42

def lineage(result, output_name)
  Provenance::Builder.build(output_name, result)
end

.manifestObject



30
31
32
33
34
35
# File 'lib/igniter/extensions/contracts/provenance_pack.rb', line 30

def manifest
  Igniter::Contracts::PackManifest.new(
    name: :extensions_provenance,
    registry_contracts: [Igniter::Contracts::PackManifest.diagnostic(:provenance)]
  )
end