Module: Igniter::Contracts

Defined in:
lib/igniter/contracts.rb,
lib/igniter/contracts/api.rb,
lib/igniter/contracts/errors.rb,
lib/igniter/contracts/environment.rb,
lib/igniter/contracts/contractable.rb,
lib/igniter/contracts/assembly/pack.rb,
lib/igniter/contracts/assembly/kernel.rb,
lib/igniter/contracts/assembly/profile.rb,
lib/igniter/contracts/assembly/registry.rb,
lib/igniter/contracts/execution/builder.rb,
lib/igniter/contracts/execution/runtime.rb,
lib/igniter/contracts/assembly/hook_spec.rb,
lib/igniter/contracts/assembly/node_type.rb,
lib/igniter/contracts/execution/compiler.rb,
lib/igniter/contracts/assembly/const_pack.rb,
lib/igniter/contracts/assembly/hook_specs.rb,
lib/igniter/contracts/execution/operation.rb,
lib/igniter/contracts/assembly/dsl_keyword.rb,
lib/igniter/contracts/assembly/path_access.rb,
lib/igniter/contracts/assembly/project_pack.rb,
lib/igniter/contracts/execution/diagnostics.rb,
lib/igniter/contracts/execution/step_result.rb,
lib/igniter/contracts/assembly/baseline_pack.rb,
lib/igniter/contracts/assembly/pack_manifest.rb,
lib/igniter/contracts/execution/named_values.rb,
lib/igniter/contracts/execution/const_runtime.rb,
lib/igniter/contracts/execution/compiled_graph.rb,
lib/igniter/contracts/assembly/ordered_registry.rb,
lib/igniter/contracts/assembly/step_result_pack.rb,
lib/igniter/contracts/execution/inline_executor.rb,
lib/igniter/contracts/execution/structured_dump.rb,
lib/igniter/contracts/execution/baseline_runtime.rb,
lib/igniter/contracts/execution/execution_result.rb,
lib/igniter/contracts/execution/effect_invocation.rb,
lib/igniter/contracts/execution/execution_request.rb,
lib/igniter/contracts/execution/validation_report.rb,
lib/igniter/contracts/execution/compilation_report.rb,
lib/igniter/contracts/execution/diagnostics_report.rb,
lib/igniter/contracts/execution/validation_finding.rb,
lib/igniter/contracts/assembly/hook_result_policies.rb,
lib/igniter/contracts/execution/baseline_validators.rb,
lib/igniter/contracts/execution/diagnostics_section.rb,
lib/igniter/contracts/execution/step_result_runtime.rb,
lib/igniter/contracts/execution/baseline_normalizers.rb,
lib/igniter/contracts/execution/mutable_named_values.rb,
lib/igniter/contracts/execution/step_result_validators.rb,
lib/igniter/contracts/execution/step_result_diagnostics.rb

Defined Under Namespace

Modules: Assembly, Contractable, Execution Classes: Environment, ValidationError

Constant Summary collapse

Registry =
Assembly::Registry
OrderedRegistry =
Assembly::OrderedRegistry
Pack =
Assembly::Pack
PackManifest =
Assembly::PackManifest
NodeType =
Assembly::NodeType
DslKeyword =
Assembly::DslKeyword
HookResultPolicies =
Assembly::HookResultPolicies
HookSpec =
Assembly::HookSpec
HookSpecs =
Assembly::HookSpecs
Profile =
Assembly::Profile
Kernel =
Assembly::Kernel
PathAccess =
Assembly::PathAccess
BaselinePack =
Assembly::BaselinePack
ConstPack =
Assembly::ConstPack
ProjectPack =
Assembly::ProjectPack
StepResultPack =
Assembly::StepResultPack
CompiledGraph =
Execution::CompiledGraph
Builder =
Execution::Builder
Compiler =
Execution::Compiler
ExecutionResult =
Execution::ExecutionResult
Runtime =
Execution::Runtime
DiagnosticsReport =
Execution::DiagnosticsReport
Diagnostics =
Execution::Diagnostics
BaselineNormalizers =
Execution::BaselineNormalizers
BaselineValidators =
Execution::BaselineValidators
BaselineRuntime =
Execution::BaselineRuntime
ConstRuntime =
Execution::ConstRuntime
InlineExecutor =
Execution::InlineExecutor
Operation =
Execution::Operation
NamedValues =
Execution::NamedValues
EffectInvocation =
Execution::EffectInvocation
ExecutionRequest =
Execution::ExecutionRequest
DiagnosticsSection =
Execution::DiagnosticsSection
ValidationFinding =
Execution::ValidationFinding
ValidationReport =
Execution::ValidationReport
CompilationReport =
Execution::CompilationReport
MutableNamedValues =
Execution::MutableNamedValues
StepResult =
Execution::StepResult
Error =
Class.new(StandardError)
FrozenKernelError =
Class.new(Error)
FrozenRegistryError =
Class.new(Error)
DuplicateRegistrationError =
Class.new(Error)
UnknownDslKeywordError =
Class.new(Error)
UnknownNodeKindError =
Class.new(Error)
UnknownEffectError =
Class.new(Error)
UnknownExecutorError =
Class.new(Error)
ProfileMismatchError =
Class.new(Error)
IncompletePackError =
Class.new(Error)
UnknownPackDependencyError =
Class.new(Error)
CircularPackDependencyError =
Class.new(Error)
InvalidHookImplementationError =
Class.new(Error)
InvalidHookResultError =
Class.new(Error)

