Module: Runbook::Extensions::SharedVariables::RunHooks

Defined in:
lib/runbook/extensions/shared_variables.rb

Class Method Summary collapse

Class Method Details

._copy_ivars_to_repo(object, metadata) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/runbook/extensions/shared_variables.rb', line 27

def self._copy_ivars_to_repo(object, )
  target = _target(object)
  ivars = target.instance_variables - Runbook::DSL.dsl_ivars

  ivars.each do |ivar|
    repo_key = ivar.to_s[1..-1].to_sym
    val = target.instance_variable_get(ivar)
    [:repo][repo_key] = val
  end
end

._eqls_method(key) ⇒ Object



42
43
44
# File 'lib/runbook/extensions/shared_variables.rb', line 42

def self._eqls_method(key)
  "#{key}=".to_sym
end

._target(object) ⇒ Object



38
39
40
# File 'lib/runbook/extensions/shared_variables.rb', line 38

def self._target(object)
  object.parent.dsl
end

.register_shared_variables_hooks(base) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/runbook/extensions/shared_variables.rb', line 4

def self.register_shared_variables_hooks(base)
  base.register_hook(
    :set_ivars_hook,
    :before,
    Runbook::Statement,
  ) do |object, |
    target = SharedVariables::RunHooks._target(object)
    [:repo].each do |key, value|
      target.singleton_class.class_eval { attr_accessor key }
      target.send(SharedVariables::RunHooks._eqls_method(key), value)
    end
  end

  base.register_hook(
    :copy_ivars_to_repo_hook,
    :after,
    Runbook::Statement,
    before: :save_repo_hook
  ) do |object, |
    SharedVariables::RunHooks._copy_ivars_to_repo(object, )
  end
end