changelogerator 0.0.4 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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: []
|