class Fog::Rake::GithubReleaseTask

Public Class Methods

new() click to toggle source
# File lib/tasks/github_release_task.rb, line 9
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 Instance Methods

create_release() click to toggle source
# File lib/tasks/github_release_task.rb, line 30
def create_release
  github.create_release "fog/fog", "v#{@release_tag}", {:name => "v#{@release_tag}", :body => @release}
  puts "creating release #{@release_tag}"
end
github() click to toggle source
# File lib/tasks/github_release_task.rb, line 53
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
release_exists?() click to toggle source
# File lib/tasks/github_release_task.rb, line 41
def release_exists?
  releases.find {|r| r == "v#{@release_tag}" } != nil
end
release_header?() click to toggle source
# File lib/tasks/github_release_task.rb, line 45
def release_header?
  release_match != nil
end
release_match() click to toggle source
# File lib/tasks/github_release_task.rb, line 49
def release_match
  @current_line.match (/## (\d+\.\d+\.\d+) \d+\/\d+\d+/)
end
releases() click to toggle source
# File lib/tasks/github_release_task.rb, line 35
def releases
  return @releases if @releases
  response = github.releases("fog/fog")
  @releases = response.map {|r| r.tag_name }
end