changelogerator 0.0.4 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/changelogerator.rb +37 -15
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6e69ae4588f7fdcf5680a5de00b6bfcb26158dbd1b8c9239bced677cb66b605
|
4
|
+
data.tar.gz: 93404021377582944fe36f609d7d9a370b6f6c599b5187b71c91c30c4f101f98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93f92c7b4591aae298482b46aad71ccac5c7849022b4ab4d8cdc8e9c142e5facd1f730916ef7a2b37948abcf86eb9573ff7e0199fa9bb233817e4eb7d87eadf0
|
7
|
+
data.tar.gz: 68502af494c7807aefd88c36c3a625814bc6d981c1bd846806536d24f2b0b616565324b8da817a02d8b3e1a045430211b4dd330b001918ca406f7d7ab4718b0b
|
data/lib/changelogerator.rb
CHANGED
@@ -52,7 +52,7 @@ class Changelog
|
|
52
52
|
|
53
53
|
def self.changes_with_label(changes, label)
|
54
54
|
changes.select do |change|
|
55
|
-
change
|
55
|
+
change[:labels].any? { |c| c[:name] == label } == true
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
@@ -80,7 +80,8 @@ class Changelog
|
|
80
80
|
@gh = Octokit::Client.new(
|
81
81
|
access_token: token
|
82
82
|
)
|
83
|
-
@
|
83
|
+
@prefix = prefix
|
84
|
+
@changes = prs_from_ids(pr_ids_from_git_diff(from, to)).map(&:to_hash)
|
84
85
|
# add priority to each change
|
85
86
|
@changes.map { |c| apply_priority_to_change(c) }
|
86
87
|
end
|
@@ -90,39 +91,60 @@ class Changelog
|
|
90
91
|
end
|
91
92
|
|
92
93
|
def runtime_changes?
|
93
|
-
|
94
94
|
nil
|
95
95
|
end
|
96
96
|
|
97
|
+
def add(change)
|
98
|
+
changes.prepend(prettify_title(apply_priority_to_change(change)))
|
99
|
+
end
|
100
|
+
|
101
|
+
def add_from_id(id)
|
102
|
+
pull = @gh.pull_request(@repo, id)
|
103
|
+
add pull
|
104
|
+
end
|
105
|
+
|
97
106
|
private
|
98
107
|
|
99
108
|
def apply_priority_to_change(change)
|
100
109
|
@priorities.each do |p|
|
101
|
-
change[:priority] = p if change
|
110
|
+
change[:priority] = p if change[:labels].any? { |l| l[:name] == p[:label] }
|
102
111
|
end
|
112
|
+
# Failsafe: add lowest priority if none detected
|
113
|
+
change[:priority] ||= @priorities[0]
|
103
114
|
change
|
104
115
|
end
|
105
116
|
|
117
|
+
def prettify_title(pull)
|
118
|
+
pull[:pretty_title] = if @prefix
|
119
|
+
"#{pull[:title]} (#{@repo}##{pull[:number]})"
|
120
|
+
else
|
121
|
+
"#{pull[:title]} (##{pull[:number]})"
|
122
|
+
end
|
123
|
+
pull
|
124
|
+
end
|
125
|
+
|
106
126
|
def pr_ids_from_git_diff(from, to)
|
107
127
|
@gh.compare(@repo, from, to).commits.map do |c|
|
108
128
|
title = c.commit.message.split("\n\n").first
|
109
129
|
next unless title =~ /\(#[0-9]+\)$/
|
110
130
|
|
111
131
|
title.gsub(/.*#([0-9]+)\)$/, '\1')
|
112
|
-
end.compact
|
132
|
+
end.compact.map(&:to_i)
|
113
133
|
end
|
114
134
|
|
115
|
-
def prs_from_ids(ids
|
135
|
+
def prs_from_ids(ids)
|
136
|
+
batch_size = 100
|
116
137
|
prs = []
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
138
|
+
@gh.pulls(@repo, state: 'closed', per_page: batch_size)
|
139
|
+
cur_batch = @gh.last_response
|
140
|
+
until ids.empty?
|
141
|
+
prs += cur_batch.data.select { |pr| ids.include? pr.number }
|
142
|
+
ids -= cur_batch.data.map(&:number)
|
143
|
+
break if cur_batch.rels[:last].nil?
|
144
|
+
|
145
|
+
cur_batch = cur_batch.rels[:next].get
|
125
146
|
end
|
126
|
-
prs
|
147
|
+
prs.flatten
|
148
|
+
prs.map { |pr| prettify_title(pr) }
|
127
149
|
end
|
128
150
|
end
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: changelogerator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Pugh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: git_diff_parser
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: octokit
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4'
|
27
41
|
description: Simple helper class for paritytech/polkadot changelogs
|
28
42
|
email:
|
29
43
|
executables: []
|