Sha256: 802a402d39f45a1a9daff899e14fc93dad1a93239a874d1ac81d829392cd4fd4

Contents?: true

Size: 1.73 KB

Versions: 10

Compression:

Stored size: 1.73 KB

Contents

require "rake"
require "rake/tasklib"
require 'octokit'
require 'netrc'

module Fog
  module Rake
    class GithubReleaseTask < ::Rake::TaskLib
      def initialize
        desc "Update the changelog since the last release"
        task(:github_release) do

          File.open('CHANGELOG.md', 'r') do |file|
            file.each_line do |line|
              @current_line = line
               if release_header?
                 create_release if !release_exists? && @release
                 @release_tag = release_match[1]
                 @release = line
               else
                 @release << line
               end
            end
          end
        end
      end

      private

      def create_release
        github.create_release "fog/fog", "v#{@release_tag}", {:name => "v#{@release_tag}", :body => @release}
        puts "creating release #{@release_tag}"
      end

      def releases
        return @releases if @releases
        response = github.releases("fog/fog")
        @releases = response.map {|r| r.tag_name }
      end

      def release_exists?
        releases.find {|r| r == "v#{@release_tag}" } != nil
      end

      def release_header?
        release_match != nil
      end

      def release_match
        @current_line.match (/## (\d+\.\d+\.\d+) \d+\/\d+\d+/)
      end

      def github
        unless @github
          Octokit.auto_paginate = true
          @github  = Octokit::Client.new :netrc => true
          unless @github.login
            @github = nil
            raise "Please create a ~/.netrc file to authenticate with github. For more information please see https://github.com/octokit/octokit.rb/blob/master/README.md#using-a-netrc-file"
          end
        end
        @github
      end
    end
  end
end

Version data entries

10 entries across 8 versions & 3 rubygems

Version Path
fog-2.3.0 lib/tasks/github_release_task.rb
fog-ifeel-2.2.0 lib/tasks/github_release_task.rb
fog-2.2.0 lib/tasks/github_release_task.rb
fog-2.1.0 lib/tasks/github_release_task.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/gems/fog-1.42.1/lib/tasks/github_release_task.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/gems/fog-1.42.1/lib/tasks/github_release_task.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/fog-1.42.1/lib/tasks/github_release_task.rb
fog-1.42.1 lib/tasks/github_release_task.rb
fog-2.0.0 lib/tasks/github_release_task.rb
fog-1.42.0 lib/tasks/github_release_task.rb