module Rake::DevEiate::Releases

Release tasks

Public Instance Methods

define_tasks() click to toggle source

Define release tasks.

Calls superclass method
# File lib/rake/deveiate/releases.rb, line 12
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 ) click to toggle source

Push a new gem via a gemserver.

# File lib/rake/deveiate/releases.rb, line 53
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 ) click to toggle source

Create a checksum for a release gemfile

# File lib/rake/deveiate/releases.rb, line 31
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 ) click to toggle source

Body of the release_debug task.

# File lib/rake/deveiate/releases.rb, line 79
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 ) click to toggle source

Body of the release_gem task.

# File lib/rake/deveiate/releases.rb, line 40
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 ) click to toggle source

Push a new gem via scp.

# File lib/rake/deveiate/releases.rb, line 64
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