Method: Toaster::ResourceInspector.get_accessed_parameters

Defined in:
lib/toaster/chef/resource_inspector.rb

.get_accessed_parameters(task_or_sourcecode, cookbook_paths = []) ⇒ Object

@@state_config_cache = {} # caching doesn’t work here anymore



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/toaster/chef/resource_inspector.rb', line 36

def self.get_accessed_parameters(task_or_sourcecode, cookbook_paths = [])
  result = []
  resource_src = task_or_sourcecode.respond_to?("sourcecode") ? 
      task_or_sourcecode.sourcecode : task_or_sourcecode.to_s
  symbol = ":[a-zA-Z0-9_]+"
  numeric_index = "[0-9]+"
  quoted_string1 = '"[^\\]]+"'
  quoted_string2 = "'[^\\]]+'"
  resource_src.scan(/node((\[((#{symbol})|(#{numeric_index})|(#{quoted_string1})|(#{quoted_string2}))\][ \t]*)+)/).each do |param|
    param = param[0].strip
    param = MarkupUtil.convert_array_to_dot_notation(param)
    if task_or_sourcecode.kind_of?(Task)
      param = TaskParameter.new(:task => task_or_sourcecode, :key => param)
    else
      param = TaskParameter.new(:key => param)
    end
    exists = result.find { |p| (p.kind_of?(TaskParameter) ? p.key : p) == 
        (param.kind_of?(TaskParameter) ? param.key : param) }
    #puts "exists: #{param} - #{exists}"
    if !exists
      result << param
    end
  end
  return result
end