Sha256: 0902adbf3e64ef2d68e465323fbbfcc1ff50088cb78ee6495d554e2791d23c24

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

# encoding: utf-8

class Gem < Thor
  self.default_task(:package)

  def initialize
    require "fileutils"
    require "rubygems/user_interaction"
    require "rubygems/builder"
  end

  desc "package", "Package the gem"
  def package
    Gemspec.new.generate
    gemspec = File.read("rango.gemspec")
    spec = eval(gemspec)
    FileUtils.mkdir_p(File.join(Dir.pwd, "pkg"))
    ::Gem::Builder.new(spec).build
    FileUtils.mv(spec.file_name, File.join(Dir.pwd, "pkg", spec.file_name))
  end

  desc "install", "Package and install the gem."
  def install
    self.package
    puts %x[gem install #{Dir["pkg/*.gem"].last}]
  end

  desc "uninstall", "Uninstall the gem."
  def uninstall
    puts %x[gem uninstall rango -a -x]
  end
end

class Gemspec < Thor
  desc "generate", "Generate gemspec"
  def generate
    require_relative "../lib/rango"
    require "erb"
    File.open("rango.gemspec", "w") do |file|
      content = File.read("rango.gemspec.erb")
      file.puts(ERB.new(content).result)
    end
  end

  desc "validate", "Validate gemspec"
  def validate
    require "rubygems/specification"
    data = File.read("rango.gemspec")
    spec = nil

    if data !~ %r{!ruby/object:Gem::Specification}
      Thread.new { spec = eval("$SAFE = 3\n#{data}") }.join
    else
      spec = YAML.load(data)
    end

    spec.validate

    puts spec
    puts "OK"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rango-0.0.4 tasks/package.thor