Sha256: e35f0085efd5ab0782b6cb3d7d0514ee63993e30c12dc067f48a888ebaffb4f1

Contents?: true

Size: 1.63 KB

Versions: 5

Compression:

Stored size: 1.63 KB

Contents

Dir.glob(File.join(File.dirname(__FILE__),"dockerfile_template","*.rb")).each do |f|
  require_relative f
end

module Docker
  module Cli
    module DockerfileTemplate
      class TemplateKeyRequired < StandardError; end
      class TemplateEngine
        include MatchUser
        include DupGemBundlerEnv

        def process(cont, values = {}, &block)
          logger.debug "Got values : #{values}"
          values.each do |k,v|

            logger.debug "Creating field #{k}"
            
            self.class.class_eval <<-END
            if not (Class.instance_methods.include?(:#{k}) and Class.instace_methods.include?(:#{k}=))
              attr_accessor :#{k}
            elsif not Class.instance_methods.include?(:#{k})
              attr_reader :#{k}
            elsif not Class.instance_methods.include?(:#{k}=)
              attr_writer :#{k}
            end
            END

            self.send("#{k}=", v)
          end


          ERB.new(cont).result(binding)
        end

        private 
        def logger
          if @_logger.nil?
            @_logger = Cli.logger(:df_template)
          end
          @_logger
        end

        def add_mandatory_key(key)
          if @_man.nil?
            @_man = []
          end
          @_man << key if not_empty?(key)
        end

        def mandatory_keys
          @_man
        end

        def has_mandatory_keys?
          given = true
          mandatory_keys.each do |mk|
            given = Class.instance_methods.include?(mk.to_sym) and Class.instance_methods.include?("#{mk}=".to_sym)
            break if not given
          end

          given
        end

      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
docker-cli-0.5.4 lib/docker/cli/dockerfile_template.rb
docker-cli-0.5.3 lib/docker/cli/dockerfile_template.rb
docker-cli-0.5.2 lib/docker/cli/dockerfile_template.rb
docker-cli-0.5.1 lib/docker/cli/dockerfile_template.rb
docker-cli-0.5.0 lib/docker/cli/dockerfile_template.rb