-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRakefile
77 lines (70 loc) · 2.1 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
require 'bundler'
Bundler.setup
require 'octokit'
require 'sanitize'
# @client = Octokit::Client.new(:access_token => ENV['GITHUB_API_TOKEN'])
@client = Octokit::Client.new
@milestones = @client.milestones(ENV['GITHUB_REPO'], {state: 'all'})
task :default do
puts File.read('./_templates/header.txt')
titles = create_array_of_milestone_titles
titles.each do |title|
ms = get_milestone_by_title(title)
next unless ms
puts "## [#{ms.title}](#{ms.html_url}) (#{ms.state})"
puts "created_at: #{ms.created_at.to_s} "
streak = ""
if ms.closed_at
((ms.closed_at - ms.created_at).to_i / 60 / 60 / 24).times {streak << "■"}
puts "streak: #{streak} "
puts "closed_at: #{ms.closed_at.to_s if ms.closed_at}"
end
puts "<blockquote>"
if ms.description.empty?
puts "No Description."
else
puts ms.description
end
puts "</blockquote>"
if ms.respond_to?(:number)
issues = collect_issues_by_ms(ms.number)
issues.each do |issue|
str = "- "
str << Sanitize.fragment(issue.title, Sanitize::Config::RESTRICTED)
if issue.assignee
str << " by #{issue.assignee.login}"
end
if issue.pull_request
str << " at "
str << "[PR-#{issue.number}](#{issue.pull_request.html_url}/files)"
end
puts str
label_cols = issue.labels.map do |label|
%Q{}-#{label.color}.svg)}
end
puts " - #{label_cols.join(' ')}" unless label_cols.empty?
end
else
puts "- Nothing comment"
end
puts ""
puts "----"
end
puts File.read('./_templates/footer.txt')
end
def create_array_of_milestone_titles
tags = @milestones.map do |a|
begin
Gem::Version.new(a.title.delete('v'))
rescue
next
end
end.sort.reverse
tags.map {|tag| "v" + tag.to_s}
end
def get_milestone_by_title(title)
@milestones.find {|m| m.title == title}
end
def collect_issues_by_ms(ms_number)
@client.issues(ENV['GITHUB_REPO'], {state: 'all', milestone: ms_number})
end