danger-pr_reviewers 0.1.0
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 +7 -0
- data/.gitignore +4 -0
- data/.rubocop.yml +13 -0
- data/.rubocop_todo.yml +75 -0
- data/.travis.yml +12 -0
- data/CHANGELOG.md +6 -0
- data/Dangerfile +1 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +139 -0
- data/Guardfile +19 -0
- data/LICENSE +21 -0
- data/LICENSE.txt +22 -0
- data/README.md +33 -0
- data/RELEASING.md +67 -0
- data/Rakefile +23 -0
- data/danger-pr_reviewers.gemspec +51 -0
- data/lib/danger_plugin.rb +1 -0
- data/lib/danger_pr_reviewers.rb +1 -0
- data/lib/pr_reviewers/gem_version.rb +3 -0
- data/lib/pr_reviewers/plugin.rb +63 -0
- data/spec/pr_reviewers_spec.rb +110 -0
- data/spec/spec_helper.rb +69 -0
- metadata +208 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: adedda6f14b9ffb2b09b6a915abcae35273e2522
|
|
4
|
+
data.tar.gz: ee567f93c881ffb077b1d01a7bd04ffb5a0b14ff
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: bed27210f7b7982dbf5df2bd4d8141c256e2477a21a87373abb6acc72a26fe59e2ea8846d202f939cf4e3040c3758b90783638652a30d3d56237883bb01e7264
|
|
7
|
+
data.tar.gz: 9f1d6405f37cc321d2a3b6d34cab898e26bb7306570e64450c62b0524216481bd6746ed2228cd2a6f84a16ab886ceae79b8b4a38ef690cfa2c319e7baa9ffc25
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
data/.rubocop_todo.yml
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# This configuration was generated by
|
|
2
|
+
# `rubocop --auto-gen-config`
|
|
3
|
+
# on 2017-03-28 20:55:23 +0200 using RuboCop version 0.48.0.
|
|
4
|
+
# The point is for the user to remove these configuration records
|
|
5
|
+
# one by one as the offenses are removed from the code base.
|
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
|
8
|
+
|
|
9
|
+
# Offense count: 1
|
|
10
|
+
Metrics/AbcSize:
|
|
11
|
+
Max: 22
|
|
12
|
+
|
|
13
|
+
# Offense count: 109
|
|
14
|
+
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
|
15
|
+
# URISchemes: http, https
|
|
16
|
+
Metrics/LineLength:
|
|
17
|
+
Max: 254
|
|
18
|
+
|
|
19
|
+
# Offense count: 3
|
|
20
|
+
# Configuration parameters: CountComments.
|
|
21
|
+
Metrics/MethodLength:
|
|
22
|
+
Max: 14
|
|
23
|
+
|
|
24
|
+
# Offense count: 3
|
|
25
|
+
Style/Documentation:
|
|
26
|
+
Exclude:
|
|
27
|
+
- 'spec/**/*'
|
|
28
|
+
- 'test/**/*'
|
|
29
|
+
- 'lib/changelog/config.rb'
|
|
30
|
+
- 'lib/changelog/plugin.rb'
|
|
31
|
+
|
|
32
|
+
# Offense count: 3
|
|
33
|
+
Style/DoubleNegation:
|
|
34
|
+
Exclude:
|
|
35
|
+
- 'lib/changelog/changelog_file.rb'
|
|
36
|
+
|
|
37
|
+
# Offense count: 4
|
|
38
|
+
# Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms.
|
|
39
|
+
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
|
|
40
|
+
Style/FileName:
|
|
41
|
+
Exclude:
|
|
42
|
+
- 'Dangerfile'
|
|
43
|
+
- 'Gemfile'
|
|
44
|
+
- 'Guardfile'
|
|
45
|
+
- 'danger-changelog.gemspec'
|
|
46
|
+
|
|
47
|
+
# Offense count: 2
|
|
48
|
+
# Cop supports --auto-correct.
|
|
49
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
|
50
|
+
# SupportedStyles: auto_detection, squiggly, active_support, powerpack, unindent
|
|
51
|
+
Style/IndentHeredoc:
|
|
52
|
+
Exclude:
|
|
53
|
+
- 'lib/changelog/plugin.rb'
|
|
54
|
+
|
|
55
|
+
# Offense count: 1
|
|
56
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
|
57
|
+
# SupportedStyles: module_function, extend_self
|
|
58
|
+
Style/ModuleFunction:
|
|
59
|
+
Exclude:
|
|
60
|
+
- 'lib/changelog/config.rb'
|
|
61
|
+
|
|
62
|
+
# Offense count: 2
|
|
63
|
+
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist.
|
|
64
|
+
# NamePrefix: is_, has_, have_
|
|
65
|
+
# NamePrefixBlacklist: is_, has_, have_
|
|
66
|
+
# NameWhitelist: is_a?
|
|
67
|
+
Style/PredicateName:
|
|
68
|
+
Exclude:
|
|
69
|
+
- 'spec/**/*'
|
|
70
|
+
- 'lib/changelog/plugin.rb'
|
|
71
|
+
|
|
72
|
+
Style/FileName:
|
|
73
|
+
Include:
|
|
74
|
+
- 'lib/**/*'
|
|
75
|
+
- 'spec/**/*'
|
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
data/Dangerfile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
changelog.check
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
danger-pr_reviewers (0.1.0)
|
|
5
|
+
danger-plugin-api (~> 1.0)
|
|
6
|
+
|
|
7
|
+
GEM
|
|
8
|
+
remote: https://rubygems.org/
|
|
9
|
+
specs:
|
|
10
|
+
addressable (2.5.1)
|
|
11
|
+
public_suffix (~> 2.0, >= 2.0.2)
|
|
12
|
+
ast (2.3.0)
|
|
13
|
+
claide (1.0.2)
|
|
14
|
+
claide-plugins (0.9.2)
|
|
15
|
+
cork
|
|
16
|
+
nap
|
|
17
|
+
open4 (~> 1.3)
|
|
18
|
+
coderay (1.1.1)
|
|
19
|
+
colored2 (3.1.2)
|
|
20
|
+
cork (0.3.0)
|
|
21
|
+
colored2 (~> 3.1)
|
|
22
|
+
danger (5.3.1)
|
|
23
|
+
claide (~> 1.0)
|
|
24
|
+
claide-plugins (>= 0.9.2)
|
|
25
|
+
colored2 (~> 3.1)
|
|
26
|
+
cork (~> 0.1)
|
|
27
|
+
faraday (~> 0.9)
|
|
28
|
+
faraday-http-cache (~> 1.0)
|
|
29
|
+
git (~> 1)
|
|
30
|
+
kramdown (~> 1.5)
|
|
31
|
+
octokit (~> 4.2)
|
|
32
|
+
terminal-table (~> 1)
|
|
33
|
+
danger-changelog (0.2.0)
|
|
34
|
+
danger-plugin-api (~> 1.0)
|
|
35
|
+
danger-plugin-api (1.0.0)
|
|
36
|
+
danger (> 2.0)
|
|
37
|
+
diff-lcs (1.3)
|
|
38
|
+
faraday (0.12.1)
|
|
39
|
+
multipart-post (>= 1.2, < 3)
|
|
40
|
+
faraday-http-cache (1.3.1)
|
|
41
|
+
faraday (~> 0.8)
|
|
42
|
+
ffi (1.9.18)
|
|
43
|
+
formatador (0.2.5)
|
|
44
|
+
git (1.3.0)
|
|
45
|
+
guard (2.14.1)
|
|
46
|
+
formatador (>= 0.2.4)
|
|
47
|
+
listen (>= 2.7, < 4.0)
|
|
48
|
+
lumberjack (~> 1.0)
|
|
49
|
+
nenv (~> 0.1)
|
|
50
|
+
notiffany (~> 0.0)
|
|
51
|
+
pry (>= 0.9.12)
|
|
52
|
+
shellany (~> 0.0)
|
|
53
|
+
thor (>= 0.18.1)
|
|
54
|
+
guard-compat (1.2.1)
|
|
55
|
+
guard-rspec (4.7.3)
|
|
56
|
+
guard (~> 2.1)
|
|
57
|
+
guard-compat (~> 1.1)
|
|
58
|
+
rspec (>= 2.99.0, < 4.0)
|
|
59
|
+
kramdown (1.13.2)
|
|
60
|
+
listen (3.0.7)
|
|
61
|
+
rb-fsevent (>= 0.9.3)
|
|
62
|
+
rb-inotify (>= 0.9.7)
|
|
63
|
+
lumberjack (1.0.12)
|
|
64
|
+
method_source (0.8.2)
|
|
65
|
+
multipart-post (2.0.0)
|
|
66
|
+
nap (1.1.0)
|
|
67
|
+
nenv (0.3.0)
|
|
68
|
+
notiffany (0.1.1)
|
|
69
|
+
nenv (~> 0.1)
|
|
70
|
+
shellany (~> 0.0)
|
|
71
|
+
octokit (4.7.0)
|
|
72
|
+
sawyer (~> 0.8.0, >= 0.5.3)
|
|
73
|
+
open4 (1.3.4)
|
|
74
|
+
parallel (1.11.2)
|
|
75
|
+
parser (2.4.0.0)
|
|
76
|
+
ast (~> 2.2)
|
|
77
|
+
powerpack (0.1.1)
|
|
78
|
+
pry (0.10.4)
|
|
79
|
+
coderay (~> 1.1.0)
|
|
80
|
+
method_source (~> 0.8.1)
|
|
81
|
+
slop (~> 3.4)
|
|
82
|
+
public_suffix (2.0.5)
|
|
83
|
+
rainbow (2.2.2)
|
|
84
|
+
rake
|
|
85
|
+
rake (10.5.0)
|
|
86
|
+
rb-fsevent (0.9.8)
|
|
87
|
+
rb-inotify (0.9.10)
|
|
88
|
+
ffi (>= 0.5.0, < 2)
|
|
89
|
+
rspec (3.6.0)
|
|
90
|
+
rspec-core (~> 3.6.0)
|
|
91
|
+
rspec-expectations (~> 3.6.0)
|
|
92
|
+
rspec-mocks (~> 3.6.0)
|
|
93
|
+
rspec-core (3.6.0)
|
|
94
|
+
rspec-support (~> 3.6.0)
|
|
95
|
+
rspec-expectations (3.6.0)
|
|
96
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
97
|
+
rspec-support (~> 3.6.0)
|
|
98
|
+
rspec-mocks (3.6.0)
|
|
99
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
100
|
+
rspec-support (~> 3.6.0)
|
|
101
|
+
rspec-support (3.6.0)
|
|
102
|
+
rubocop (0.49.1)
|
|
103
|
+
parallel (~> 1.10)
|
|
104
|
+
parser (>= 2.3.3.1, < 3.0)
|
|
105
|
+
powerpack (~> 0.1)
|
|
106
|
+
rainbow (>= 1.99.1, < 3.0)
|
|
107
|
+
ruby-progressbar (~> 1.7)
|
|
108
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
|
109
|
+
ruby-progressbar (1.8.1)
|
|
110
|
+
sawyer (0.8.1)
|
|
111
|
+
addressable (>= 2.3.5, < 2.6)
|
|
112
|
+
faraday (~> 0.8, < 1.0)
|
|
113
|
+
shellany (0.0.1)
|
|
114
|
+
slop (3.6.0)
|
|
115
|
+
terminal-table (1.8.0)
|
|
116
|
+
unicode-display_width (~> 1.1, >= 1.1.1)
|
|
117
|
+
thor (0.19.4)
|
|
118
|
+
unicode-display_width (1.3.0)
|
|
119
|
+
yard (0.9.9)
|
|
120
|
+
|
|
121
|
+
PLATFORMS
|
|
122
|
+
ruby
|
|
123
|
+
|
|
124
|
+
DEPENDENCIES
|
|
125
|
+
bundler (~> 1.3)
|
|
126
|
+
danger (~> 5.0)
|
|
127
|
+
danger-changelog (~> 0.1)
|
|
128
|
+
danger-pr_reviewers!
|
|
129
|
+
guard (~> 2.14)
|
|
130
|
+
guard-rspec (~> 4.7)
|
|
131
|
+
listen (= 3.0.7)
|
|
132
|
+
pry
|
|
133
|
+
rake (~> 10.0)
|
|
134
|
+
rspec (~> 3.4)
|
|
135
|
+
rubocop (~> 0.41)
|
|
136
|
+
yard (~> 0.8)
|
|
137
|
+
|
|
138
|
+
BUNDLED WITH
|
|
139
|
+
1.13.7
|
data/Guardfile
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# A guardfile for making Danger Plugins
|
|
2
|
+
# For more info see https://github.com/guard/guard#readme
|
|
3
|
+
|
|
4
|
+
# To run, use `bundle exec guard`.
|
|
5
|
+
|
|
6
|
+
guard :rspec, cmd: 'bundle exec rspec' do
|
|
7
|
+
require 'guard/rspec/dsl'
|
|
8
|
+
dsl = Guard::RSpec::Dsl.new(self)
|
|
9
|
+
|
|
10
|
+
# RSpec files
|
|
11
|
+
rspec = dsl.rspec
|
|
12
|
+
watch(rspec.spec_helper) { rspec.spec_dir }
|
|
13
|
+
watch(rspec.spec_support) { rspec.spec_dir }
|
|
14
|
+
watch(rspec.spec_files)
|
|
15
|
+
|
|
16
|
+
# Ruby files
|
|
17
|
+
ruby = dsl.ruby
|
|
18
|
+
dsl.watch_spec_files_for(ruby.lib_files)
|
|
19
|
+
end
|
data/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2017 Conichi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2017 Anton Domashnev <antondomashnev@gmail.com>
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[](https://travis-ci.org/conichiGMBH/danger-pr_reviewers)
|
|
2
|
+
|
|
3
|
+
# danger-pr_reviewers
|
|
4
|
+
|
|
5
|
+
The plugin deals with the PRs on the GitHub innregards to reviews. Based on the given parameters
|
|
6
|
+
it automatically assigns the developer to review the PRs. In [ios team](https://github.com/conichiGMBH/ios-team) we have [rules](https://github.com/conichiGMBH/ios-team/blob/master/docs/pr_protocol.md#creating-the-pr) to ask our designers to review the UI changed in PR, by checkin the attached image or gif. The `pr_reviewers` can also ask for review based on that rule.
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
$ gem install danger-pr_reviewers
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```ruby
|
|
17
|
+
developers_usernames = ["Superman", "Batman", "Iron-Man"]
|
|
18
|
+
number_of_developers_required_for_review = 1
|
|
19
|
+
designers_usernames = ["Pablo-Picasso", "Salvador-Dali"]
|
|
20
|
+
number_of_designers_required_for_review = 1
|
|
21
|
+
pr_reviewers.run(developers_usernames,
|
|
22
|
+
designers_usernames,
|
|
23
|
+
number_of_developers_required_for_review,
|
|
24
|
+
number_of_designers_required_for_review)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Development
|
|
28
|
+
|
|
29
|
+
1. Clone this repo
|
|
30
|
+
2. Run `bundle install` to setup dependencies.
|
|
31
|
+
3. Run `bundle exec rake spec` to run the tests.
|
|
32
|
+
4. Use `bundle exec guard` to automatically have tests run as you make changes.
|
|
33
|
+
5. Make your changes.
|
data/RELEASING.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Releasing Danger-PR-Reviewers
|
|
2
|
+
|
|
3
|
+
There're no hard rules about when to release `danger-pr_reviewers`. Release bug fixes frequently, features not so frequently and breaking API changes rarely.
|
|
4
|
+
|
|
5
|
+
### Release
|
|
6
|
+
|
|
7
|
+
Install bundle, run tests, check that all tests succeed locally.
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
bundle install
|
|
11
|
+
rake
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Check that the last build succeeded in [Travis CI](https://travis-ci.org/conichiGMBH/danger-pr_reviewers) for all supported platforms.
|
|
15
|
+
|
|
16
|
+
Increment the version, modify [lib/pr_reviewers/gem_version.rb](lib/pr_reviewers/gem_version.rb).
|
|
17
|
+
|
|
18
|
+
Following the [Semantic Versioning](http://semver.org/):
|
|
19
|
+
* Increment the third number if the release has bug fixes and/or very minor features with backward compatibility, only (eg. change `0.2.1` to `0.2.2`).
|
|
20
|
+
* Increment the second number if the release contains major features or breaking API changes (eg. change `0.2.1` to `0.3.0`).
|
|
21
|
+
|
|
22
|
+
Create a new version and mark it as Next in [CHANGELOG.md](CHANGELOG.md).
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
### 0.2.2 (12/03/2016)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Remove the line with "* Your contribution here.", since there will be no more contributions to this release.
|
|
29
|
+
|
|
30
|
+
Commit your changes.
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
git add CHANGELOG.md lib/pr_reviewers/gem_version.rb
|
|
34
|
+
git commit -m "Preparing for release 0.2.2."
|
|
35
|
+
git push origin master
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Release.
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
$ rake release
|
|
42
|
+
|
|
43
|
+
danger-pr_reviewers 0.2.2 built to pkg/danger-pr_reviewers-0.2.2.gem.
|
|
44
|
+
Tagged v0.2.2.
|
|
45
|
+
Pushed git commits and tags.
|
|
46
|
+
Pushed danger-pr_reviewers 0.2.2 to rubygems.org.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Prepare for the Next Version
|
|
50
|
+
|
|
51
|
+
Add the next release to [CHANGELOG.md](CHANGELOG.md).
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
### 0.2.3 (Next)
|
|
55
|
+
|
|
56
|
+
* Your contribution here.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Increment the third version number in [lib/pr_reviewers/gem_version.rb](lib/pr_reviewers/gem_version.rb).
|
|
60
|
+
|
|
61
|
+
Commit your changes.
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
git add CHANGELOG.md lib/pr_reviewers/version.rb
|
|
65
|
+
git commit -m "Preparing for next development iteration, 0.2.3."
|
|
66
|
+
git push origin master
|
|
67
|
+
```
|
data/Rakefile
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'bundler/gem_tasks'
|
|
2
|
+
require 'rspec/core/rake_task'
|
|
3
|
+
require 'rubocop/rake_task'
|
|
4
|
+
|
|
5
|
+
RSpec::Core::RakeTask.new(:specs)
|
|
6
|
+
|
|
7
|
+
task default: :specs
|
|
8
|
+
|
|
9
|
+
task :spec do
|
|
10
|
+
Rake::Task['specs'].invoke
|
|
11
|
+
Rake::Task['rubocop'].invoke
|
|
12
|
+
Rake::Task['spec_docs'].invoke
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
desc 'Run RuboCop on the lib/specs directory'
|
|
16
|
+
RuboCop::RakeTask.new(:rubocop) do |task|
|
|
17
|
+
task.patterns = ['lib/**/*.rb', 'spec/**/*.rb']
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
desc 'Ensure that the plugin passes `danger plugins lint`'
|
|
21
|
+
task :spec_docs do
|
|
22
|
+
sh 'bundle exec danger plugins lint'
|
|
23
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
|
+
require 'pr_reviewers/gem_version.rb'
|
|
6
|
+
|
|
7
|
+
Gem::Specification.new do |spec|
|
|
8
|
+
spec.name = 'danger-pr_reviewers'
|
|
9
|
+
spec.version = PrReviewers::VERSION
|
|
10
|
+
spec.authors = ['Anton Domashnev']
|
|
11
|
+
spec.email = ['anton.domashnev@conichi.com']
|
|
12
|
+
spec.description = 'Picks the reviewers for the your PRs.'
|
|
13
|
+
spec.summary = "It's literally the simplest version of a mention plugin already
|
|
14
|
+
existed in Danger ecosystem."
|
|
15
|
+
spec.homepage = 'https://github.com/conichiGMBH/danger-pr_reviewers'
|
|
16
|
+
spec.license = 'MIT'
|
|
17
|
+
|
|
18
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
|
19
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
20
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
21
|
+
spec.require_paths = ['lib']
|
|
22
|
+
|
|
23
|
+
spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
|
|
24
|
+
|
|
25
|
+
# General ruby development
|
|
26
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
|
27
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
|
28
|
+
|
|
29
|
+
# Testing support
|
|
30
|
+
spec.add_development_dependency 'rspec', '~> 3.4'
|
|
31
|
+
|
|
32
|
+
# Linting code and docs
|
|
33
|
+
spec.add_development_dependency 'rubocop', '~> 0.41'
|
|
34
|
+
spec.add_development_dependency 'yard', '~> 0.8'
|
|
35
|
+
|
|
36
|
+
# Makes testing easy via `bundle exec guard`
|
|
37
|
+
spec.add_development_dependency 'guard', '~> 2.14'
|
|
38
|
+
spec.add_development_dependency 'guard-rspec', '~> 4.7'
|
|
39
|
+
|
|
40
|
+
# If you want to work on older builds of ruby
|
|
41
|
+
spec.add_development_dependency 'listen', '3.0.7'
|
|
42
|
+
|
|
43
|
+
# This gives you the chance to run a REPL inside your tests
|
|
44
|
+
# via:
|
|
45
|
+
#
|
|
46
|
+
# require 'pry'
|
|
47
|
+
# binding.pry
|
|
48
|
+
#
|
|
49
|
+
# This will stop test execution and let you inspect the results
|
|
50
|
+
spec.add_development_dependency 'pry'
|
|
51
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'pr_reviewers/plugin'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'pr_reviewers/gem_version'
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module Danger
|
|
2
|
+
#
|
|
3
|
+
# The idea of the plugin is to let the machine rules the PR reviewers decision =)
|
|
4
|
+
# * It will assign a random %n developers from the given Array to review the code
|
|
5
|
+
# * It will assign a random %n designers from the given Array to
|
|
6
|
+
# review the UI if there is an image attached to the PR body
|
|
7
|
+
#
|
|
8
|
+
# @example Assigns reviewers for the PR
|
|
9
|
+
#
|
|
10
|
+
# pr_reviewers.run
|
|
11
|
+
#
|
|
12
|
+
# @see conichiGMBH/danger-pr_reviewers
|
|
13
|
+
# @tags github, review, mention
|
|
14
|
+
#
|
|
15
|
+
class DangerPrReviewers < Plugin
|
|
16
|
+
# Request a review from potential reviewers.
|
|
17
|
+
#
|
|
18
|
+
# @param [Integer] number_of_code_reviewers
|
|
19
|
+
# Maximum number of developers to request a review from, default is 1.
|
|
20
|
+
# @param [Integer] number_of_design_reviewers
|
|
21
|
+
# Maximum number of designers to request a review from, default is 1.
|
|
22
|
+
# @param [Array<String>] developers
|
|
23
|
+
# List of developers GitHub's usernames.
|
|
24
|
+
# @param [Array<String>] designers
|
|
25
|
+
# List of designers GitHub's usernames.
|
|
26
|
+
# @return [void]
|
|
27
|
+
#
|
|
28
|
+
def run(developers, designers, number_of_code_reviewers = 1, number_of_design_reviewers = 1)
|
|
29
|
+
unless @dangerfile.github.pr_author.nil?
|
|
30
|
+
developers -= [@dangerfile.github.pr_author]
|
|
31
|
+
designers -= [@dangerfile.github.pr_author]
|
|
32
|
+
end
|
|
33
|
+
reviewers = find_developers(number_of_code_reviewers, developers)
|
|
34
|
+
reviewers += find_designers(number_of_design_reviewers, designers) if need_design_review?
|
|
35
|
+
request_review(reviewers)
|
|
36
|
+
message("Danger has assigned @#{reviewers.join(' @')} to review the PR", sticky: true)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def find_developers(number_of_code_reviewers, developers)
|
|
42
|
+
developers.sample([number_of_code_reviewers, developers.count].min)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def find_designers(number_of_design_reviewers, designers)
|
|
46
|
+
designers.sample([number_of_design_reviewers, designers.count].min)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def need_design_review?
|
|
50
|
+
pr_body = @dangerfile.github.pr_body
|
|
51
|
+
return true if pr_body =~ /<img([\w\W]+?)>/
|
|
52
|
+
return true if pr_body =~ %r{\[.*\]\((https|http):\/\/.*\.(PNG|png|jpeg|jpg)\)}
|
|
53
|
+
false
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def request_review(reviewers)
|
|
57
|
+
github = @dangerfile.env.request_source
|
|
58
|
+
pr_id = @dangerfile.env.ci_source.pull_request_id
|
|
59
|
+
repo = @dangerfile.env.ci_source.repo_slug
|
|
60
|
+
github.client.request_pull_request_review(repo, pr_id, reviewers)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
module Danger
|
|
4
|
+
describe Danger::DangerPrReviewers do
|
|
5
|
+
it 'should be a plugin' do
|
|
6
|
+
expect(Danger::DangerPrReviewers.new(nil)).to be_a Danger::Plugin
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
context 'with dangerfile' do
|
|
11
|
+
let(:pr_id) { testing_env['TRAVIS_PULL_REQUEST'] }
|
|
12
|
+
let(:repo_slug) { testing_env['TRAVIS_REPO_SLUG'] }
|
|
13
|
+
let(:dangerfile) { testing_dangerfile }
|
|
14
|
+
let(:developers) { ['Antondomashnev', 'Mourad-Aly', 'David-Henner', 'Superman'] }
|
|
15
|
+
let(:designers) { ['denis-sharypin', 'johnny'] }
|
|
16
|
+
let(:pr_reviewers) { dangerfile.pr_reviewers }
|
|
17
|
+
let(:client) { double(Octokit::Client) }
|
|
18
|
+
let(:github) { dangerfile.github }
|
|
19
|
+
|
|
20
|
+
context 'in a PR' do
|
|
21
|
+
before do
|
|
22
|
+
allow(client).to receive(:request_pull_request_review).with(anything, anything, anything)
|
|
23
|
+
allow(dangerfile.env.request_source).to receive(:client).and_return(client)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context 'with the pr author as a deloper' do
|
|
27
|
+
let(:pr_author) { 'Antondomashnev' }
|
|
28
|
+
|
|
29
|
+
before do
|
|
30
|
+
allow(github).to receive(:pr_author).and_return(pr_author)
|
|
31
|
+
allow(github).to receive(:pr_body).and_return('Hey! Here is a snapshot of ')
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it 'excludes author from potential reviewer' do
|
|
35
|
+
expect(client).to_not receive(:request_pull_request_review).with(repo_slug, pr_id, array_including(pr_author))
|
|
36
|
+
pr_reviewers.run(developers, designers, 4, 2)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context 'with the pr author as a designer' do
|
|
41
|
+
let(:pr_author) { 'johnny' }
|
|
42
|
+
|
|
43
|
+
before do
|
|
44
|
+
allow(github).to receive(:pr_author).and_return(pr_author)
|
|
45
|
+
allow(github).to receive(:pr_body).and_return('Hey! Here is a snapshot of ')
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it 'excludes author from potential reviewer' do
|
|
49
|
+
expect(client).to_not receive(:request_pull_request_review).with(repo_slug, pr_id, array_including(pr_author))
|
|
50
|
+
pr_reviewers.run(developers, designers, 4, 2)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
context 'with image' do
|
|
55
|
+
before do
|
|
56
|
+
allow(github).to receive(:pr_author).and_return('Foo')
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
context 'inserted as markdown link' do
|
|
60
|
+
before do
|
|
61
|
+
allow(github).to receive(:pr_body).and_return('Hey! Here is a snapshot of ')
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it 'asks designer for review' do
|
|
65
|
+
expect(client).to receive(:request_pull_request_review).with(repo_slug, pr_id, array_including_sample_of(designers, 2))
|
|
66
|
+
pr_reviewers.run(developers, designers, 3, 2)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it 'asks developer for review' do
|
|
70
|
+
expect(client).to receive(:request_pull_request_review).with(repo_slug, pr_id, array_including_sample_of(developers, 3))
|
|
71
|
+
pr_reviewers.run(developers, designers, 3, 2)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
context 'inserted as html tag' do
|
|
76
|
+
before do
|
|
77
|
+
allow(github).to receive(:pr_body).and_return('Please check only what inside the red rectangle 😄 <img src="https://monosnap.com/file/DF8OnfmdHRbJ3UH4e6phCVf8blJln4.png" width=640>')
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it 'asks designer for review' do
|
|
81
|
+
expect(client).to receive(:request_pull_request_review).with(repo_slug, pr_id, array_including_sample_of(designers, 2))
|
|
82
|
+
pr_reviewers.run(developers, designers, 3, 2)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it 'asks developer for review' do
|
|
86
|
+
expect(client).to receive(:request_pull_request_review).with(repo_slug, pr_id, array_including_sample_of(developers, 3))
|
|
87
|
+
pr_reviewers.run(developers, designers, 3, 2)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
context 'without image' do
|
|
93
|
+
before do
|
|
94
|
+
allow(github).to receive(:pr_author).and_return('Foo')
|
|
95
|
+
allow(github).to receive(:pr_body).and_return('This is my amazing PR without images')
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it 'doesnt ask designer for review' do
|
|
99
|
+
expect(client).to_not receive(:request_pull_request_review).with(repo_slug, pr_id, array_including_sample_of(designers, 2))
|
|
100
|
+
pr_reviewers.run(developers, designers, 3, 2)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it 'asks developer for review' do
|
|
104
|
+
expect(client).to receive(:request_pull_request_review).with(repo_slug, pr_id, array_including_sample_of(developers, 3))
|
|
105
|
+
pr_reviewers.run(developers, designers, 3, 2)
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require 'pathname'
|
|
2
|
+
ROOT = Pathname.new(File.expand_path('../../', __FILE__))
|
|
3
|
+
$LOAD_PATH.unshift((ROOT + 'lib').to_s)
|
|
4
|
+
$LOAD_PATH.unshift((ROOT + 'spec').to_s)
|
|
5
|
+
|
|
6
|
+
require 'bundler/setup'
|
|
7
|
+
require 'pry'
|
|
8
|
+
|
|
9
|
+
require 'rspec'
|
|
10
|
+
require 'danger'
|
|
11
|
+
|
|
12
|
+
# Use coloured output, it's the best.
|
|
13
|
+
RSpec.configure do |config|
|
|
14
|
+
config.filter_gems_from_backtrace 'bundler'
|
|
15
|
+
config.color = true
|
|
16
|
+
config.tty = true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
require 'danger_plugin'
|
|
20
|
+
|
|
21
|
+
# These functions are a subset of https://github.com/danger/danger/blob/master/spec/spec_helper.rb
|
|
22
|
+
# If you are expanding these files, see if it's already been done ^.
|
|
23
|
+
|
|
24
|
+
# A silent version of the user interface,
|
|
25
|
+
# it comes with an extra function `.string` which will
|
|
26
|
+
# strip all ANSI colours from the string.
|
|
27
|
+
|
|
28
|
+
# rubocop:disable Lint/NestedMethodDefinition
|
|
29
|
+
def testing_ui
|
|
30
|
+
@output = StringIO.new
|
|
31
|
+
def @output.winsize
|
|
32
|
+
[20, 9999]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
cork = Cork::Board.new(out: @output)
|
|
36
|
+
def cork.string
|
|
37
|
+
out.string.gsub(/\e\[([;\d]+)?m/, '')
|
|
38
|
+
end
|
|
39
|
+
cork
|
|
40
|
+
end
|
|
41
|
+
# rubocop:enable Lint/NestedMethodDefinition
|
|
42
|
+
|
|
43
|
+
# Example environment (ENV) that would come from
|
|
44
|
+
# running a PR on TravisCI
|
|
45
|
+
def testing_env
|
|
46
|
+
{
|
|
47
|
+
'HAS_JOSH_K_SEAL_OF_APPROVAL' => 'true',
|
|
48
|
+
'TRAVIS_PULL_REQUEST' => '800',
|
|
49
|
+
'TRAVIS_REPO_SLUG' => 'artsy/eigen',
|
|
50
|
+
'TRAVIS_COMMIT_RANGE' => '759adcbd0d8f...13c4dc8bb61d',
|
|
51
|
+
'DANGER_GITHUB_API_TOKEN' => '123sbdq54erfsd3422gdfio'
|
|
52
|
+
}
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# A stubbed out Dangerfile for use in tests
|
|
56
|
+
def testing_dangerfile
|
|
57
|
+
env = Danger::EnvironmentManager.new(testing_env)
|
|
58
|
+
Danger::Dangerfile.new(env, testing_ui)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
RSpec::Matchers.define :array_including_sample_of do |*attributes|
|
|
62
|
+
match do |actual|
|
|
63
|
+
contained_elements_count = 0
|
|
64
|
+
attributes[0].each do |element|
|
|
65
|
+
contained_elements_count += 1 if actual.include? element
|
|
66
|
+
end
|
|
67
|
+
contained_elements_count == attributes[1]
|
|
68
|
+
end
|
|
69
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: danger-pr_reviewers
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Anton Domashnev
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2017-06-27 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: danger-plugin-api
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: bundler
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '1.3'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '1.3'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rake
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '10.0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '10.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rspec
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '3.4'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '3.4'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rubocop
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0.41'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0.41'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: yard
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0.8'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0.8'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: guard
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '2.14'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '2.14'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: guard-rspec
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '4.7'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - "~>"
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '4.7'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: listen
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - '='
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: 3.0.7
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - '='
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: 3.0.7
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: pry
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ">="
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
153
|
+
description: Picks the reviewers for the your PRs.
|
|
154
|
+
email:
|
|
155
|
+
- anton.domashnev@conichi.com
|
|
156
|
+
executables: []
|
|
157
|
+
extensions: []
|
|
158
|
+
extra_rdoc_files: []
|
|
159
|
+
files:
|
|
160
|
+
- ".gitignore"
|
|
161
|
+
- ".rubocop.yml"
|
|
162
|
+
- ".rubocop_todo.yml"
|
|
163
|
+
- ".travis.yml"
|
|
164
|
+
- CHANGELOG.md
|
|
165
|
+
- Dangerfile
|
|
166
|
+
- Gemfile
|
|
167
|
+
- Gemfile.lock
|
|
168
|
+
- Guardfile
|
|
169
|
+
- LICENSE
|
|
170
|
+
- LICENSE.txt
|
|
171
|
+
- README.md
|
|
172
|
+
- RELEASING.md
|
|
173
|
+
- Rakefile
|
|
174
|
+
- danger-pr_reviewers.gemspec
|
|
175
|
+
- lib/danger_plugin.rb
|
|
176
|
+
- lib/danger_pr_reviewers.rb
|
|
177
|
+
- lib/pr_reviewers/gem_version.rb
|
|
178
|
+
- lib/pr_reviewers/plugin.rb
|
|
179
|
+
- spec/pr_reviewers_spec.rb
|
|
180
|
+
- spec/spec_helper.rb
|
|
181
|
+
homepage: https://github.com/conichiGMBH/danger-pr_reviewers
|
|
182
|
+
licenses:
|
|
183
|
+
- MIT
|
|
184
|
+
metadata: {}
|
|
185
|
+
post_install_message:
|
|
186
|
+
rdoc_options: []
|
|
187
|
+
require_paths:
|
|
188
|
+
- lib
|
|
189
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
190
|
+
requirements:
|
|
191
|
+
- - ">="
|
|
192
|
+
- !ruby/object:Gem::Version
|
|
193
|
+
version: '0'
|
|
194
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
195
|
+
requirements:
|
|
196
|
+
- - ">="
|
|
197
|
+
- !ruby/object:Gem::Version
|
|
198
|
+
version: '0'
|
|
199
|
+
requirements: []
|
|
200
|
+
rubyforge_project:
|
|
201
|
+
rubygems_version: 2.5.1
|
|
202
|
+
signing_key:
|
|
203
|
+
specification_version: 4
|
|
204
|
+
summary: It's literally the simplest version of a mention plugin already existed in
|
|
205
|
+
Danger ecosystem.
|
|
206
|
+
test_files:
|
|
207
|
+
- spec/pr_reviewers_spec.rb
|
|
208
|
+
- spec/spec_helper.rb
|