Class: Puppet::Pal::TaskSignature

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/pal/task_signature.rb

Overview

A TaskSignature is returned from ‘task_signature`. Its purpose is to answer questions about the task’s parameters and if it can be run/called with a hash of named parameters.

Instance Method Summary collapse

Constructor Details

#initialize(task) ⇒ TaskSignature

Returns a new instance of TaskSignature.



9
10
11
# File 'lib/puppet/pal/task_signature.rb', line 9

def initialize(task)
  @task = task
end

Instance Method Details

#runnable_with?(args_hash) {|a| ... } ⇒ Boolean

Returns whether or not the given arguments are acceptable when running the task. In addition to returning the boolean outcome, if a block is given, it is called with a string of formatted error messages that describes the difference between what was given and what is expected. The error message may have multiple lines of text, and each line is indented one space.

Parameters:

  • args_hash (Hash)

    a hash mapping parameter names to argument values

Yield Parameters:

  • a (String)

    formatted error message if a type mismatch occurs that explains the mismatch

Returns:

  • (Boolean)

    if the given arguments are acceptable when running the task



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/puppet/pal/task_signature.rb', line 22

def runnable_with?(args_hash)
  params = @task.parameters
  params_type = if params.nil?
                  T_GENERIC_TASK_HASH
                else
                  Puppet::Pops::Types::TypeFactory.struct(params)
                end
  return true if params_type.instance?(args_hash)

  if block_given?
    tm = Puppet::Pops::Types::TypeMismatchDescriber.singleton
    error = if params.nil?
              tm.describe_mismatch('', params_type,
                                   Puppet::Pops::Types::TypeCalculator
                                     .infer_set(args_hash))
            else
              tm.describe_struct_signature(params_type, args_hash)
                .flatten
                .map(&:format)
                .join("\n")
            end
    yield "Task #{@task.name}:\n#{error}"
  end
  false
end

#taskPuppet::Pops::Types::PuppetObject

Returns the Task instance which can be further explored. It contains all meta-data defined for the task such as the description, parameters, output, etc.

Returns:



59
60
61
# File 'lib/puppet/pal/task_signature.rb', line 59

def task
  @task
end

#task_hashHash{String=>Object}

Returns the Task instance as a hash

Returns:

  • (Hash{String=>Object})

    the hash representation of the task



51
52
53
# File 'lib/puppet/pal/task_signature.rb', line 51

def task_hash
  @task._pcore_init_hash
end