config_templates 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/autoload.rb +2 -1
 - data/lib/config_templates/collections/components.rb +30 -0
 - data/lib/config_templates/{repositories → collections}/engines.rb +2 -2
 - data/lib/config_templates/collections/extensions.rb +28 -0
 - data/lib/config_templates/{repositories → collections}/outputs.rb +1 -1
 - data/lib/config_templates/collections/settings.rb +15 -0
 - data/lib/config_templates/collections/templates.rb +16 -0
 - data/lib/config_templates/collections/validators.rb +23 -0
 - data/lib/config_templates/config.rb +10 -4
 - data/lib/config_templates/contexts/compilation.rb +11 -7
 - data/lib/config_templates/contexts/rendering.rb +20 -19
 - data/lib/config_templates/criteria/composite.rb +3 -3
 - data/lib/config_templates/criteria/name.rb +2 -2
 - data/lib/config_templates/criteria/path.rb +11 -0
 - data/lib/config_templates/directives/include.rb +9 -0
 - data/lib/config_templates/directives/invocation.rb +11 -0
 - data/lib/config_templates/directives/stage.rb +23 -0
 - data/lib/config_templates/engines/erb.rb +3 -3
 - data/lib/config_templates/engines/text.rb +2 -2
 - data/lib/config_templates/errors.rb +1 -0
 - data/lib/config_templates/models/compilation.rb +6 -5
 - data/lib/config_templates/models/component.rb +19 -16
 - data/lib/config_templates/models/template.rb +7 -7
 - data/lib/config_templates/outputs/filesystem.rb +4 -4
 - data/lib/config_templates/outputs/stdout.rb +1 -1
 - data/lib/config_templates/version.rb +1 -1
 - data/lib/config_templates.rb +1 -0
 - data/lib/ioc_config.rb +7 -6
 - data/spec/fixtures/src/kapacitor/config.erb +1 -3
 - data/spec/fixtures/src/kapacitor/include.erb +3 -0
 - data/spec/mocks/outputs/test.rb +1 -1
 - data/spec/mocks/validators/test.rb +15 -0
 - data/spec/spec_helper.rb +1 -0
 - data/spec/templates_spec.rb +25 -7
 - metadata +31 -7
 - data/lib/config_templates/repositories/settings.rb +0 -15
 - data/lib/config_templates/repositories/templates.rb +0 -16
 - data/lib/config_templates/repositories/validators.rb +0 -21
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 2819660249db42a27e0a885f569a1a9cd94f8d44
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: ea65ab18c2b310e9dabeba9f515037bc501dd5cc
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: c110fccc3f5ddddf266a0de407ca7fd36cd6e2c2a5c92d5da5891b6822b774e39e8cbc9c838b425a5e932d3a67af17d3e16a6ca6e5192f1519bc7eab0dcbe353
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: e857341a1314ff40eddea158e5f9a7d6c7a0e08999b5d7687bd8bf8647ef0a0e226f9b3bd1b19c363a505cf964b9dd824f06ef81ad128e49d9b663ac5322c9ff
         
     | 
    
        data/lib/autoload.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ConfigTemplates::Collections
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Components
         
     | 
| 
      
 3 
     | 
    
         
            +
                def initialize(criteria)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  @criteria = criteria
         
     | 
| 
      
 5 
     | 
    
         
            +
                  @components = {}
         
     | 
| 
      
 6 
     | 
    
         
            +
                end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                def <<(component)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @components[component.source_path] = component
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                def find_all
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @criteria.filter(@components).lazy
         
     | 
| 
      
 14 
     | 
    
         
            +
                    .reject { |_, component| component.child? }
         
     | 
| 
      
 15 
     | 
    
         
            +
                    .map { |_, component| component }
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                def find_by_path!(path)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  find_by! ConfigTemplates::Criteria::Path.new path
         
     | 
| 
      
 20 
     | 
    
         
            +
                rescue
         
     | 
| 
      
 21 
     | 
    
         
            +
                  raise ConfigTemplates::Errors::ComponentNotFound, path
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                def find_by!(criteria)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  criteria.filter(@components).first.last
         
     | 
| 
      
 26 
     | 
    
         
            +
                rescue
         
     | 
| 
      
 27 
     | 
    
         
            +
                  raise ConfigTemplates::Errors::ComponentNotFound
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module ConfigTemplates:: 
     | 
| 
      
 1 
     | 
    
         
            +
            module ConfigTemplates::Collections
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Engines
         
     | 
| 
       3 
3 
     | 
    
         
             
                def initialize
         
     | 
| 
       4 
4 
     | 
    
         
             
                  @default = ::ConfigTemplates::Engines::Text.new
         
     | 
| 
         @@ -14,7 +14,7 @@ module ConfigTemplates::Repositories 
     | 
|
| 
       14 
14 
     | 
    
         
             
                end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
                def find_by(criteria)
         
     | 
| 
       17 
     | 
    
         
            -
                   
     | 
| 
      
 17 
     | 
    
         
            +
                  criteria.filter(@engines).first.last
         
     | 
| 
       18 
18 
     | 
    
         
             
                rescue
         
     | 
| 
       19 
19 
     | 
    
         
             
                  @default
         
     | 
| 
       20 
