Sha256: 59a294cfd44bbc00b126d51831536e796e70b710c6b776007160e9cdeb2e554f

Contents?: true

Size: 1.54 KB

Versions: 9

Compression:

Stored size: 1.54 KB

Contents

require 'rubygems/specification'

class Jeweler
  # Extend a Gem::Specification instance with this module to give it Jeweler
  # super-cow powers.
  module Specification

    def self.filelist_attribute(name)
      code = %{
        def #{name}
          @#{name} ||= FileList[]
        end
        def #{name}=(value)
          @#{name} = FileList[value]
        end
      }

      module_eval code, __FILE__, __LINE__ - 9
    end

    filelist_attribute :files
    filelist_attribute :test_files
    filelist_attribute :extra_rdoc_files


    # Assigns the Jeweler defaults to the Gem::Specification
    def set_jeweler_defaults(base_dir)
      Dir.chdir(base_dir) do
        if blank?(files) && File.directory?(File.join(base_dir, '.git'))
          repo = Git.open(base_dir)
          self.files = repo.ls_files.keys
        end

        if blank?(test_files)
          self.test_files = FileList['{spec,test,examples}/**/*.rb']
        end

        if blank?(executable)
          self.executables = Dir["bin/*"].map { |f| File.basename(f) }
        end

        self.has_rdoc = true
        rdoc_options << '--charset=UTF-8'

        if blank?(extra_rdoc_files)
          self.extra_rdoc_files = FileList["README*", "ChangeLog*", "LICENSE*"]
        end
      end
    end

    # Used by Specification#to_ruby to generate a ruby-respresentation of a Gem::Specification
    def ruby_code(obj)
      case obj
      when Rake::FileList then obj.to_a.inspect
      else super
      end
    end

    private

    def blank?(value)
      value.nil? || value.empty?
    end
  end
end

Version data entries

9 entries across 9 versions & 5 rubygems

Version Path
gohanlonllc-jeweler-0.11.1.20090513153819 lib/jeweler/specification.rb
gohanlonllc-jeweler-1.0.0.20080513000000 lib/jeweler/specification.rb
gohanlonllc-jeweler-1.0.0.20090513153819 lib/jeweler/specification.rb
namelessjon-jeweler-1.0.1 lib/jeweler/specification.rb
pivotal-jeweler-1.0.1.1 lib/jeweler/specification.rb
technicalpickles-jeweler-1.0.0 lib/jeweler/specification.rb
technicalpickles-jeweler-1.0.1 lib/jeweler/specification.rb
jeweler-1.0.1 lib/jeweler/specification.rb
jeweler-1.0.0 lib/jeweler/specification.rb