stack_master 0.11.0 → 0.12.0
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
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 6427d9e4a3e305c6d57efd44e015b5e83a415abe
         | 
| 4 | 
            +
              data.tar.gz: e9509b938fa0646f8c35571c74278b370c4d4512
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d32fa9ae827d12afeef460c724a8db1beac7ef6b645533d621ab2bb5ecfef3e15c4b2a8eec1720a4b6f5f2b184bc1bfb532bac3b56cd0cb08c33609d0117fbad
         | 
| 7 | 
            +
              data.tar.gz: 2c7dbc03cb04804fb152b5f0040aa68b1d631d874ec3ca620698758de8f3e21b661561598fe14cdacc193d258728d9f6af419c07ab16e0f7a7bfb39b79752b27
         | 
| @@ -23,24 +23,30 @@ module StackMaster | |
| 23 23 | 
             
                  include ::SparkleFormation::SparkleAttribute::Aws
         | 
| 24 24 | 
             
                  include ::SparkleFormation::Utils::TypeCheckers
         | 
| 25 25 |  | 
| 26 | 
            -
                  def self.build(vars)
         | 
| 26 | 
            +
                  def self.build(vars, prefix)
         | 
| 27 27 | 
             
                    ::Class.new(self).tap do |klass|
         | 
| 28 28 | 
             
                      vars.each do |key, value|
         | 
| 29 29 | 
             
                        klass.send(:define_method, key) do
         | 
| 30 30 | 
             
                          value
         | 
| 31 31 | 
             
                        end
         | 
| 32 32 | 
             
                      end
         | 
| 33 | 
            -
             | 
| 33 | 
            +
             | 
| 34 | 
            +
                    end.new(vars, prefix)
         | 
| 34 35 | 
             
                  end
         | 
| 35 36 |  | 
| 36 | 
            -
                  def initialize(vars)
         | 
| 37 | 
            +
                  def initialize(vars, prefix)
         | 
| 37 38 | 
             
                    self._camel_keys = true
         | 
| 38 39 | 
             
                    @vars = vars
         | 
| 40 | 
            +
                    @prefix = prefix
         | 
| 39 41 | 
             
                  end
         | 
| 40 42 |  | 
| 41 43 | 
             
                  def has_var?(var_key)
         | 
| 42 44 | 
             
                    @vars.include?(var_key)
         | 
| 43 45 | 
             
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  def render(file_name, vars = {})
         | 
| 48 | 
            +
                    Template.render(@prefix, file_name, vars)
         | 
| 49 | 
            +
                  end
         | 
| 44 50 | 
             
                end
         | 
| 45 51 |  | 
| 46 52 | 
             
                # Splits up long strings with multiple lines in them to multiple strings
         | 
| @@ -80,7 +86,7 @@ module StackMaster | |
| 80 86 | 
             
                  def self.render(prefix, file_name, vars)
         | 
| 81 87 | 
             
                    file_path = File.join(::SparkleFormation.sparkle_path, prefix, file_name)
         | 
| 82 88 | 
             
                    template = File.read(file_path)
         | 
| 83 | 
            -
                    template_context = TemplateContext.build(vars)
         | 
| 89 | 
            +
                    template_context = TemplateContext.build(vars, prefix)
         | 
| 84 90 | 
             
                    compiled_template = SfEruby.new(template).evaluate(template_context)
         | 
| 85 91 | 
             
                    CloudFormationLineFormatter.format(compiled_template)
         | 
| 86 92 | 
             
                  rescue Errno::ENOENT => e
         | 
    
        data/lib/stack_master/version.rb
    CHANGED
    
    
| @@ -69,6 +69,44 @@ echo $REGION | |
| 69 69 | 
             
                  }.to raise_error(StackMaster::SparkleFormation::TemplateFileNotFound)
         | 
| 70 70 | 
             
                end
         | 
| 71 71 | 
             
              end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
              context 'with nested templates' do
         | 
| 74 | 
            +
                let(:inner_user_data) do
         | 
| 75 | 
            +
                  <<-EOS
         | 
| 76 | 
            +
            REGION=<%= region! %>
         | 
| 77 | 
            +
            <%= test1 %>
         | 
| 78 | 
            +
            <%= has_var?(:test2) ? 'yes' : 'no' %>
         | 
| 79 | 
            +
                  EOS
         | 
| 80 | 
            +
                end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                let(:outer_user_data) do
         | 
| 83 | 
            +
                  <<-EOS
         | 
| 84 | 
            +
            #!/bin/bash
         | 
| 85 | 
            +
            <%= test1 %> <%= test2 %>
         | 
| 86 | 
            +
            <%= render 'inner.sh.erb', test1: 'inner1' %>
         | 
| 87 | 
            +
                  EOS
         | 
| 88 | 
            +
                end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                let(:expected_hash) do
         | 
| 91 | 
            +
                  {"Fn::Base64"=>{"Fn::Join"=>["", [
         | 
| 92 | 
            +
                    "#!/bin/bash\n",
         | 
| 93 | 
            +
                    "outer1", " ", "outer2", "\n",
         | 
| 94 | 
            +
                    "REGION=", {"Ref"=>"AWS::Region"}, "\n",
         | 
| 95 | 
            +
                    "inner1", "\n",
         | 
| 96 | 
            +
                    "no", "\n", "\n"
         | 
| 97 | 
            +
                  ]]}}
         | 
| 98 | 
            +
                end
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                before do
         | 
| 101 | 
            +
                  allow(File).to receive(:read).and_call_original
         | 
| 102 | 
            +
                  allow(File).to receive(:read).with('/templates_dir/user_data/outer.sh.erb').and_return(outer_user_data)
         | 
| 103 | 
            +
                  allow(File).to receive(:read).with('/templates_dir/user_data/inner.sh.erb').and_return(inner_user_data)
         | 
| 104 | 
            +
                end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                it 'renders the outer template, including the inner template with its own var context' do
         | 
| 107 | 
            +
                  expect(@attr.user_data_file!('outer.sh.erb', test1: :outer1, test2: 'outer2')).to eq expected_hash
         | 
| 108 | 
            +
                end
         | 
| 109 | 
            +
              end
         | 
| 72 110 | 
             
            end
         | 
| 73 111 |  | 
| 74 112 | 
             
            RSpec.describe SparkleFormation::SparkleAttribute::Aws, '#joined_file!' do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: stack_master
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.12.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Steve Hodgkiss
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2016- | 
| 12 | 
            +
            date: 2016-12-07 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: bundler
         |