Rakefile in dpl-1.9.1 vs Rakefile in dpl-1.9.2.travis.2724.5

- old
+ new

@@ -2,10 +2,11 @@ require 'term/ansicolor' require 'pathname' require 'logger' require './lib/dpl/version' require 'highline' +require 'faraday' include Term::ANSIColor def cli @cli ||= HighLine.new @@ -42,11 +43,23 @@ gemspecs = FileList[File.join(top, "dpl-*.gemspec")] providers = gemspecs.map { |f| /dpl-(?<provider>.*)\.gemspec/ =~ f && provider } -task :default => [:spec, :install] do +desc "Build dpl gem" +file "dpl-#{gem_version}.gem" do + logger.info green("Building dpl gem") + ruby "-S gem build dpl.gemspec" +end + +desc "Install dpl gem" +file dpl_bin => "dpl-#{gem_version}.gem" do + logger.info green("Installing dpl gem") + ruby "-S gem install dpl-#{gem_version}.gem" +end + +task :default => [:spec, Rake::FileTask[dpl_bin]] do Rake::Task["spec_providers"].invoke Rake::Task["check_providers"].invoke end desc "Run spec on all providers" @@ -80,26 +93,51 @@ end desc "Release all gems" task :release do confirm - threads = [] - providers.each { |provider| threads << Thread.new { Rake::Task["release-#{provider}"].invoke } } - threads.each { |thr| thr.join } + released = [] + providers.each do |provider| + while !released.include? provider + logger.info "checking dpl-#{provider}" + + cli = Faraday.new url: 'https://rubygems.org' + + begin + response = cli.get("/api/v2/rubygems/dpl-#{provider}/versions/#{gem_version}.json") + if response.success? + released << provider + logger.info green("dpl-#{provider} #{gem_version} exists") + next + else + begin + if Rake::Task["release-#{provider}"].invoke + released << provider + end + rescue => e + Rake::Task["release-#{provider}"].reenable + end + end + rescue Faraday::Error => e + logger.info yellow("connection failed. retrying") + retry + end + end + end logger.info green("Pushing dpl-#{gem_version}.gem") sh "gem push dpl-#{gem_version}.gem" end desc "Yank all gems" task :yank, [:version] do |t, args| version = args.version confirm "yank" logger.info green("Yanking `dpl` version #{version}") sh "gem yank dpl -v #{version}" - threads = [] - providers.each { |provider| threads << Thread.new { Rake::Task["yank-#{provider}"].invoke } } - threads.each { |thr| thr.join } + providers.each do |provider| + Rake::Task["yank-#{provider}"].invoke + end end task :deep_clean do Rake::Task[:clean].invoke sh "git clean -dfx" @@ -113,21 +151,9 @@ end desc "Run dpl specs" task :spec do ruby '-S rspec spec/cli_spec.rb spec/provider_spec.rb' -end - -desc "Build dpl gem" -file "dpl-#{gem_version}.gem" do - logger.info green("Building dpl gem") - ruby "-S gem build dpl.gemspec" -end - -desc "Install dpl gem" -file dpl_bin => "dpl-#{gem_version}.gem" do - logger.info green("Installing dpl gem") - ruby "-S gem install dpl-#{gem_version}.gem" end providers.each do |provider| desc "Write Gemfile-#{provider}" file "Gemfile-#{provider}" do |t|