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 |