20 
     | 
    
         
             
                end
         
     | 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ConfigTemplates::Collections
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Extensions
         
     | 
| 
      
 3 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 4 
     | 
    
         
            +
                  @extensions = {
         
     | 
| 
      
 5 
     | 
    
         
            +
                    /^.+\?$/ => ::ConfigTemplates::Extensions::Stage,
         
     | 
| 
      
 6 
     | 
    
         
            +
                    'include' => ::ConfigTemplates::Extensions::Include
         
     | 
| 
      
 7 
     | 
    
         
            +
                  }
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                def add(extensions)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @extensions.merge! extensions
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                def exists_with_name?(name)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  find_by_name(name) != nil
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                def find_by_name(name)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  find_by ::ConfigTemplates::Criteria::Name.new name
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                def find_by(criteria)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  criteria.filter(@extensions).first.last
         
     | 
| 
      
 24 
     | 
    
         
            +
                rescue
         
     | 
| 
      
 25 
     | 
    
         
            +
                  nil
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ConfigTemplates::Collections
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Settings
         
     | 
| 
      
 3 
     | 
    
         
            +
                include ::ConfigTemplates::Inject['files.locator']
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(locator)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @locator = locator
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def find_all
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @find_all ||= @locator.settings.reduce({}) do |result, current|
         
     | 
| 
      
 11 
     | 
    
         
            +
                    ::DeepMerge.deep_merge! ::YAML.load_file(current, Hash.new), result
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ConfigTemplates::Collections
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Templates
         
     | 
| 
      
 3 
     | 
    
         
            +
                include ::ConfigTemplates::Inject['config', 'files.locator']
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(config, locator)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @config = config
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @locator = locator
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                def find_all
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @locator.templates.map do |path|
         
     | 
| 
      
 12 
     | 
    
         
            +
                    ::ConfigTemplates::Models::Template.new path, @config
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ConfigTemplates::Collections
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Validators
         
     | 
| 
      
 3 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 4 
     | 
    
         
            +
                  @validators = {}
         
     | 
| 
      
 5 
     | 
    
         
            +
                end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                def add(validators)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @validators.merge! validators
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def find_by_file_name(file_name)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  ::ConfigTemplates::Validators::Composite.new find_all_by_file_name file_name
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def find_all_by_file_name(file_name)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  find_all_by ::ConfigTemplates::Criteria::Name.new file_name
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                def find_all_by(criteria)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  criteria.filter(@validators).values
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,9 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ConfigTemplates
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Config
         
     | 
| 
       3 
3 
     | 
    
         
             
                include ConfigTemplates::Inject[
         
     | 
| 
       4 
     | 
    
         
            -
                  ' 
     | 
| 
       5 
     | 
    
         
            -
                  ' 
     | 
| 
       6 
     | 
    
         
            -
                  ' 
     | 
| 
      
 4 
     | 
    
         
            +
                  'collections.extensions',
         
     | 
| 
      
 5 
     | 
    
         
            +
                  'collections.validators',
         
     | 
| 
      
 6 
     | 
    
         
            +
                  'collections.engines',
         
     | 
| 
      
 7 
     | 
    
         
            +
                  'collections.outputs'
         
     | 
| 
       7 
8 
     | 
    
         
             
                ]
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
       9 
10 
     | 
    
         
             
                attr_accessor :templates_path, :destination_path
         
     | 
| 
         @@ -11,11 +12,12 @@ module ConfigTemplates 
     | 
|
| 
       11 
12 
     | 
    
         
             
                attr_accessor :stages
         
     | 
| 
       12 
13 
     | 
    
         
             
                attr_reader :stage
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                def initialize(validators, engines, outputs)
         
     | 
| 
      
 15 
     | 
    
         
            +
                def initialize(extensions, validators, engines, outputs)
         
     | 
| 
       15 
16 
     | 
    
         
             
                  @stages = []
         
     | 
| 
       16 
17 
     | 
    
         
             
                  @engines = engines
         
     | 
| 
       17 
18 
     | 
    
         
             
                  @outputs = outputs
         
     | 
| 
       18 
19 
     | 
    
         
             
                  @validators = validators
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @extensions = extensions
         
     | 
| 
       19 
21 
     | 
    
         
             
                end
         
     | 
| 
       20 
22 
     | 
    
         | 
| 
       21 
23 
     | 
    
         
             
                def stage=(stage)
         
     | 
| 
         @@ -37,5 +39,9 @@ module ConfigTemplates 
     | 
|
| 
       37 
39 
     | 
    
         
             
                def validators(validators)
         
     | 
| 
       38 
40 
     | 
    
         
             
                  @validators.add validators
         
     | 
| 
       39 
41 
     | 
    
         
             
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def extensions(extensions)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  @extensions.add extensions
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
       40 
46 
     | 
    
         
             
              end
         
     | 
| 
       41 
47 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,9 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ConfigTemplates::Contexts
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Compilation
         
     | 
| 
       3 