Class Method Summary collapse

Class Method Details

.apply_effect(effect_name, payload:, context: {}, profile: default_profile) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
# File 'lib/igniter/contracts/api.rb', line 61

def apply_effect(effect_name, payload:, context: {}, profile: default_profile)
  effect = profile.effect(effect_name)
  invocation = Execution::EffectInvocation.new(
    payload: payload,
    context: context,
    profile: profile
  )
  effect.call(invocation: invocation)
rescue KeyError
  raise UnknownEffectError, "unknown effect #{effect_name}"
end

.build_kernel(*packs) ⇒ Object



6
7
8
# File 'lib/igniter/contracts/api.rb', line 6

def build_kernel(*packs)
  install_packs(Assembly::Kernel.new.install(BaselinePack), packs)
end

.build_profile(*packs) ⇒ Object



10
11
12
# File 'lib/igniter/contracts/api.rb', line 10

def build_profile(*packs)
  build_kernel(*packs).finalize
end

.compilation_report(profile: default_profile, &block) ⇒ Object



34
35
36
# File 'lib/igniter/contracts/api.rb', line 34

def compilation_report(profile: default_profile, &block)
  Execution::Compiler.compilation_report(profile: profile, &block)
end

.compile(profile: default_profile, &block) ⇒ Object



26
27
28
# File 'lib/igniter/contracts/api.rb', line 26

def compile(profile: default_profile, &block)
  Execution::Compiler.compile(profile: profile, &block)
end

.default_kernelObject



18
19
20
# File 'lib/igniter/contracts/api.rb', line 18

def default_kernel
  @default_kernel ||= build_kernel
end

.default_profileObject



22
23
24
# File 'lib/igniter/contracts/api.rb', line 22

def default_profile
  @default_profile ||= default_kernel.finalize
end

.diagnose(result, profile: default_profile) ⇒ Object



57
58
59
# File 'lib/igniter/contracts/api.rb', line 57

def diagnose(result, profile: default_profile)
  Execution::Diagnostics.build_report(result: result, profile: profile)
end

.execute(compiled_graph, inputs:, profile: default_profile) ⇒ Object



38
39
40
# File 'lib/igniter/contracts/api.rb', line 38

def execute(compiled_graph, inputs:, profile: default_profile)
  execute_with(:inline, compiled_graph, inputs: inputs, profile: profile)
end

.execute_with(executor_name, compiled_graph, inputs:, profile: default_profile, runtime: Execution::Runtime) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/igniter/contracts/api.rb', line 42

def execute_with(executor_name, compiled_graph, inputs:, profile: default_profile, runtime: Execution::Runtime)
  executor = profile.executor(executor_name)
  hook_spec = Assembly::HookSpecs.fetch(:executors)
  invocation = Execution::ExecutionRequest.new(
    compiled_graph: compiled_graph,
    inputs: inputs,
    profile: profile,
    runtime: runtime
  )
  result = executor.call(invocation: invocation)
  hook_spec.validate_result!(executor_name, result)
rescue KeyError
  raise UnknownExecutorError, "unknown executor #{executor_name}"
end

.reset_defaults!Object



73
74
75
76
# File 'lib/igniter/contracts/api.rb', line 73

def reset_defaults!
  @default_kernel = nil
  @default_profile = nil
end

.validation_report(profile: default_profile, &block) ⇒ Object



30
31
32
# File 'lib/igniter/contracts/api.rb', line 30

def validation_report(profile: default_profile, &block)
  Execution::Compiler.validation_report(profile: profile, &block)
end

.with(*packs) ⇒ Object



14
15
16
# File 'lib/igniter/contracts/api.rb', line 14

def with(*packs)
  Environment.new(profile: build_profile(*packs))
end