class Gem::Tasks::Build::Task

Public Instance Methods

build(path,gemspec) click to toggle source

@param [String] path

@param [Gem::Specification] gemspec

@abstract

# File lib/rubygems/tasks/build/task.rb, line 15
def build(path,gemspec)
end

Protected Instance Methods

build_task(name,extname=name) click to toggle source

Defines build task(s) for file type.

@param [Symbol] name

The name for the task(s).

@param [String, Symbol] extname

The file extension for the resulting files.

@api semipublic

# File lib/rubygems/tasks/build/task.rb, line 31
def build_task(name,extname=name)
  directory Project::PKG_DIR

  task :validate

  @project.builds.each do |build,packages|
    namespace :build do
      namespace name do
        gemspec = @project.gemspecs[build]
        path    = packages[extname]

        # define file tasks, so the packages are not needless re-built
        file(path => [Project::PKG_DIR, *gemspec.files]) do
          invoke :validate

          status "Building #{File.basename(path)} ..."

          build(path,gemspec)
        end

        task build => path
      end
    end

    task "build:#{build}" => "build:#{name}:#{build}"
  end

  gemspec_tasks "build:#{name}"

  desc "Builds all packages" unless task?(:build)
  task :build => "build:#{name}"
end