mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[core] updated rake releases to generate markdown; added github_release task to publish to release feed.
This commit is contained in:
parent
2be37279e0
commit
15c6f40825
5 changed files with 260 additions and 92 deletions
67
lib/tasks/github_release_task.rb
Normal file
67
lib/tasks/github_release_task.rb
Normal file
|
@ -0,0 +1,67 @@
|
|||
require "rake"
|
||||
require "rake/tasklib"
|
||||
require 'octokit'
|
||||
require 'netrc'
|
||||
|
||||
module Fog
|
||||
module Rake
|
||||
class ChangelogTask < ::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.collect {|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
|
Loading…
Add table
Add a link
Reference in a new issue