Module: Textus::Protocol::Boot

Defined in:
lib/textus/protocol/boot.rb,
lib/textus/protocol/boot/catalog.rb,
lib/textus/protocol/boot/context.rb,
lib/textus/protocol/boot/protocol.rb

Defined Under Namespace

Modules: Catalog, Context, Protocol

Constant Summary collapse

PROTOCOL_ID =
PROTOCOL
CURATED_CLI_VERBS =
Catalog::CURATED_CLI_VERBS
CLI_VERBS =
Textus::Protocol::Boot::Catalog.build.freeze

Class Method Summary collapse

Class Method Details

.build(container:) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/textus/protocol/boot.rb', line 15

def self.build(container:)
  manifest = container.manifest
  envelope = Context.build(
    manifest:,
    event_store: container.store.audit_log,
    file_system: container.store.file_system,
    layout: container.layout,
  )
  envelope.merge(
    "catalog" => Catalog.build,
    "agent_protocol" => Protocol.build(manifest),
    "schemas" => build_schemas(container.schemas),
  )
end

.build_schemas(registry) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/textus/protocol/boot.rb', line 30

def self.build_schemas(registry)
  return [] unless registry

  registry.all.map do |s|
    h = { "name" => s.name, "required" => s.required, "optional" => s.optional }
    h["fields"] = s.fields unless s.fields.empty?
    h["evolution"] = s.evolution unless s.evolution.empty?
    h
  end
end

.contract_summariesObject



11
12
13
# File 'lib/textus/protocol/boot.rb', line 11

def self.contract_summaries
  Textus::Protocol::VerbRegistry.registered.to_h { |s| [s.verb.to_s, s.summary] }
end