Module: AwsCftTools::TemplateSet::Closure

Included in:
AwsCftTools::TemplateSet
Defined in:
lib/aws_cft_tools/template_set/closure.rb

Overview

Closure-related functions for a TemplateSet.

Instance Method Summary collapse

Instance Method Details

#closed_subset(templates) ⇒ AwsCftTools::TemplateSet

Provides the subset of the given templates that have no dependent templates outside the set.

Parameters:

Returns:



36
37
38
# File 'lib/aws_cft_tools/template_set/closure.rb', line 36

def closed_subset(templates)
  templates_for(@dependency_tree.closed_subset(templates.filenames))
end

#closure(templates) ⇒ AwsCftTools::TemplateSet

Provides the given templates and any from the set that those templates depend on.

Parameters:

Returns:



15
16
17
18
19
# File 'lib/aws_cft_tools/template_set/closure.rb', line 15

def closure(templates)
  templates_for(
    calculate_closure(templates.filenames) { |template| @dependency_tree.dependencies_for(template) }
  )
end

#filenamesArray<String>

Provides a list of filenames holding the source for the templates in a set.

Returns:

  • (Array<String>)


26
27
28
# File 'lib/aws_cft_tools/template_set/closure.rb', line 26

def filenames
  map(&:filename).map(&:to_s)
end

#in_folder_order(folders) ⇒ AwsCftTools::TemplateSet

Parameters:

  • folders (Array<String>)

Returns:



44
45
46
47
48
49
50
51
52
# File 'lib/aws_cft_tools/template_set/closure.rb', line 44

def in_folder_order(folders)
  proper_ordered_set, set = folders.reduce([clone, []]) do |memo, folder|
    set, proper_ordered_set = memo
    selected = closure(templates_in_folder(set, folder)) - proper_ordered_set
    [set - selected, proper_ordered_set | selected]
  end

  proper_ordered_set | set
end