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|