Sha256: f10abf0d7bc9ad27ff5b8e39df4894fa35c57b9585b953f345a18c796d7e7c0d

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

require "gem_publisher/git_remote"
require "gem_publisher/builder"
require "gem_publisher/pusher"

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

    def initialize(gemspec, version)
      @gemspec = gemspec
      @version = version
      @git_remote = GitRemote.new
      @builder    = Builder.new
      @pusher     = Pusher.new
    end

    def publish_if_updated(method)
      return unless version_bumped?
      gem = @builder.build(@gemspec)
      @git_remote.add_tag "v#@version"
      @pusher.push gem, method
    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

1 entries across 1 versions & 1 rubygems

Version Path
gem_publisher-0.0.1 lib/gem_publisher/publisher.rb