################################################################################ # gem.rake - Special tasks for the management of Gem operations # Time-stamp: <Fri 2016-11-11 15:40 svarrette> # # Copyright © 2014 Sebastien Varrette <Sebastien.Varrette@uni.lu> # varrette.gforge.uni.lu ################################################################################

require ‘falkorlib’ require ‘falkorlib/tasks’ require ‘falkorlib/git’ require ‘rubygems/tasks’

#.….….….….…. namespace :gem do

Gem::Tasks::Console.new(:command => 'pry')

###########  gem:release   ###########
desc "Release the gem "
task :release => [ :build ] do |t|
  pkgdir = Gem::Tasks::Project::PKG_DIR
  Dir.glob("*.gemspec") do |gemspecfile|
    spec = Gem::Specification.load(gemspecfile)
    name    = spec.name
    version = spec.version
    gem     = File.join( pkgdir, "#{name}-#{version}.gem")
    unless File.exist?( gem )
      warn "Unable to find the built gem '#{gem}'... Thus exiting."
      next
    end
    info t.comment + " '#{gem}'"
    really_continue?
    a = run %(
            gem push #{gem}
    )
    error "Unable to publish the gem '#{gem}'" if a.to_i.nonzero?
  end
end # task gem:release
task :publish, :release

###########   info   ###########
desc "Informations on the gem"
task :info do |t|
  require "rubygems"
  Dir.glob("*.gemspec") do |gemspecfile|
    spec = Gem::Specification.load(gemspecfile)
    info t.comment + " '#{spec.name}' (version #{spec.version})"
    puts <<-eos

eos

  end
end # task info

end # namespace gem

# Until [Issue#13](github.com/postmodern/rubygems-tasks/issues/13) it solved, # I have to remain in the global tasks not embedded in a namespace Gem::Tasks::Install.new Gem::Tasks::Build::Gem.new(:sign => true) Gem::Tasks::Sign::Checksum.new Gem::Tasks::Sign::PGP.new

# Enhance the build to sign the built gem Rake::Task.enhance do

unless ENV['GIT_AUTHOR_NAME'].nil?
  Rake::Task["sign"].invoke if File.directory?(File.join(ENV['HOME'], '.gnupg') )
end

end

%w(major minor patch).each do |level|

Rake::Task["version:bump:#{level}"].enhance do
  warn "about to run the rspec tests to ensure the release can be done"
  really_continue?
  Rake::Task['rspec'].invoke
end

end

# Gem::Tasks.new( # :console => false, # :install => false, # :sign => false, # :build => false, # :release => true # ) do |tasks| # tasks.scm.tag.format = “release-%s”, # tasks.scm.tag.sign = true # end

# Gem::Tasks.new(:console => false, :release => false, :sign => true) do |tasks| # # tasks.build = { # # :tar => true, # # :zip => true # # },

# # tasks.scm.tag.format = “release-%s”, # # tasks.scm.tag.sign = true, # # tasks.console.command = ‘pry’ # # # tasks.scm.tag = false # # # tasks.sign.checksum = true # # # tasks.sign.pgp = true # end