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
-
.apply_effect(effect_name, payload:, context: {}, profile: default_profile) ⇒ Object
-
.build_kernel(*packs) ⇒ Object
-
.build_profile(*packs) ⇒ Object
-
.compilation_report(profile: default_profile, &block) ⇒ Object
-
.compile(profile: default_profile, &block) ⇒ Object
-
.default_kernel ⇒ Object
-
.default_profile ⇒ Object
-
.diagnose(result, profile: default_profile) ⇒ Object
-
.execute(compiled_graph, inputs:, profile: default_profile) ⇒ Object
-
.execute_with(executor_name, compiled_graph, inputs:, profile: default_profile, runtime: Execution::Runtime) ⇒ Object
-
.reset_defaults! ⇒ Object
-
.validation_report(profile: default_profile, &block) ⇒ Object
-
.with(*packs) ⇒ Object
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
.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_kernel ⇒ Object
18
19
20
|
# File 'lib/igniter/contracts/api.rb', line 18
def default_kernel
@default_kernel ||= build_kernel
end
|
.default_profile ⇒ Object
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
|