Sha256: 664c6e1c39a1b5af6611f82768dae24ff9d881e0b395a6cb68546adeb0feed61

Contents?: true

Size: 1.31 KB

Versions: 9

Compression:

Stored size: 1.31 KB

Contents

require 'trollop'
module Stickler
  class Client
    class Push < Stickler::Client
      def self.banner
<<-_
Push one or more gems to a gemserver.

Usage: stickler push [options] gemfile(s)

  Options:
_
      end

      def parse( argv )
        gemfiles = []
        opts = super do |p|
          raise Trollop::CommandlineError, "At least one file is required to push" if p.leftovers.empty?
          p.leftovers.each do |gemfile|
            raise Trollop::CommandlineError, "#{gemfile} must be readable" unless File.readable?( gemfile )
            gemfiles << File.expand_path( gemfile )
          end
        end
        opts[:gemfiles] = gemfiles
        return opts
      end

      def run
        opts = parse( self.argv )
        repo = remote_repo_for( opts )

        width = opts[:gemfiles].collect { |g| g.length }.sort.last

        $stdout.puts "Pushing gem(s) to #{repo.uri} ..."
        opts[:gemfiles].each do |gemfile|
          begin
            $stdout.write "  #{gemfile.ljust( width )} -> "
            $stdout.flush
            spec = repo.push( gemfile )
            ok_msg = "OK"
            ok_msg += " #{repo.uri_for_gem( spec )}"
            $stdout.puts ok_msg
          rescue Stickler::Repository::Error => e
            $stdout.puts "ERROR: #{e.message}"
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
stickler-2.3.0 lib/stickler/client/push.rb
stickler-2.2.4 lib/stickler/client/push.rb
stickler-2.2.3 lib/stickler/client/push.rb
stickler-2.2.2 lib/stickler/client/push.rb
stickler-2.1.4 lib/stickler/client/push.rb
stickler-2.1.3 lib/stickler/client/push.rb
stickler-2.1.2 lib/stickler/client/push.rb
stickler-2.1.1 lib/stickler/client/push.rb
stickler-2.1.0 lib/stickler/client/push.rb