Sha256: d348cf9177ca47a4fd1b15e019e34ac924aecf03569c7869ca1b4815354e2286

Contents?: true

Size: 1.08 KB

Versions: 3

Compression:

Stored size: 1.08 KB

Contents

require "gem_publisher/git_remote"
require "gem_publisher/builder"
require "gem_publisher/pusher"
require "rubygems/specification"

module GemPublisher
  class Publisher
    attr_accessor :git_remote, :builder, :pusher

    def initialize(gemspec)
      @gemspec = gemspec

      @version = eval(File.read(gemspec)).version.to_s

      @git_remote = GitRemote.new
      @builder    = Builder.new
      @pusher     = Pusher.new
    end

    def publish_if_updated(method)
      return unless version_bumped?
      @builder.build(@gemspec).tap { |gem|
        @pusher.push gem, method
        @git_remote.add_tag "v#@version"
      }
    end

  private
    def version_bumped?
      last_release = @git_remote.tags.
        select { |t| t =~ /^v\d+(\.\d+)+/ }.
        map { |t| t.scan(/\d+/).map(&:to_i) }.
        sort.last
      this_release = @version.split(/\./).map(&:to_i)
      this_release != last_release
    end

    def tag_remote
      return
      sha1 = `git rev-parse HEAD`
      system "git update-ref refs/tags/v#@version #{sha1}"
      system "git push origin tag v#@version"
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gem_publisher-1.1.0 lib/gem_publisher/publisher.rb
gem_publisher-1.0.0 lib/gem_publisher/publisher.rb
gem_publisher-0.0.4 lib/gem_publisher/publisher.rb