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/Step::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



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

def call
  @call
end

#containerObject (readonly)

Returns the value of attribute container

Returns:

  • (Object)

    the current value of container



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

def container
  @container
end

#readerObject (readonly)

Returns the value of attribute reader

Returns:

  • (Object)

    the current value of reader



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

def reader
  @reader
end

Instance Method Details

#emit(event, **payload) ⇒ Object



78
79
80
# File 'lib/textus/manifest/entry/base.rb', line 78

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

#hook_contextObject



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

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

#manifestObject



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

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.



84
85
86
87
88
89
90
91
92
93
# File 'lib/textus/manifest/entry/base.rb', line 84

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



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

def repo_root  = File.dirname(container.root)

#rootObject



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

def root       = container.root

#stepsObject



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

def steps      = container.steps