3 
     | 
    
         
             
                include ConfigTemplates::Inject[
         
     | 
| 
       4 
     | 
    
         
            -
                  ' 
     | 
| 
       5 
     | 
    
         
            -
                  ' 
     | 
| 
       6 
     | 
    
         
            -
                  ' 
     | 
| 
      
 4 
     | 
    
         
            +
                  'collections.templates',
         
     | 
| 
      
 5 
     | 
    
         
            +
                  'collections.validators',
         
     | 
| 
      
 6 
     | 
    
         
            +
                  'collections.engines'
         
     | 
| 
       7 
7 
     | 
    
         
             
                ]
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                def initialize(templates, validators, engines)
         
     | 
| 
         @@ -18,15 +18,19 @@ module ConfigTemplates::Contexts 
     | 
|
| 
       18 
18 
     | 
    
         
             
                end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                def components
         
     | 
| 
       21 
     | 
    
         
            -
                   
     | 
| 
       22 
     | 
    
         
            -
                    ::ConfigTemplates:: 
     | 
| 
      
 21 
     | 
    
         
            +
                  ::ConfigTemplates::Collections::Components.new(@criteria).tap do |collection|
         
     | 
| 
      
 22 
     | 
    
         
            +
                    context = ::ConfigTemplates::Contexts::Rendering.new
         
     | 
| 
      
 23 
     | 
    
         
            +
                    context.components = collection
         
     | 
| 
      
 24 
     | 
    
         
            +
                    @templates.find_all.each { |template| collection << component(template, context) }
         
     | 
| 
       23 
25 
     | 
    
         
             
                  end
         
     | 
| 
       24 
26 
     | 
    
         
             
                end
         
     | 
| 
       25 
27 
     | 
    
         | 
| 
       26 
28 
     | 
    
         
             
                private
         
     | 
| 
       27 
29 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                def context
         
     | 
| 
       29 
     | 
    
         
            -
                   
     | 
| 
      
 30 
     | 
    
         
            +
                def component(template, context)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  validator = @validators.find_by_file_name template.source_path
         
     | 
| 
      
 32 
     | 
    
         
            +
                  engine = @engines.find_by_extension template.extension
         
     | 
| 
      
 33 
     | 
    
         
            +
                  ::ConfigTemplates::Models::Component.new template, context, validator, engine
         
     | 
| 
       30 
34 
     | 
    
         
             
                end
         
     | 
| 
       31 
35 
     | 
    
         
             
              end
         
     | 
| 
       32 
36 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,14 +1,25 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ConfigTemplates::Contexts
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Rendering
         
     | 
