class EacLauncher::Stereotypes::RubyGem::Publish

Protected Instance Methods

internal_check() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 21
def internal_check
  gem_published? ? internal_check_gem_published : internal_check_gem_unpublished
end

Private Instance Methods

gem_build_uncached() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 72
def gem_build_uncached
  ::EacLauncher::Ruby::Gem::Build.new(source)
end
gem_published?() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 87
def gem_published?
  gem_versions.any?
end
gem_spec_uncached() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 68
def gem_spec_uncached
  ::EacLauncher::Stereotypes::RubyGem.load_gemspec(gemspec)
end
gem_version_max_uncached() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 107
def gem_version_max_uncached
  gem_versions.map { |v| ::Gem::Version.new(v['number']) }.max
end
gem_versions_uncached() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 99
def gem_versions_uncached
  http = Curl.get("https://rubygems.org/api/v1/versions/#{gem_spec.name}.json")
  return JSON.parse!(http.body_str) if /\A2/ =~ http.status
  return [] if /\A4/ =~ http.status

  raise "#{http} code error: #{http.status}"
end
gemspec_uncached() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 121
def gemspec_uncached
  source.find_file_with_extension('.gemspec')
end
internal_check_gem_published() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 27
def internal_check_gem_published
  if version_published?
    outdated_version? ? outdated_version_check_result : version_published_check_result
  else
    version_unpublished_check_result
  end
end
internal_check_gem_unpublished() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 35
def internal_check_gem_unpublished
  if new_gem_allowed?
    version_unpublished_check_result
  else
    new_gem_disallowed_check_result
  end
end
new_gem_allowed?() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 83
def new_gem_allowed?
  ::EacLauncher::Context.current.publish_options[:new]
end
new_gem_disallowed_check_result() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 43
def new_gem_disallowed_check_result
  ::EacLauncher::Publish::CheckResult.blocked(
    "#{gem_spec.full_name} does not exist in RubyGems"
  )
end
outdated_version?() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 95
def outdated_version?
  gem_version_max.present? && ::Gem::Version.new(gem_spec.version) < gem_version_max
end
outdated_version_check_result() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 53
def outdated_version_check_result
  ::EacLauncher::Publish::CheckResult.outdated(
    "#{gem_spec.full_name} is outdated (Max: #{gem_version_max})"
  )
end
publish() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 76
def publish
  gem_build.build
  push_gem
ensure
  gem_build.close
end
push_gem() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 111
def push_gem
  info("Pushing gem #{gem_spec}...")
  command = ['gem', 'push', gem_build.output_file]
  unless ::EacLauncher::Context.current.publish_options[:confirm]
    command = %w[echo] + command + %w[(Dry-run)]
  end
  EacRubyUtils::Envs.local.command(command).system
  info('Pushed!')
end
source_uncached() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 64
def source_uncached
  instance.warped
end
version_published?() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 91
def version_published?
  gem_versions.any? { |v| v['number'] == gem_spec.version }
end
version_published_check_result() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 49
def version_published_check_result
  ::EacLauncher::Publish::CheckResult.updated("#{gem_spec.full_name} already pushed")
end
version_unpublished_check_result() click to toggle source
# File lib/eac_launcher/stereotypes/ruby_gem/publish.rb, line 59
def version_unpublished_check_result
  ::EacLauncher::Publish::CheckResult.pending("#{gem_spec.full_name} not found " \
      'in RubyGems')
end