whatsup_github 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +4 -3
- data/README.md +64 -22
- data/lib/template/.whatsup.yml +5 -3
- data/lib/whatsup_github/config-reader.rb +39 -5
- data/lib/whatsup_github/pulls.rb +10 -3
- data/lib/whatsup_github/row.rb +8 -2
- data/lib/whatsup_github/row_collector.rb +1 -1
- data/lib/whatsup_github/runner.rb +1 -1
- data/lib/whatsup_github/version.rb +1 -1
- data/whatsup_github.gemspec +2 -0
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c5a5193535cbcad7a2e79333943ca9761e7b6bc06a867fffacaf3abac90ce47
|
4
|
+
data.tar.gz: e0f92a5c0619da8911035a61b3cb0e17dab44344b99db02986da0fbb67cf4c76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43c4beaa0b90f93aeb01ab7a2f2643702ac8d078bd3b21801a250a7918dba077ecee5f9138d731e3817ad78719769bc4167f32ce7bdfad480c374e790a498251
|
7
|
+
data.tar.gz: 9247198a00d96c500236f093dc7b458e256220b8763ab6831207c014f1da6acd5d24aa95f3fc47b45cf5850e727543e8d53515a0684432b07f0d58d96fb9dff5
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.7.1
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
whatsup_github (0.
|
4
|
+
whatsup_github (0.2.0)
|
5
5
|
netrc (~> 0.10)
|
6
6
|
octokit (~> 4.14)
|
7
7
|
thor (~> 0.20)
|
@@ -40,7 +40,7 @@ GEM
|
|
40
40
|
cucumber-tag_expressions (1.1.1)
|
41
41
|
cucumber-wire (0.0.1)
|
42
42
|
diff-lcs (1.3)
|
43
|
-
faraday (1.0.
|
43
|
+
faraday (1.0.1)
|
44
44
|
multipart-post (>= 1.2, < 3)
|
45
45
|
ffi (1.12.2)
|
46
46
|
gherkin (5.1.0)
|
@@ -55,7 +55,7 @@ GEM
|
|
55
55
|
pry (0.13.0)
|
56
56
|
coderay (~> 1.1)
|
57
57
|
method_source (~> 1.0)
|
58
|
-
public_suffix (4.0.
|
58
|
+
public_suffix (4.0.5)
|
59
59
|
rake (13.0.1)
|
60
60
|
rspec (3.9.0)
|
61
61
|
rspec-core (~> 3.9.0)
|
@@ -77,6 +77,7 @@ GEM
|
|
77
77
|
|
78
78
|
PLATFORMS
|
79
79
|
ruby
|
80
|
+
x86_64-darwin-19
|
80
81
|
|
81
82
|
DEPENDENCIES
|
82
83
|
aruba (~> 0.14)
|
data/README.md
CHANGED
@@ -1,27 +1,29 @@
|
|
1
|
-
#
|
1
|
+
# whatsup_github
|
2
2
|
|
3
3
|
[![Build status](https://travis-ci.com/dshevtsov/whatsup_github.svg?branch=master)](https://travis-ci.com/dshevtsov/whatsup_github)
|
4
4
|
[![Gem version](https://img.shields.io/gem/v/whatsup_github.svg?style=flat)](https://rubygems.org/gems/whatsup_github)
|
5
5
|
|
6
|
-
This tool helps
|
6
|
+
This tool helps updating data for [Whats New on DevDocs](http://devdocs.magento.com/whats-new.html).
|
7
7
|
It filters GitHub pull requests and generates a data file.
|
8
|
-
One pull request
|
8
|
+
One pull request sources one data entity.
|
9
9
|
All filtering parameters are set in a configuration file, except dates.
|
10
10
|
_Since_ date is set as a CLI argument and the _till_ date is always the moment when the command is run.
|
11
11
|
|
12
|
-
##
|
12
|
+
## What's generated
|
13
13
|
|
14
|
-
|
14
|
+
A resulting YAML file `tmp/whats-new.yml` is generated from GitHub data.
|
15
15
|
|
16
16
|
### `description`
|
17
17
|
|
18
|
-
|
19
|
-
The text must follow the `whatsnew` keyword and be located at the
|
18
|
+
Text for `description` is taken from individual pull request's description (same as body).
|
19
|
+
The text must follow the `whatsnew` keyword and be located at the end.
|
20
|
+
|
21
|
+
Example:
|
20
22
|
|
21
23
|
```
|
22
24
|
This pull request adds ...
|
23
25
|
|
24
|
-
|
26
|
+
Some other details about this pull request.
|
25
27
|
|
26
28
|
whatsnew
|
27
29
|
Added documentation about [New Magento feature](https://devdocs.magento.com/new-magento-feature.html).
|
@@ -29,22 +31,34 @@ Added documentation about [New Magento feature](https://devdocs.magento.com/new-
|
|
29
31
|
|
30
32
|
### `type`
|
31
33
|
|
32
|
-
Set as a list of `labels` in `.whatsup.yml`.
|
34
|
+
Set as a list of `labels` in `.whatsup.yml`. There are two types of labels in configuration:
|
35
|
+
- `required` are labels that must include `whatsnew`. Otherwise, resulting output will warn about missing `whatsnew`.
|
36
|
+
- `optional` are labels that may include `whatsnew`. If `whatsnew` is missing, you won't get any notification about this.
|
33
37
|
|
34
38
|
### `versions`
|
35
39
|
|
36
|
-
Any GitHub label that starts from a digit followed by a
|
40
|
+
Any GitHub label that starts from a digit followed by a period like in regex `\d\.`.
|
37
41
|
Examples: `2.3.x`, `1.0.3-msi`, `2.x`
|
38
42
|
|
39
43
|
### `date`
|
40
44
|
|
41
|
-
|
45
|
+
Date when the pull request was merged.
|
46
|
+
|
47
|
+
### `link`
|
48
|
+
|
49
|
+
URL of the pull request.
|
42
50
|
|
43
51
|
## Installation
|
44
52
|
|
45
|
-
|
53
|
+
This gem can be installed as a system command-line tool or as a command-line tool available in a project.
|
54
|
+
|
55
|
+
### System installation
|
56
|
+
|
57
|
+
```
|
58
|
+
gem install whatsup_github
|
59
|
+
```
|
46
60
|
|
47
|
-
###
|
61
|
+
### Project installation
|
48
62
|
|
49
63
|
Add to your Gemfile:
|
50
64
|
|
@@ -52,18 +66,12 @@ Add to your Gemfile:
|
|
52
66
|
gem 'whatsup_github'
|
53
67
|
```
|
54
68
|
|
55
|
-
And
|
69
|
+
And install:
|
56
70
|
|
57
71
|
```bash
|
58
72
|
bundle
|
59
73
|
```
|
60
74
|
|
61
|
-
### Separately
|
62
|
-
|
63
|
-
```
|
64
|
-
gem install whatsup_github
|
65
|
-
```
|
66
|
-
|
67
75
|
## Configuration
|
68
76
|
|
69
77
|
The configuration file [`.whatsup.yml`](lib/template/.whatsup.yml) will be created automatically after first run unless it's already there.
|
@@ -72,6 +80,20 @@ The configuration file [`.whatsup.yml`](lib/template/.whatsup.yml) will be creat
|
|
72
80
|
|
73
81
|
Use [`~/.netrc`](https://github.com/octokit/octokit.rb#using-a-netrc-file) file for authentication.
|
74
82
|
|
83
|
+
```
|
84
|
+
machine api.github.com
|
85
|
+
login <GitHub login>
|
86
|
+
password <GitHub token>
|
87
|
+
```
|
88
|
+
|
89
|
+
Example:
|
90
|
+
|
91
|
+
```
|
92
|
+
machine api.github.com
|
93
|
+
login dshevtsov
|
94
|
+
password y9o6YvEoa7IukRWUFdnkpuxNjJ3uwiDQp4zkAdU0
|
95
|
+
```
|
96
|
+
|
75
97
|
## Usage
|
76
98
|
|
77
99
|
```bash
|
@@ -116,7 +138,7 @@ rake spec
|
|
116
138
|
|
117
139
|
#### features
|
118
140
|
|
119
|
-
To run
|
141
|
+
To run Cucumber tests:
|
120
142
|
|
121
143
|
```
|
122
144
|
rake features
|
@@ -126,9 +148,29 @@ To pass the `output_file.feature` tests, you need to generate a non-empty `whats
|
|
126
148
|
To test just file:
|
127
149
|
|
128
150
|
```
|
129
|
-
bundle exec cucumber features/
|
151
|
+
bundle exec cucumber features/since.feature
|
130
152
|
```
|
131
153
|
|
154
|
+
NOTE: Cucumber tests will use the configuration file from code `lib/template/.whatsup.yml`.
|
155
|
+
|
156
|
+
#### Individual files
|
157
|
+
|
158
|
+
Individual files can have tests at the end of a file in a format like:
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
if $PROGRAM_NAME == __FILE__
|
162
|
+
# test code here
|
163
|
+
end
|
164
|
+
```
|
165
|
+
|
166
|
+
To run such test, run the corresponding file:
|
167
|
+
|
168
|
+
```bash
|
169
|
+
ruby lib/whatsup_github/config-reader.rb
|
170
|
+
```
|
171
|
+
|
172
|
+
The tests use the root `.whatsup.yml` file to read configuration.
|
173
|
+
|
132
174
|
## Contributing
|
133
175
|
|
134
176
|
Bug reports and pull requests are welcome on GitHub at https://github.com/dshevtsov/whatsup_github. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
data/lib/template/.whatsup.yml
CHANGED
@@ -6,9 +6,11 @@ repos:
|
|
6
6
|
|
7
7
|
# Labels also will be used as a 'type' value in the output file
|
8
8
|
labels:
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
required:
|
10
|
+
- New Topic
|
11
|
+
- Major Update
|
12
|
+
optional:
|
13
|
+
- Technical
|
12
14
|
|
13
15
|
# Format of output file
|
14
16
|
output_format:
|
@@ -12,18 +12,52 @@ module WhatsupGithub
|
|
12
12
|
@config = {}
|
13
13
|
end
|
14
14
|
|
15
|
-
def read
|
15
|
+
def read
|
16
16
|
unless File.exist?(@file)
|
17
17
|
dist_file = File.expand_path("../template/#{@file}", __dir__)
|
18
18
|
FileUtils.cp dist_file, @file
|
19
19
|
end
|
20
|
-
load_from_yaml.dig options.join ','
|
21
|
-
end
|
22
|
-
|
23
|
-
def load_from_yaml
|
24
20
|
@config = YAML.load_file @file
|
25
21
|
return {} if !@config
|
26
22
|
@config
|
27
23
|
end
|
24
|
+
|
25
|
+
def repos
|
26
|
+
read.dig 'repos'
|
27
|
+
end
|
28
|
+
|
29
|
+
def base_branch
|
30
|
+
read.dig 'base_branch'
|
31
|
+
end
|
32
|
+
|
33
|
+
def output_format
|
34
|
+
read.dig 'output_format'
|
35
|
+
end
|
36
|
+
|
37
|
+
def labels
|
38
|
+
required_labels + optional_labels
|
39
|
+
end
|
40
|
+
|
41
|
+
def required_labels
|
42
|
+
res = read.dig 'labels', 'required'
|
43
|
+
return [] unless res
|
44
|
+
res
|
45
|
+
end
|
46
|
+
|
47
|
+
def optional_labels
|
48
|
+
res = read.dig 'labels', 'optional'
|
49
|
+
return [] unless res
|
50
|
+
res
|
51
|
+
end
|
28
52
|
end
|
29
53
|
end
|
54
|
+
|
55
|
+
if $PROGRAM_NAME == __FILE__
|
56
|
+
config = WhatsupGithub::Config.instance
|
57
|
+
p config.repos
|
58
|
+
p config.base_branch
|
59
|
+
p config.output_format
|
60
|
+
p config.labels
|
61
|
+
p config.required_labels
|
62
|
+
p config.optional_labels
|
63
|
+
end
|
data/lib/whatsup_github/pulls.rb
CHANGED
@@ -22,7 +22,7 @@ module WhatsupGithub
|
|
22
22
|
private
|
23
23
|
|
24
24
|
# def access_token
|
25
|
-
# credentials.
|
25
|
+
# credentials.dig 'github_token'
|
26
26
|
# end
|
27
27
|
|
28
28
|
def configuration
|
@@ -30,11 +30,11 @@ module WhatsupGithub
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def labels
|
33
|
-
configuration.
|
33
|
+
configuration.labels
|
34
34
|
end
|
35
35
|
|
36
36
|
def base_branch
|
37
|
-
configuration.
|
37
|
+
configuration.base_branch
|
38
38
|
end
|
39
39
|
|
40
40
|
def client
|
@@ -51,3 +51,10 @@ module WhatsupGithub
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
54
|
+
|
55
|
+
if $PROGRAM_NAME == __FILE__
|
56
|
+
require 'date'
|
57
|
+
two_weeks_ago = (Date.today - 14).to_s
|
58
|
+
pulls = WhatsupGithub::Pulls.new(repo: 'magento/devdocs', since: two_weeks_ago)
|
59
|
+
p pulls.filtered
|
60
|
+
end
|
data/lib/whatsup_github/row.rb
CHANGED
@@ -15,7 +15,11 @@ module WhatsupGithub
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def labels_from_config
|
18
|
-
@config.
|
18
|
+
@config.labels
|
19
|
+
end
|
20
|
+
|
21
|
+
def required_labels
|
22
|
+
@config.required_labels
|
19
23
|
end
|
20
24
|
|
21
25
|
def versions
|
@@ -41,9 +45,11 @@ module WhatsupGithub
|
|
41
45
|
end
|
42
46
|
|
43
47
|
def description
|
48
|
+
# If a PR body includes a phrase 'whatsnew', then parse the body.
|
49
|
+
# If there are at least one required label but PR body does not include what's new, warn about missing 'whatsnew'
|
44
50
|
if body.include?('whatsnew')
|
45
51
|
parse_body
|
46
|
-
|
52
|
+
elsif !(labels & required_labels).empty? && !body.include?('whatsnew')
|
47
53
|
message = "MISSING whatsnew in the #{type} PR \##{pr_number}: \"#{title}\" assigned to #{assignee} (#{link})"
|
48
54
|
puts message
|
49
55
|
message
|
data/whatsup_github.gemspec
CHANGED
@@ -33,6 +33,8 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
34
34
|
spec.require_paths = ["lib"]
|
35
35
|
|
36
|
+
spec.required_ruby_version = '>= 2.4.0'
|
37
|
+
|
36
38
|
spec.add_dependency "octokit", "~> 4.14"
|
37
39
|
spec.add_dependency "thor", "~> 0.20"
|
38
40
|
spec.add_dependency "netrc", "~> 0.10"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: whatsup_github
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dima Shevtsov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: octokit
|
@@ -136,7 +136,7 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0.12'
|
139
|
-
description:
|
139
|
+
description:
|
140
140
|
email:
|
141
141
|
- shevtsov@adobe.com
|
142
142
|
executables:
|
@@ -177,7 +177,7 @@ metadata:
|
|
177
177
|
homepage_uri: https://github.com/dshevtsov/whatsup_github
|
178
178
|
source_code_uri: https://github.com/dshevtsov/whatsup_github
|
179
179
|
changelog_uri: https://github.com/dshevtsov/whatsup_github/blob/master/CHANGELOG.md
|
180
|
-
post_install_message:
|
180
|
+
post_install_message:
|
181
181
|
rdoc_options: []
|
182
182
|
require_paths:
|
183
183
|
- lib
|
@@ -185,15 +185,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
185
185
|
requirements:
|
186
186
|
- - ">="
|
187
187
|
- !ruby/object:Gem::Version
|
188
|
-
version:
|
188
|
+
version: 2.4.0
|
189
189
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
190
190
|
requirements:
|
191
191
|
- - ">="
|
192
192
|
- !ruby/object:Gem::Version
|
193
193
|
version: '0'
|
194
194
|
requirements: []
|
195
|
-
rubygems_version: 3.1.
|
196
|
-
signing_key:
|
195
|
+
rubygems_version: 3.1.4
|
196
|
+
signing_key:
|
197
197
|
specification_version: 4
|
198
198
|
summary: Collect info from GitHub pull requests.
|
199
199
|
test_files: []
|