Sha256: cbbc2e9fe57a581f05f60e56742caee4f3001772dfc3e0bc7dfe32aa081b9daf

Contents?: true

Size: 1.13 KB

Versions: 21

Compression:

Stored size: 1.13 KB

Contents

require 'erb'
require 'tempfile'

module Itamae
  module Resource
    class Template < RemoteFile
      define_attribute :variables, type: Hash, default: {}

      def pre_action
        attributes.content = RenderContext.new(self).render_file(source_file)

        super
      end

      private

      def content_file
        nil
      end

      def source_file_dir
        "templates"
      end

      def source_file_exts
        [".erb", ""]
      end

      class RenderContext
        def initialize(resource)
          @resource = resource

          @resource.attributes.variables.each_pair do |key, value|
            instance_variable_set("@#{key}".to_sym, value)
          end
        end

        def render_file(src)
          template = ::File.read(src)
          erb =
            if ERB.instance_method(:initialize).parameters.assoc(:key) # Ruby 2.6+
              ERB.new(template, trim_mode: '-')
            else
              ERB.new(template, nil, '-')
            end
          erb.filename = src
          erb.result(binding)
        end

        def node
          @resource.recipe.runner.node
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
itamae-1.14.1 lib/itamae/resource/template.rb
itamae-1.14.0 lib/itamae/resource/template.rb
itamae-1.13.1 lib/itamae/resource/template.rb
itamae-1.13.0 lib/itamae/resource/template.rb
itamae-1.12.6 lib/itamae/resource/template.rb
itamae-1.12.5 lib/itamae/resource/template.rb
itamae-1.12.4 lib/itamae/resource/template.rb
itamae-1.12.3 lib/itamae/resource/template.rb
itamae-1.12.2 lib/itamae/resource/template.rb
itamae-1.12.1 lib/itamae/resource/template.rb
itamae-1.12.0 lib/itamae/resource/template.rb
itamae-1.11.2 lib/itamae/resource/template.rb
itamae-1.11.1 lib/itamae/resource/template.rb
itamae-1.11.0 lib/itamae/resource/template.rb
itamae-1.10.10 lib/itamae/resource/template.rb
itamae-1.10.9 lib/itamae/resource/template.rb
itamae-1.10.8 lib/itamae/resource/template.rb
itamae-1.10.7 lib/itamae/resource/template.rb
itamae-1.10.6 lib/itamae/resource/template.rb
itamae-1.10.5 lib/itamae/resource/template.rb