Sha256: 3f64b31ee8eceb338cde0920ac7a1fdb2df784acde6e1995ed03390221bda17b

Contents?: true

Size: 1.02 KB

Versions: 10

Compression:

Stored size: 1.02 KB

Contents

require 'fileutils'
require 'anvil/task'
require 'anvil/rubygems'

class Gem::BuildTask < Anvil::Task
  description 'Builds a gem for you and can install it on your system.'

  parser do
    arguments %w[gemspec_file]

    on('-i', '--[no-]install', 'Install gem') do |i|
      options[:install] = i
    end
  end

  attr_reader :gemspec_file, :options

  def initialize(gemspec_file, options = {})
    @gemspec_file = gemspec_file
    @options = options
  end

  def task
    path = File.dirname(gemspec_file)

    Dir.chdir(path) do
      gem_file = build_gem(gemspec_file)
      Anvil::Rubygems.install gem_file if install?

      gem_file
    end
  end

  def build_gem(gemspec_file)
    rubygems_output = Anvil::Rubygems.build(gemspec_file)
    gem_file        = extract_gem_file(rubygems_output)

    FileUtils.mkdir_p('pkg')
    FileUtils.move(gem_file, 'pkg')

    File.expand_path("pkg/#{gem_file}")
  end

  def extract_gem_file(output)
    output.match(/File: (.*)$/)[1]
  end

  def install?
    options.fetch(:install, true)
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
anvil-core-0.4.2 lib/tasks/gem/build_task.rb
anvil-core-0.4.1 lib/tasks/gem/build_task.rb
anvil-core-0.4.0 lib/tasks/gem/build_task.rb
anvil-core-0.3.2 lib/tasks/gem/build_task.rb
anvil-core-0.3.1 lib/tasks/gem/build_task.rb
anvil-core-0.3.0 lib/tasks/gem/build_task.rb
anvil-core-0.2.0 lib/tasks/gem/build_task.rb
anvil-core-0.1.0 lib/tasks/gem/build_task.rb
anvil-core-0.0.1.pre.alpha.3 lib/tasks/gem/build_task.rb
anvil-core-0.0.1.pre.alpha.2 lib/tasks/gem/build_task.rb