Sha256: 609ab22c8587e52791b970d63a7d1175d73425c9c80ccd3d2c69988fccfe1899

Contents?: true

Size: 1.66 KB

Versions: 4

Compression:

Stored size: 1.66 KB

Contents

class Require
  class Gemspec
    
    def clean_paths(paths, more=nil)
      paths.collect { |p| p.gsub("#{root}/#{more}", '') }
    end
    
    def executables
      clean_paths Dir["#{root}/bin/*"], 'bin/'
    end
    
    def extra_doc_files
      clean_paths Dir["#{root}/README.*"]
    end
    
    def files
      ignore = File.read("#{root}/.gitignore").split("\n").collect do |path|
        "#{root}/#{path.strip}"
      end
      clean_paths (Dir["#{root}/**/*"] - Dir[*ignore])
    end
    
    def instance
      raise "Require must be called with a root path parameter" unless root
      
      defaults = {
        :executables => executables,
        :extra_rdoc_files => extra_doc_files,
        :files => files,
        :has_rdoc => false,
        :platform => Gem::Platform::RUBY,
        :require_path => 'lib'
      }
      
      ::Gem::Specification.new do |s|
        Require.get(:gemspec).all.each do |(option, value)|
          case option
          when :dependencies then
            value.all(:gem).each do |dependency|
              gem = Require.get(:gem, dependency.name)
              version = dependency.version || (gem.version rescue nil)
              s.add_dependency(dependency.name.to_s, version)
            end
          else
            if s.respond_to?("#{option}=")
              s.send "#{option}=", value || defaults[option]
              defaults[option] = nil
            end
          end
        end
        defaults.each do |option, value|
          s.send("#{option}=", value) if value
        end
      end
    end
    
    def name
      Require.get(:gemspec).get(:name)[1] rescue nil
    end
    
    def root
      Require.root
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
require-0.1.8 lib/require/gemspec.rb
require-0.1.7 lib/require/gemspec.rb
require-0.1.6 lib/require/gemspec.rb
require-0.1.5 lib/require/gemspec.rb