| 
       3 
     | 
    
         
            -
                include ::ConfigTemplates::Inject[ 
     | 
| 
      
 3 
     | 
    
         
            +
                include ::ConfigTemplates::Inject[
         
     | 
| 
      
 4 
     | 
    
         
            +
                  'collections.extensions',
         
     | 
| 
      
 5 
     | 
    
         
            +
                  'collections.settings',
         
     | 
| 
      
 6 
     | 
    
         
            +
                  'config'
         
     | 
| 
      
 7 
     | 
    
         
            +
                ]
         
     | 
| 
       4 
8 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
      
 9 
     | 
    
         
            +
                attr_accessor :components
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def initialize(extensions, settings, config)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @extensions = extensions
         
     | 
| 
       6 
13 
     | 
    
         
             
                  @settings = settings
         
     | 
| 
       7 
14 
     | 
    
         
             
                  @config = config
         
     | 
| 
       8 
15 
     | 
    
         
             
                end
         
     | 
| 
       9 
16 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
                def  
     | 
| 
       11 
     | 
    
         
            -
                   
     | 
| 
      
 17 
     | 
    
         
            +
                def binding
         
     | 
| 
      
 18 
     | 
    
         
            +
                  ::Kernel.binding
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                def param(xpath, default = nil)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  xpath.split('.').reduce(@settings.find_all) { |value, key| value.fetch key }
         
     | 
| 
       12 
23 
     | 
    
         
             
                rescue
         
     | 
| 
       13 
24 
     | 
    
         
             
                  default
         
     | 
| 
       14 
25 
     | 
    
         
             
                end
         
     | 
| 
         @@ -17,24 +28,14 @@ module ConfigTemplates::Contexts 
     | 
|
| 
       17 
28 
     | 
    
         
             
                  @config.stage
         
     | 
| 
       18 
29 
     | 
    
         
             
                end
         
     | 
| 
       19 
30 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                def method_missing(method_name)
         
     | 
| 
       21 
     | 
    
         
            -
                   
     | 
| 
       22 
     | 
    
         
            -
                   
     | 
| 
       23 
     | 
    
         
            -
                   
     | 
| 
      
 31 
     | 
    
         
            +
                def method_missing(method_name, *args, &block)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  extension_class = @extensions.find_by_name method_name
         
     | 
| 
      
 33 
     | 
    
         
            +
                  invocation = ::ConfigTemplates::Extensions::Invocation.new method_name, args, block
         
     | 
| 
      
 34 
     | 
    
         
            +
                  extension_class.new.call(self, invocation) rescue super
         
     | 
| 
       24 
35 
     | 
    
         
             
                end
         
     | 
| 
       25 
36 
     | 
    
         | 
| 
       26 
37 
     | 
    
         
             
                def respond_to_missing?(method_name)
         
     | 
| 
       27 
     | 
    
         
            -
                  method_name 
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                private
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                def stage?(stage)
         
     | 
| 
       33 
     | 
    
         
            -
                  if @config.stages.include?(stage.to_sym)
         
     | 
| 
       34 
     | 
    
         
            -
                    @config.stage == stage.to_sym
         
     | 
| 
       35 
     | 
    
         
            -
                  else
         
     | 
| 
       36 
     | 
    
         
            -
                    raise ::ConfigTemplates::Errors::StageNotFound, stage
         
     | 
| 
       37 
     | 
    
         
            -
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
                  @extensions.exists_with_name?(method_name) || super
         
     | 
| 
       38 
39 
     | 
    
         
             
                end
         
     | 
| 
       39 
40 
     | 
    
         
             
              end
         
     | 
| 
       40 
41 
     | 
    
         
             
            end
         
     | 
| 
         @@ -4,9 +4,9 @@ module ConfigTemplates::Criteria 
     | 
|
| 
       4 
4 
     | 
    
         
             
                  @criteria = criteria
         
     | 
| 
       5 
5 
     | 
    
         
             
                end
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
                def  
     | 
| 
       8 
     | 
    
         
            -
                  @criteria. 
     | 
| 
       9 
     | 
    
         
            -
                    result  
     | 
| 
      
 7 
     | 
    
         
            +
                def filter(hash)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @criteria.reduce({}) do |result, criteria|
         
     | 
| 
      
 9 
     | 
    
         
            +
                    result.merge criteria.filter hash
         
     | 
| 
       10 
10 
     | 
    
         
             
                  end
         
     | 
| 
       11 
11 
     | 
    
         
             
                end
         
     | 
| 
       12 
12 
     | 
    
         
             
              end
         
     | 
| 
         @@ -5,8 +5,8 @@ module ConfigTemplates::Criteria 
     | 
|
| 
       5 
5 
     | 
    
         
             
                  @straight = straight
         
     | 
| 
       6 
6 
     | 
    
         
             
                end
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
                def  
     | 
| 
       9 
     | 
    
         
            -
                  @pattern.match?(cast  
     | 
| 
      
 8 
     | 
    
         
            +
                def filter(hash)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  hash.select { |pattern| @pattern.match?(cast pattern) && @straight }
         
     | 
| 
       10 
10 
     | 
    
         
             
                end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                def cast(expression)
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ConfigTemplates::Extensions
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Stage
         
     | 
| 
      
 3 
     | 
    
         
            +
                include ::ConfigTemplates::Inject['config']
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(config)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @config = config
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def call(_, invocation)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  check invocation.method[0..-2]
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                private
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def check(stage)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  if @config.stages.include?(stage.to_sym)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    @config.stage == stage.to_sym
         
     | 
| 
      
 18 
     | 
    
         
            +
                  else
         
     | 
| 
      
 19 
     | 
    
         
            +
                    raise ::ConfigTemplates::Errors::StageNotFound, stage
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,11 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ConfigTemplates::Engines
         
     | 
| 
       2 
2 
     | 
    
         
             
              class ERB
         
     | 
| 
       3 
3 
     | 
    
         
             
                def evaluate(template, context)
         
     | 
| 
       4 
     | 
    
         
            -
                  ::ERB.new(template).result 
     | 
| 
      
 4 
     | 
    
         
            +
                  ::ERB.new(template).result context.binding
         
     | 
| 
       5 
5 
     | 
    
         
             
                end
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
                def  
     | 
| 
       8 
     | 
    
         
            -
                   
     | 
| 
      
 7 
     | 
    
         
            +
                def destination_path(path)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  path.sub '.erb', ''
         
     | 
| 
       9 
9 
     | 
    
         
             
                end
         
     | 
| 
       10 
10 
     | 
    
         
             
              end
         
     | 
| 
       11 
11 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ConfigTemplates::Models
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Compilation
         
     | 
| 
       3 
     | 
    
         
            -
                include ::ConfigTemplates::Inject[' 
     | 
| 
      
 3 
     | 
    
         
            +
                include ::ConfigTemplates::Inject['collections.outputs']
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
                def initialize(outputs)
         
     | 
| 
       6 
6 
     | 
    
         
             
                  @outputs = outputs
         
     | 
| 
         @@ -18,10 +18,11 @@ module ConfigTemplates::Models 
     | 
|
| 
       18 
18 
     | 
    
         
             
                end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                def send_to(output_name)
         
     | 
| 
       21 
     | 
    
         
            -
                  @context.components.tap do | 
     | 
| 
       22 
     | 
    
         
            -
                     
     | 
| 
       23 
     | 
    
         
            -
                     
     | 
| 
       24 
     | 
    
         
            -
                     
     | 
| 
      
 21 
     | 
    
         
            +
                  @context.components.tap do |collection|
         
     | 
| 
      
 22 
     | 
    
         
            +
                    collection.find_all.each &:render
         
     | 
| 
      
 23 
     | 
    
         
            +
                    collection.find_all.each &:validate!
         
     | 
| 
      
 24 
     | 
    
         
            +
                    output = @outputs.find_by_name output_name
         
     | 
| 
      
 25 
     | 
    
         
            +
                    collection.find_all.each { |component| output.write component }
         
     | 
| 
       25 
26 
     | 
    
         
             
                  end
         
     | 
| 
       26 
27 
     | 
    
         
             
                end
         
     | 
| 
       27 
28 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,34 +1,37 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ConfigTemplates::Models
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Component
         
     | 
| 
       3 
     | 
    
         
            -
                def initialize(template, context,  
     | 
| 
      
 3 
     | 
    
         
            +
                def initialize(template, context, validator, engine)
         
     | 
| 
       4 
4 
     | 
    
         
             
                  @template = template
         
     | 
| 
       5 
5 
     | 
    
         
             
                  @context = context
         
     | 
| 
       6 
     | 
    
         
            -
                  @ 
     | 
| 
       7 
     | 
    
         
            -
                  @ 
     | 
| 
      
 6 
     | 
    
         
            +
                  @validator = validator
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @engine = engine
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @child = false
         
     | 
| 
       8 
9 
     | 
    
         
             
                end
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
                def  
     | 
| 
       11 
     | 
    
         
            -
                   
     | 
| 
      
 11 
     | 
    
         
            +
                def child?
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @child
         
     | 
| 
       12 
13 
     | 
    
         
             
                end
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                def  
     | 
| 
       15 
     | 
    
         
            -
                   
     | 
| 
       16 
     | 
    
         
            -
                    raise ::ConfigTemplates::Errors::InvalidTemplate, @template.path
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
                def child!
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @child = true
         
     | 
| 
       18 
17 
     | 
    
         
             
                end
         
     | 
| 
       19 
18 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                def  
     | 
| 
       21 
     | 
    
         
            -
                  @ 
     | 
| 
      
 19 
     | 
    
         
            +
                def source_path
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @template.source_path
         
     | 
| 
       22 
21 
     | 
    
         
             
                end
         
     | 
| 
       23 
22 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                 
     | 
| 
      
 23 
     | 
    
         
            +
                def destination_path
         
     | 
| 
      
 24 
     | 
    
         
            +
                  @engine.destination_path @template.destination_path
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
       25 
26 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
                def  
     | 
| 
       27 
     | 
    
         
            -
                  @validator 
     | 
| 
      
 27 
     | 
    
         
            +
                def validate!
         
     | 
| 
      
 28 
     | 
    
         
            +
                  unless @validator.valid? render
         
     | 
| 
      
 29 
     | 
    
         
            +
                    raise ::ConfigTemplates::Errors::InvalidTemplate, source_path
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
       28 
31 
     | 
    
         
             
                end
         
     | 
| 
       29 
32 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
                def  
     | 
| 
       31 
     | 
    
         
            -
                  @ 
     | 
| 
      
 33 
     | 
    
         
            +
                def render
         
     | 
| 
      
 34 
     | 
    
         
            +
                  @render ||= @engine.evaluate @template.content, @context
         
     | 
| 
       32 
35 
     | 
    
         
             
                end
         
     | 
| 
       33 
36 
     | 
    
         
             
              end
         
     | 
| 
       34 
37 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,22 +1,22 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ConfigTemplates::Models
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Template
         
     | 
| 
       3 
     | 
    
         
            -
                attr_reader : 
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :source_path
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                def initialize( 
     | 
| 
       6 
     | 
    
         
            -
                  @ 
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(source_path, config)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @source_path = source_path
         
     | 
| 
       7 
7 
     | 
    
         
             
                  @config = config
         
     | 
| 
       8 
8 
     | 
    
         
             
                end
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                def content
         
     | 
| 
       11 
     | 
    
         
            -
                  @content ||= ::File.read @ 
     | 
| 
      
 11 
     | 
    
         
            +
                  @content ||= ::File.read @source_path
         
     | 
| 
       12 
12 
     | 
    
         
             
                end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
                def extension
         
     | 
| 
       15 
     | 
    
         
            -
                  ::File.extname @ 
     | 
| 
      
 15 
     | 
    
         
            +
                  ::File.extname @source_path
         
     | 
| 
       16 
16 
     | 
    
         
             
                end
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
                def  
     | 
| 
       19 
     | 
    
         
            -
                  ::File.join @config.destination_path, @config.stage.to_s, @ 
     | 
| 
      
 18 
     | 
    
         
            +
                def destination_path
         
     | 
| 
      
 19 
     | 
    
         
            +
                  ::File.join @config.destination_path, @config.stage.to_s, @source_path.sub(@config.templates_path, '')
         
     | 
| 
       20 
20 
     | 
    
         
             
                end
         
     | 
| 
       21 
21 
     | 
    
         
             
              end
         
     | 
| 
       22 
22 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,9 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ConfigTemplates::Outputs
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Filesystem
         
     | 
| 
       3 
     | 
    
         
            -
                def  
     | 
| 
       4 
     | 
    
         
            -
                   
     | 
| 
       5 
     | 
    
         
            -
                  ::FileUtils.mkdir_p ::File.dirname  
     | 
| 
       6 
     | 
    
         
            -
                  ::File.write  
     | 
| 
      
 3 
     | 
    
         
            +
                def write(component)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  destination_path = component.destination_path
         
     | 
| 
      
 5 
     | 
    
         
            +
                  ::FileUtils.mkdir_p ::File.dirname destination_path
         
     | 
| 
      
 6 
     | 
    
         
            +
                  ::File.write destination_path, component.render
         
     | 
| 
       7 
7 
     | 
    
         
             
                end
         
     | 
| 
       8 
8 
     | 
    
         
             
              end
         
     | 
| 
       9 
9 
     | 
    
         
             
            end
         
     | 
    
        data/lib/config_templates.rb
    CHANGED
    
    
    
        data/lib/ioc_config.rb
    CHANGED
    
    | 
         @@ -10,11 +10,12 @@ require 'dry-container' 
     | 
|
| 
       10 
10 
     | 
    
         
             
                register(:locator, memoize: true) { ::ConfigTemplates::Filesystem::Locator.new }
         
     | 
| 
       11 
11 
     | 
    
         
             
              end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
              container.namespace : 
     | 
| 
       14 
     | 
    
         
            -
                register(:engines, memoize: true) { ::ConfigTemplates:: 
     | 
| 
       15 
     | 
    
         
            -
                register(:outputs, memoize: true) { ::ConfigTemplates:: 
     | 
| 
       16 
     | 
    
         
            -
                register(:settings, memoize: true) { ::ConfigTemplates:: 
     | 
| 
       17 
     | 
    
         
            -
                register(:templates, memoize: true) { ::ConfigTemplates:: 
     | 
| 
       18 
     | 
    
         
            -
                register(:validators, memoize: true) { ::ConfigTemplates:: 
     | 
| 
      
 13 
     | 
    
         
            +
              container.namespace :collections do
         
     | 
| 
      
 14 
     | 
    
         
            +
                register(:engines, memoize: true) { ::ConfigTemplates::Collections::Engines.new }
         
     | 
| 
      
 15 
     | 
    
         
            +
                register(:outputs, memoize: true) { ::ConfigTemplates::Collections::Outputs.new }
         
     | 
| 
      
 16 
     | 
    
         
            +
                register(:settings, memoize: true) { ::ConfigTemplates::Collections::Settings.new }
         
     | 
| 
      
 17 
     | 
    
         
            +
                register(:templates, memoize: true) { ::ConfigTemplates::Collections::Templates.new }
         
     | 
| 
      
 18 
     | 
    
         
            +
                register(:validators, memoize: true) { ::ConfigTemplates::Collections::Validators.new }
         
     | 
| 
      
 19 
     | 
    
         
            +
                register(:extensions, memoize: true) { ::ConfigTemplates::Collections::Extensions.new }
         
     | 
| 
       19 
20 
     | 
    
         
             
              end
         
     | 
| 
       20 
21 
     | 
    
         
             
            end
         
     | 
    
        data/spec/mocks/outputs/test.rb
    CHANGED
    
    
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        data/spec/templates_spec.rb
    CHANGED
    
    | 
         @@ -2,28 +2,46 @@ require 'config_templates' 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            RSpec.describe ::ConfigTemplates do
         
     | 
| 
       5 
     | 
    
         
            -
              before(:all) { @output_mock = ::Mocks::Outputs::Test.new }
         
     | 
| 
       6 
5 
     | 
    
         
             
              before(:all) do
         
     | 
| 
       7 
     | 
    
         
            -
                 
     | 
| 
      
 6 
     | 
    
         
            +
                @output = ::Mocks::Outputs::Test.new
         
     | 
| 
      
 7 
     | 
    
         
            +
                @validator = ::Mocks::Validators::Test.new
         
     | 
| 
       8 
8 
     | 
    
         
             
              end
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
              before(: 
     | 
| 
      
 10 
     | 
    
         
            +
              before(:all) do
         
     | 
| 
      
 11 
     | 
    
         
            +
                ::ConfigTemplates.configure do |config|
         
     | 
| 
      
 12 
     | 
    
         
            +
                  config.outputs test: @output
         
     | 
| 
      
 13 
     | 
    
         
            +
                  config.validators config: @validator
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              before(:each) do
         
     | 
| 
      
 18 
     | 
    
         
            +
                @output.result = nil
         
     | 
| 
      
 19 
     | 
    
         
            +
                @validator.valid = true
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
       11 
21 
     | 
    
         | 
| 
       12 
22 
     | 
    
         
             
              it 'renders selected template using configs and environment metadata' do
         
     | 
| 
       13 
23 
     | 
    
         
             
                compilation = ::ConfigTemplates::Models::Compilation.new
         
     | 
| 
       14 
     | 
    
         
            -
                compilation.reject(/.*/).select(Regexp.new 'config.erb') 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
      
 24 
     | 
    
         
            +
                compilation.reject(/.*/).select(Regexp.new 'config.erb')
         
     | 
| 
      
 25 
     | 
    
         
            +
                compilation.send_to(:test)
         
     | 
| 
      
 26 
     | 
    
         
            +
                expect(@output.result.strip).to eq('true')
         
     | 
| 
       16 
27 
     | 
    
         
             
              end
         
     | 
| 
       17 
28 
     | 
    
         | 
| 
       18 
29 
     | 
    
         
             
              it 'doesnt render not selected template' do
         
     | 
| 
       19 
30 
     | 
    
         
             
                compilation = ::ConfigTemplates::Models::Compilation.new
         
     | 
| 
       20 
31 
     | 
    
         
             
                compilation.reject(/.*/).send_to(:test)
         
     | 
| 
       21 
     | 
    
         
            -
                expect(@ 
     | 
| 
      
 32 
     | 
    
         
            +
                expect(@output.result).to be_nil
         
     | 
| 
       22 
33 
     | 
    
         
             
              end
         
     | 
| 
       23 
34 
     | 
    
         | 
| 
       24 
35 
     | 
    
         
             
              it 'doesnt render anything without explicitly selected templates' do
         
     | 
| 
       25 
36 
     | 
    
         
             
                compilation = ::ConfigTemplates::Models::Compilation.new
         
     | 
| 
       26 
37 
     | 
    
         
             
                compilation.send_to(:test)
         
     | 
| 
       27 
     | 
    
         
            -
                expect(@ 
     | 
| 
      
 38 
     | 
    
         
            +
                expect(@output.result).to be_nil
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              it 'fails if validation doesnt pass' do
         
     | 
| 
      
 42 
     | 
    
         
            +
                @validator.valid = false
         
     | 
| 
      
 43 
     | 
    
         
            +
                compilation = ::ConfigTemplates::Models::Compilation.new
         
     | 
| 
      
 44 
     | 
    
         
            +
                compilation.select(Regexp.new 'config.erb')
         
     | 
| 
      
 45 
     | 
    
         
            +
                expect { compilation.send_to(:test) }.to raise_error(::ConfigTemplates::Errors::InvalidTemplate, /config/)
         
     | 
| 
       28 
46 
     | 
    
         
             
              end
         
     | 
| 
       29 
47 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: config_templates
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.1.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - g.ivanov
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2018- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2018-05-06 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -24,6 +24,20 @@ dependencies: 
     | 
|
| 
       24 
24 
     | 
    
         
             
                - - ">="
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
26 
     | 
    
         
             
                    version: '0'
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: deep_merge
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       27 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
42 
     | 
    
         
             
              name: dry-auto_inject
         
     | 
| 
       29 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -103,11 +117,22 @@ extra_rdoc_files: [] 
     | 
|
| 
       103 
117 
     | 
    
         
             
            files:
         
     | 
| 
       104 
118 
     | 
    
         
             
            - lib/autoload.rb
         
     | 
| 
       105 
119 
     | 
    
         
             
            - lib/config_templates.rb
         
     | 
| 
      
 120 
     | 
    
         
            +
            - lib/config_templates/collections/components.rb
         
     | 
| 
      
 121 
     | 
    
         
            +
            - lib/config_templates/collections/engines.rb
         
     | 
| 
      
 122 
     | 
    
         
            +
            - lib/config_templates/collections/extensions.rb
         
     | 
| 
      
 123 
     | 
    
         
            +
            - lib/config_templates/collections/outputs.rb
         
     | 
| 
      
 124 
     | 
    
         
            +
            - lib/config_templates/collections/settings.rb
         
     | 
| 
      
 125 
     | 
    
         
            +
            - lib/config_templates/collections/templates.rb
         
     | 
| 
      
 126 
     | 
    
         
            +
            - lib/config_templates/collections/validators.rb
         
     | 
| 
       106 
127 
     | 
    
         
             
            - lib/config_templates/config.rb
         
     | 
| 
       107 
128 
     | 
    
         
             
            - lib/config_templates/contexts/compilation.rb
         
     | 
| 
       108 
129 
     | 
    
         
             
            - lib/config_templates/contexts/rendering.rb
         
     | 
| 
       109 
130 
     | 
    
         
             
            - lib/config_templates/criteria/composite.rb
         
     | 
| 
       110 
131 
     | 
    
         
             
            - lib/config_templates/criteria/name.rb
         
     | 
| 
      
 132 
     | 
    
         
            +
            - lib/config_templates/criteria/path.rb
         
     | 
| 
      
 133 
     | 
    
         
            +
            - lib/config_templates/directives/include.rb
         
     | 
| 
      
 134 
     | 
    
         
            +
            - lib/config_templates/directives/invocation.rb
         
     | 
| 
      
 135 
     | 
    
         
            +
            - lib/config_templates/directives/stage.rb
         
     | 
| 
       111 
136 
     | 
    
         
             
            - lib/config_templates/engines/erb.rb
         
     | 
| 
       112 
137 
     | 
    
         
             
            - lib/config_templates/engines/text.rb
         
     | 
| 
       113 
138 
     | 
    
         
             
            - lib/config_templates/errors.rb
         
     | 
| 
         @@ -117,18 +142,15 @@ files: 
     | 
|
| 
       117 
142 
     | 
    
         
             
            - lib/config_templates/models/template.rb
         
     | 
| 
       118 
143 
     | 
    
         
             
            - lib/config_templates/outputs/filesystem.rb
         
     | 
| 
       119 
144 
     | 
    
         
             
            - lib/config_templates/outputs/stdout.rb
         
     | 
| 
       120 
     | 
    
         
            -
            - lib/config_templates/repositories/engines.rb
         
     | 
| 
       121 
     | 
    
         
            -
            - lib/config_templates/repositories/outputs.rb
         
     | 
| 
       122 
     | 
    
         
            -
            - lib/config_templates/repositories/settings.rb
         
     | 
| 
       123 
     | 
    
         
            -
            - lib/config_templates/repositories/templates.rb
         
     | 
| 
       124 
     | 
    
         
            -
            - lib/config_templates/repositories/validators.rb
         
     | 
| 
       125 
145 
     | 
    
         
             
            - lib/config_templates/validators/composite.rb
         
     | 
| 
       126 
146 
     | 
    
         
             
            - lib/config_templates/version.rb
         
     | 
| 
       127 
147 
     | 
    
         
             
            - lib/ioc_config.rb
         
     | 
| 
       128 
148 
     | 
    
         
             
            - spec/fixtures/settings/settings.production.yml
         
     | 
| 
       129 
149 
     | 
    
         
             
            - spec/fixtures/settings/settings.yml
         
     | 
| 
       130 
150 
     | 
    
         
             
            - spec/fixtures/src/kapacitor/config.erb
         
     | 
| 
      
 151 
     | 
    
         
            +
            - spec/fixtures/src/kapacitor/include.erb
         
     | 
| 
       131 
152 
     | 
    
         
             
            - spec/mocks/outputs/test.rb
         
     | 
| 
      
 153 
     | 
    
         
            +
            - spec/mocks/validators/test.rb
         
     | 
| 
       132 
154 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       133 
155 
     | 
    
         
             
            - spec/templates_spec.rb
         
     | 
| 
       134 
156 
     | 
    
         
             
            homepage: 
         
     | 
| 
         @@ -156,8 +178,10 @@ specification_version: 4 
     | 
|
| 
       156 
178 
     | 
    
         
             
            summary: config_templates
         
     | 
| 
       157 
179 
     | 
    
         
             
            test_files:
         
     | 
| 
       158 
180 
     | 
    
         
             
            - spec/fixtures/src/kapacitor/config.erb
         
     | 
| 
      
 181 
     | 
    
         
            +
            - spec/fixtures/src/kapacitor/include.erb
         
     | 
| 
       159 
182 
     | 
    
         
             
            - spec/fixtures/settings/settings.yml
         
     | 
| 
       160 
183 
     | 
    
         
             
            - spec/fixtures/settings/settings.production.yml
         
     | 
| 
       161 
184 
     | 
    
         
             
            - spec/mocks/outputs/test.rb
         
     | 
| 
      
 185 
     | 
    
         
            +
            - spec/mocks/validators/test.rb
         
     | 
| 
       162 
186 
     | 
    
         
             
            - spec/templates_spec.rb
         
     | 
| 
       163 
187 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
         @@ -1,15 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module ConfigTemplates::Repositories
         
     | 
| 
       2 
     | 
    
         
            -
              class Settings
         
     | 
| 
       3 
     | 
    
         
            -
                include ::ConfigTemplates::Inject['files.locator']
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                def initialize(locator)
         
     | 
| 
       6 
     | 
    
         
            -
                  @locator = locator
         
     | 
| 
       7 
     | 
    
         
            -
                end
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                def find_all
         
     | 
| 
       10 
     | 
    
         
            -
                  @find_all ||= @locator.settings.reduce({}) {
         
     | 
| 
       11 
     | 
    
         
            -
                    |result, current| result.merge ::YAML.load_file current, Hash.new
         
     | 
| 
       12 
     | 
    
         
            -
                  }
         
     | 
| 
       13 
     | 
    
         
            -
                end
         
     | 
| 
       14 
     | 
    
         
            -
              end
         
     | 
| 
       15 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,16 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module ConfigTemplates::Repositories
         
     | 
| 
       2 
     | 
    
         
            -
              class Templates
         
     | 
| 
       3 
     | 
    
         
            -
                include ::ConfigTemplates::Inject['config', 'files.locator']
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                def initialize(config, locator)
         
     | 
| 
       6 
     | 
    
         
            -
                  @config = config
         
     | 
| 
       7 
     | 
    
         
            -
                  @locator = locator
         
     | 
| 
       8 
     | 
    
         
            -
                end
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                def find_all_by(criteria)
         
     | 
| 
       11 
     | 
    
         
            -
                  @locator.templates
         
     | 
| 
       12 
     | 
    
         
            -
                    .select { |filename| criteria.matches? filename }
         
     | 
| 
       13 
     | 
    
         
            -
                    .map { |filename| ::ConfigTemplates::Models::Template.new filename, @config }
         
     | 
| 
       14 
     | 
    
         
            -
                end
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,21 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module ConfigTemplates::Repositories
         
     | 
| 
       2 
     | 
    
         
            -
              class Validators
         
     | 
| 
       3 
     | 
    
         
            -
                def initialize
         
     | 
| 
       4 
     | 
    
         
            -
                  @validators = {}
         
     | 
| 
       5 
     | 
    
         
            -
                end
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                def add(validators)
         
     | 
| 
       8 
     | 
    
         
            -
                  @validators.merge! validators
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                def find_by_file_name(file_name)
         
     | 
| 
       12 
     | 
    
         
            -
                  ::ConfigTemplates::Validators::Composite.new(
         
     | 
| 
       13 
     | 
    
         
            -
                    find_all_by ::ConfigTemplates::Criteria::Name.new file_name
         
     | 
| 
       14 
     | 
    
         
            -
                  )
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                def find_all_by(criteria)
         
     | 
| 
       18 
     | 
    
         
            -
                  @validators.select { |(k, _)| criteria.matches?(k) }.values
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
              end
         
     | 
| 
       21 
     | 
    
         
            -
            end
         
     |