Sha256: 1350baced4cebed8cb1db7370e407421055c3f59618a6c37bda9d488bcece46d

Contents?: true

Size: 2 KB

Versions: 12

Compression:

Stored size: 2 KB

Contents

#--
# Copyright (c) 2010-2012 Engine Yard, Inc.
# Copyright (c) 2007-2009 Sun Microsystems, Inc.
# This source code is available under the MIT license.
# See the file LICENSE.txt for details.
#++

module Warbler
  module Traits
    # The Gemspec trait reads a .gemspec file to determine the files,
    # executables, require paths, and dependencies for a project.
    class Gemspec
      include Trait
      include PathmapHelper
      include ExecutableHelper

      def self.detect?
        !Dir['*.gemspec'].empty?
      end

      def before_configure
        @spec_file = Dir['*.gemspec'].first
        require 'yaml'
        @spec = File.open(@spec_file) {|f| Gem::Specification.from_yaml(f) } rescue Gem::Specification.load(@spec_file)
        @spec.runtime_dependencies.each {|g| config.gems << g }
        config.dirs = []
        config.compiled_ruby_files = @spec.files.select {|f| f =~ /\.rb$/}
      end

      def after_configure
        @spec.require_paths.each do |p|
          add_init_load_path(config.pathmaps.application.inject(p) {|pm,x| pm.pathmap(x)})
        end
      end

      def update_archive(jar)
        @spec.files.each do |f|
          unless File.exist?(f)
            warn "update your gemspec; skipping missing file #{f}"
            next
          end
          file_key = jar.apply_pathmaps(config, f, :application)
          next if jar.files[file_key]
          jar.files[file_key] = f
        end

        config.compiled_ruby_files.each do |f|
          f = f.sub(/\.rb$/, '.class')
          next unless File.exist?(f)
          jar.files[apply_pathmaps(config, f, :application)] = f
        end

        update_archive_add_executable(jar)
      end

      def default_executable
        if !@spec.executables.empty?
          "bin/#{@spec.executables.first}"
        else
          exe = Dir['bin/*'].sort.first
          raise "No executable script found" unless exe
          warn "No default executable found in #{@spec_file}, using #{exe}"
          exe
        end
      end

    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
warbler-1.4.8 lib/warbler/traits/gemspec.rb
warbler-2.0.0.pre1 lib/warbler/traits/gemspec.rb
warbler-1.4.7 lib/warbler/traits/gemspec.rb
warbler-1.4.6 lib/warbler/traits/gemspec.rb
warbler-1.4.5 lib/warbler/traits/gemspec.rb
warbler-1.4.4 lib/warbler/traits/gemspec.rb
warbler-1.4.3 lib/warbler/traits/gemspec.rb
warbler-1.4.2 lib/warbler/traits/gemspec.rb
warbler-1.4.1 lib/warbler/traits/gemspec.rb
warbler-1.4.0 lib/warbler/traits/gemspec.rb
warbler-1.4.0.beta2 lib/warbler/traits/gemspec.rb
warbler-1.4.0.beta1 lib/warbler/traits/gemspec.rb