Class: Textus::Manifest::Entry::Base::PublishContext

Inherits:
Data
  • Object
show all
Defined in:
lib/textus/manifest/entry/base.rb

Overview

Minimal context object passed into entry ‘publish_via` hooks. Everything beyond the three primitives is derived. Data.define instances are frozen, so we recompute per-call rather than memoizing — RoleScope/Hooks::Context construction is cheap.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#callObject (readonly)

Returns the value of attribute call

Returns:

  • (Object)

    the current value of call



64
65
66
# File 'lib/textus/manifest/entry/base.rb', line 64

def call
  @call
end

#containerObject (readonly)

Returns the value of attribute container

Returns:

  • (Object)

    the current value of container



64
65
66
# File 'lib/textus/manifest/entry/base.rb', line 64

def container
  @container
end

#readerObject (readonly)

Returns the value of attribute reader

Returns:

  • (Object)

    the current value of reader



64
65
66
# File 'lib/textus/manifest/entry/base.rb', line 64

def reader
  @reader
end

Instance Method Details

#emit(event, **payload) ⇒ Object



74
75
76
# File 'lib/textus/manifest/entry/base.rb', line 74

def emit(event, **payload)
  events.publish(event, ctx: hook_context, **payload)
end

#eventsObject



68
# File 'lib/textus/manifest/entry/base.rb', line 68

def events     = container.events

#hook_contextObject



70
71
72
# File 'lib/textus/manifest/entry/base.rb', line 70

def hook_context
  Textus::Hooks::Context.new(scope: scope_for_hooks)
end

#manifestObject



65
# File 'lib/textus/manifest/entry/base.rb', line 65

def manifest   = container.manifest

#read_template(name) ⇒ Object

Read a named template from the store’s templates/ directory. Raises TemplateError when the file doesn’t exist.



80
81
82
83
84
85
86
87
88
89
# File 'lib/textus/manifest/entry/base.rb', line 80

def read_template(name)
  path = File.join(container.root.to_s, "templates", name)
  unless File.exist?(path)
    raise Textus::TemplateError.new(
      "template '#{name}' not found",
      template_name: name,
    )
  end
  File.read(path)
end

#repo_rootObject



67
# File 'lib/textus/manifest/entry/base.rb', line 67

def repo_root  = File.dirname(container.root)

#rootObject



66
# File 'lib/textus/manifest/entry/base.rb', line 66

def root       = container.root