Module: Rake::DevEiate::Releases
- Defined in:
- lib/rake/deveiate/releases.rb
Overview
Release tasks
Instance Method Summary collapse
-
#define_tasks ⇒ Object
Define release tasks.
-
#do_gem_push(gemserver) ⇒ Object
Push a new gem via a gemserver.
-
#do_make_release_checksum(task, args) ⇒ Object
Create a checksum for a release gemfile.
-
#do_release_debug(task, args) ⇒ Object
Body of the release_debug task.
-
#do_release_gem(task, args) ⇒ Object
Body of the release_gem task.
-
#do_scp_push(gemserver) ⇒ Object
Push a new gem via scp.
Instance Method Details
#define_tasks ⇒ Object
Define release tasks.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/rake/deveiate/releases.rb', line 13 def define_tasks super if defined?( super ) checksum_dir = Rake::DevEiate::CHECKSUM_DIR checksum_path = checksum_dir + "#{self.gem_filename}.sha512" directory( checksum_dir ) file( checksum_path => [self.gem_path, checksum_dir], &method(:do_make_release_checksum) ) task :add_release_checksum => checksum_path task( :release_gem => :add_release_checksum, &method(:do_release_gem) ) task :debug => :release_debug task( :release_debug, &method(:do_release_debug) ) end |
#do_gem_push(gemserver) ⇒ Object
Push a new gem via a gemserver.
54 55 56 57 58 59 60 61 |
# File 'lib/rake/deveiate/releases.rb', line 54 def do_gem_push( gemserver ) if self.prompt.yes?( "Push a new gem to #{gemserver}?" ) {|q| q.default(false) } push_args = [ "push", self.gem_path.to_s ] push_args << '-k' << self.gem_push_key if self.gem_push_key sh( Gem.ruby, "-S", "gem", *push_args ) end end |
#do_make_release_checksum(task, args) ⇒ Object
Create a checksum for a release gemfile
32 33 34 35 36 37 |
# File 'lib/rake/deveiate/releases.rb', line 32 def do_make_release_checksum( task, args ) if self.prompt.yes?( "Make a checksum for this release?" ) checksum = Digest::SHA512.new.hexdigest( self.gem_path.read ) File.open( task.name, 'w', encoding: 'us-ascii' ) {|f| f.write(checksum) } end end |
#do_release_debug(task, args) ⇒ Object
Body of the release_debug task.
80 81 82 83 84 85 86 |
# File 'lib/rake/deveiate/releases.rb', line 80 def do_release_debug( task, args ) gemserver = self.allowed_push_host || Rake::DevEiate::DEFAULT_GEMSERVER self.prompt.say( "Releases will be pushed to:", color: :bright_green ) self.prompt.say( self.indent(gemserver, 4) ) self.prompt.say( "\n" ) end |
#do_release_gem(task, args) ⇒ Object
Body of the release_gem task.
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/rake/deveiate/releases.rb', line 41 def do_release_gem( task, args ) gemserver = self.allowed_push_host || Rake::DevEiate::DEFAULT_GEMSERVER case gemserver when /\Ascp:/ self.do_scp_push( gemserver ) else self.do_gem_push( gemserver ) end end |
#do_scp_push(gemserver) ⇒ Object
Push a new gem via scp.
65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/rake/deveiate/releases.rb', line 65 def do_scp_push( gemserver ) gemserver_url = URI( gemserver ) if self.prompt.yes?( "Push a new gem with scp to #{gemserver_url.host}?" ) {|q| q.default(false) } require 'net/scp' # Strip off one leading '/' if one is present remote_path = gemserver_url.path[ %r{/(.*)}, 1 ] Net::SCP.upload!( gemserver_url.host, gemserver_url.user, self.gem_path.to_s, remote_path ) end end |