Module: Igniter::Extensions::Contracts::AuditPack

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

Constant Summary collapse

REPORT_CONTRIBUTOR =
Module.new do
  module_function

  def augment(report:, result:, profile:) # rubocop:disable Lint/UnusedMethodArgument
    snapshot = AuditPack.snapshot(result)
    report.add_section(:audit_summary, {
                         graph: snapshot.graph,
                         event_count: snapshot.event_count,
                         event_types: snapshot.event_types,
                         state_count: snapshot.states.length,
                         output_names: snapshot.output_names
                       })
  end
end

Class Method Summary collapse

Class Method Details

.install_into(kernel) ⇒ Object



36
37
38
39
# File 'lib/igniter/extensions/contracts/audit_pack.rb', line 36

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

.manifestObject



28
29
30
31
32
33
34
# File 'lib/igniter/extensions/contracts/audit_pack.rb', line 28

def manifest
  Igniter::Contracts::PackManifest.new(
    name: :extensions_audit,
    registry_contracts: [Igniter::Contracts::PackManifest.diagnostic(:audit_summary)],
    metadata: { category: :developer }
  )
end

.report(environment, inputs: nil, compiled_graph: nil, &block) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/igniter/extensions/contracts/audit_pack.rb', line 45

def report(environment, inputs: nil, compiled_graph: nil, &block)
  result =
    if block
      environment.run(inputs: inputs || {}, &block)
    elsif compiled_graph
      environment.execute(compiled_graph, inputs: inputs || {})
    else
      raise ArgumentError, "audit_report requires a block or compiled_graph"
    end

  snapshot(result)
end

.snapshot(result) ⇒ Object



41
42
43
# File 'lib/igniter/extensions/contracts/audit_pack.rb', line 41

def snapshot(result)
  Audit::Builder.build(result)
end