lib/hoe/gemspec2.rb
module Hoe::Gemspec2 VERSION = "1.4.0" def define_gemspec2_tasks gemspec = spec.name + ".gemspec" with_config do |config, _| unless ".gemspec".match?(config["exclude"]) warn "WARNING You should add .gemspec to your .hoerc exclude list" end end file gemspec => %w[clobber Manifest.txt] + spec.files do open(gemspec, "w") { |f| permitted_classes = [ Symbol, Time, Date, Gem::Dependency, Gem::Platform, Gem::Requirement, Gem::Specification, Gem::Version, Gem::Version::Requirement ] permitted_symbols = %i[development runtime] spec2 = begin YAML.safe_load( YAML.safe_dump( spec, :permitted_classes => permitted_classes, :permitted_symbols => permitted_symbols, :aliases => true ), :permitted_classes => permitted_classes, :permitted_symbols => permitted_symbols, :aliases => true ) rescue YAML.safe_load( YAML.dump(spec), permitted_classes, permitted_symbols, true ) end # - Point the first: in service of reproducible builds, the RubyGems team made # a change that breaks hoe releases using this gemspec. # - Point the second: the date field is going to be deprecated. We clear it if # the date is settable. This should make this at least partially forwards- # compatible. spec2.date = nil if spec2.respond_to?(:date=) unless @include_all [:signing_key, :cert_chain].each { |name| spec2.send(:"#{name}=", spec2.default_value(name)) } end f.write(spec2.to_ruby) } end desc "Regenerate #{gemspec} excluding signing keys" task :gemspec => gemspec namespace :gemspec do desc "Regenerate #{gemspec} with all keys" task :full do @include_all = true Rake::Task["gemspec"].invoke end end task :default => gemspec end end