Class: AptlyTaskHelper

Inherits:
TaskHelper
  • Object
show all
Defined in:
lib/aptly_task_helper.rb

Overview

Aptly task helper

Constant Summary collapse

NAMESPACE =
'aptly'

Instance Method Summary collapse

Constructor Details

#initializeAptlyTaskHelper

Returns a new instance of AptlyTaskHelper.



14
15
16
17
18
19
20
# File 'lib/aptly_task_helper.rb', line 14

def initialize
  super()
  @category = category
  @supported_methods = self.class.instance_methods(false).filter { |x| x.to_s.start_with? @category }.freeze
  @module_prefix = "#{NAMESPACE}::"
  @accepted_tasks = @supported_methods.map { |x| "#{@module_prefix}#{x}" }.freeze
end

Instance Method Details

#categoryObject



10
11
12
# File 'lib/aptly_task_helper.rb', line 10

def category
  raise 'Override this method in your class'
end

#task(opts = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/aptly_task_helper.rb', line 22

def task(opts = {})
  task_name = opts.delete(:_task)
  begin
    case task_name
    when ->(n) { @accepted_tasks.include?(n) }
      method_name = task_name.delete_prefix(@module_prefix)
      result = public_send(method_name, opts)
      { method_name => result }
    else
      raise TaskHelper::Error.new(
        'Task with this name is not found here',
        "#{NAMESPACE}::#{@category}/task-not-found",
        'task_name' => task_name
      )
    end
  rescue PuppetX::Aptly::Error => e
    raise TaskHelper::Error.new(e.message, "#{task_name}/error")
  end
end