Sha256: 0f53bd0af28c0bb50a4f2416a0e8e79fc90fe78b25bde3c5980c74b338b2992f

Contents?: true

Size: 1.81 KB

Versions: 1

Compression:

Stored size: 1.81 KB

Contents

module Gem2Rpm
  class Template
    class TemplateError < Exception; end

    attr_accessor :filename

    def self.default_location
      @@location ||= File.join(File.dirname(__FILE__), '..', '..', 'templates')
    end

    def self.default_location=(location)
      @@location = location
      @@list = nil
    end

    def self.list
      @@list ||= Dir.chdir(default_location) do
        Dir.glob('*').sort
      end
    end

    # Returns instance of Template class. If the 'name' parameter is specified
    # it tries to instantiate the template of specific name first. When
    # options[:gem_file] is specified, it can be taken into consideration
    # when looking for vagrant templates for example.
    def self.find(name = nil, options = {})
      if name.nil?
        gem_file = File.basename(options[:gem_file]) if options[:gem_file]
        case gem_file
        when /^vagrant(-|_).*/
          Gem2Rpm.vagrant_plugin_template
        else
          Gem2Rpm.rubygem_template
        end
      else
        begin
          if File.exists?(name)
            Gem2Rpm::Template.new(name)
          else
            Gem2Rpm::Template.new(File.join(Gem2Rpm::Template::default_location, name + '.spec.erb'))
          end
        rescue TemplateError
          raise TemplateError, "Could not locate template #{name}"
        end
      end
    end

    # Create instance of Template class of specified template filename.
    # TemplateError is raised when the template file does not exists.
    def initialize(filename)
      if File.exists? filename
        @filename = filename
      else
        raise TemplateError, "Could not locate template #{filename}"
      end
    end

    # Read the content of the template file.
    def read
      @content ||= begin
        File.open(@filename, OPEN_MODE) {|f| f.read }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gem2rpm-0.11.2 lib/gem2rpm/template.rb