Module: Pkg::Gem
- Defined in:
- lib/packaging/gem.rb
Class Method Summary collapse
-
.rsync_to_downloads(file) ⇒ Object
Use rsync to deploy a file and any associated detached signatures, checksums, or other glob-able artifacts to an external download server.
-
.ship(file) ⇒ Object
This is preserved because I don’t want to update the deprecated code path yet; I’m not entirely sure I’ve fixed everything that might attempt to call this method so this is now a wrapper for a wrapper.
- .ship_to_internal_mirror(file) ⇒ Object
-
.ship_to_rubygems(file, options = {}) ⇒ Object
Ship a Ruby gem file to rubygems.org.
- .shipped_to_rubygems?(gem_name, gem_version) ⇒ Boolean
Class Method Details
.rsync_to_downloads(file) ⇒ Object
Use rsync to deploy a file and any associated detached signatures, checksums, or other glob-able artifacts to an external download server.
14 15 16 17 |
# File 'lib/packaging/gem.rb', line 14 def rsync_to_downloads(file) Pkg::Util.deprecate('Pkg::Gem.rsync_to_downloads', 'Pkg::Util::Ship.ship_pkgs') Pkg::Util::Ship.ship_pkgs(["#{file}*"], Pkg::Config.gem_host, Pkg::Config.gem_path, platform_independent: true) end |
.ship(file) ⇒ Object
This is preserved because I don’t want to update the deprecated code path yet; I’m not entirely sure I’ve fixed everything that might attempt to call this method so this is now a wrapper for a wrapper.
7 8 9 10 |
# File 'lib/packaging/gem.rb', line 7 def ship(file) rsync_to_downloads(file) ship_to_rubygems(file) end |
.ship_to_internal_mirror(file) ⇒ Object
53 54 55 56 |
# File 'lib/packaging/gem.rb', line 53 def ship_to_internal_mirror(file) internal_mirror_api_key_name = 'artifactory_api_key' ship_to_rubygems(file, { :host => Pkg::Config.internal_gem_host, :key => internal_mirror_api_key_name }) end |
.ship_to_rubygems(file, options = {}) ⇒ Object
Ship a Ruby gem file to rubygems.org. Requires the existence of a ~/.gem/credentials file or else rubygems.org won’t have any idea who you are.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/packaging/gem.rb', line 33 def ship_to_rubygems(file, = {}) if shipped_to_rubygems?(Pkg::Config.gem_name, Pkg::Config.gemversion) puts "#{file} has already been shipped to rubygems, skipping . . ." return end Pkg::Util::File.file_exists?("#{ENV['HOME']}/.gem/credentials", :required => true) gem_push_command = "gem push #{file}" gem_push_command << " --host #{[:host]}" if [:host] gem_push_command << " --key #{[:key]}" if [:key] Pkg::Util::Execution.capture3(gem_push_command) rescue => e puts "###########################################" puts "# Publishing to rubygems failed. Make sure your .gem/credentials" puts "# file is set up and you are an owner of #{Pkg::Config.gem_name}" puts "###########################################" puts puts e raise e end |
.shipped_to_rubygems?(gem_name, gem_version) ⇒ Boolean
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/packaging/gem.rb', line 19 def shipped_to_rubygems?(gem_name, gem_version) gem_data = JSON.parse(`curl https://rubygems.org/api/v1/versions/#{gem_name}.json`) gem_versions = gem_data.map { |version| version['number'] } return gem_versions.include? gem_version rescue => e puts "Uh oh, something went wrong searching for gem '#{gem_name}':" puts e puts "Perhaps you're shipping gem '#{gem_name}' for the first time? Congrats!" return false end |