ghreview 0.1.0 → 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/README.md +12 -4
- data/bin/ghreview +25 -9
- metadata +32 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1337d11f3c8935e886f3970d5b22a95d9098088431e710de5a0ab0a5a51e059
|
4
|
+
data.tar.gz: cb4497a211ab18d5b3bfd26ae07460e2b3448d09e585266962cc9bc6d1557068
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3f0c9e37a817d21a7b22eb46cc38e8fba5c9f6e1a0e3621200dcca3533d2ff17578c24e6dc33b2a889ee8841a895e46cff8afc7d50dba3e925bb7db5bcfe747
|
7
|
+
data.tar.gz: 294d7edf99cb7ffa843148b81df46b1322005653ab137caa1631307ae257650b0bbbe5dfae19333c3e68964dd962623b06a8eacd414445ee8027730b9d77b9b4
|
data/README.md
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
# `ghreview` - Mass GitHub Review from Command Line
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/ghreview.svg)](https://badge.fury.io/rb/ghreview)
|
4
|
+
|
5
|
+
|
3
6
|
Sometimes you need to review a lot of pull requests with the same or very similar
|
4
7
|
small change. Using the GitHub web UI is not convenient for approving many pull
|
5
|
-
requests
|
8
|
+
requests. That's the reason for creating the `ghreview` script which can be
|
6
9
|
used from command line.
|
7
10
|
|
8
11
|
## Features
|
@@ -13,6 +16,7 @@ used from command line.
|
|
13
16
|
- It can approve each pull request with the default "LGTM" message (Looks Good
|
14
17
|
To Me), but you can use a custom message, see the [options](#options) below
|
15
18
|
- Optionally can merge the pull requests and delete the source branch
|
19
|
+
- The pull requests can be passed as arguments or they can be read from a file
|
16
20
|
|
17
21
|
If a pull request is not approved then it is skipped and not touched at all.
|
18
22
|
You need to comment at the GitHub pull request page manually in that case.
|
@@ -30,6 +34,8 @@ ghreview --merge https://github.com/yast/yast-users/pull/218 \
|
|
30
34
|
https://github.com/yast/yast-sound/pull/35
|
31
35
|
```
|
32
36
|
|
37
|
+
Or use the `--file` option to read them from a file.
|
38
|
+
|
33
39
|
## Installation
|
34
40
|
|
35
41
|
The script is packaged as a Ruby gem, to install it run:
|
@@ -66,7 +72,7 @@ Just make sure the `.netrc` file is not readable for the other users
|
|
66
72
|
Alternatively the access token can be passed via environment variable `GH_TOKEN`:
|
67
73
|
|
68
74
|
```shell
|
69
|
-
␣GH_TOKEN=...
|
75
|
+
␣GH_TOKEN=... ghreview ...
|
70
76
|
```
|
71
77
|
|
72
78
|
:warning: *Note the extra space at the beginning of the line, that is
|
@@ -81,5 +87,7 @@ The script accepts these optional command line options:
|
|
81
87
|
- `--delete` (or `-d`) - Delete the source branch after merging (the YaST
|
82
88
|
GitHub repositories have now enabled the auto-removal of the merged branches
|
83
89
|
so this option is usually not needed)
|
84
|
-
- `--message
|
85
|
-
(Looks Good To Me)
|
90
|
+
- `--message <message>` (or `-m <message>`) - The text used in the review
|
91
|
+
comment, the default is `LGTM` (Looks Good To Me)
|
92
|
+
- `--file <file>` (or `-f <file>`) - Read the list of pull requests from a file
|
93
|
+
(one pull request per line)
|
data/bin/ghreview
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
# This script is intended for mass review of the same (or very similar)
|
4
5
|
# GitHub pull requests.
|
@@ -22,11 +23,16 @@ require "rainbow"
|
|
22
23
|
merge_pr = false
|
23
24
|
delete_branch = false
|
24
25
|
message = "LGTM"
|
26
|
+
file = nil
|
25
27
|
|
26
28
|
# parse the command line options
|
27
29
|
OptionParser.new do |parser|
|
28
30
|
parser.banner = "Usage: #{$PROGRAM_NAME} [options] PR_URL1 PR_URL2 ..."
|
29
31
|
|
32
|
+
parser.on("-f", "--file FILE", "Read the list of pull requests from file") do |f|
|
33
|
+
file = f
|
34
|
+
end
|
35
|
+
|
30
36
|
parser.on("-g", "--merge", "Merge the approved pull requests") do |m|
|
31
37
|
merge_pr = m
|
32
38
|
end
|
@@ -35,7 +41,7 @@ OptionParser.new do |parser|
|
|
35
41
|
delete_branch = d
|
36
42
|
end
|
37
43
|
|
38
|
-
parser.on("-m", "--message", "Approving message (default: \"#{message}\")") do |m|
|
44
|
+
parser.on("-m", "--message MESSAGE", "Approving message (default: \"#{message}\")") do |m|
|
39
45
|
message = m
|
40
46
|
end
|
41
47
|
end.parse!
|
@@ -99,7 +105,7 @@ def print_pull_status(client, status_url, repo, pr)
|
|
99
105
|
|
100
106
|
status = client.status(repo, sha)
|
101
107
|
color = (status[:state] == "success") ? :green : :red
|
102
|
-
puts "Overall Status: " + Rainbow(
|
108
|
+
puts "Overall Status: " + Rainbow((status[:state]).to_s).color(color)
|
103
109
|
|
104
110
|
if status[:state] != "success"
|
105
111
|
status[:statuses].each do |st|
|
@@ -161,18 +167,28 @@ def process_pull(client, pr_url, repo, pr, message, delete_branch, merge_pr)
|
|
161
167
|
|
162
168
|
if pull[:merged]
|
163
169
|
puts Rainbow("Already merged").bright.yellow
|
164
|
-
|
165
|
-
approve_pull(client, pull, message, repo, pr, delete_branch, merge_pr)
|
170
|
+
elsif ask_for_approval
|
171
|
+
approve_pull(client, pull, message, repo, pr, delete_branch, merge_pr)
|
166
172
|
end
|
167
173
|
end
|
168
174
|
|
169
|
-
client
|
170
|
-
|
171
|
-
if p =~ /^https:\/\/github.com\/(\S+)\/pull\/(\d+)/
|
175
|
+
def process_url(client, url, message, delete_branch, merge_pr)
|
176
|
+
if url =~ /^https:\/\/github.com\/(\S+)\/pull\/(\d+)/
|
172
177
|
repo = Regexp.last_match[1]
|
173
178
|
pr = Regexp.last_match[2]
|
174
|
-
process_pull(client,
|
179
|
+
process_pull(client, url, repo, pr, message, delete_branch, merge_pr)
|
175
180
|
else
|
176
|
-
puts "
|
181
|
+
puts "#{url.inspect} is not a GitHub pull request URL, skipping"
|
177
182
|
end
|
178
183
|
end
|
184
|
+
|
185
|
+
client = create_github_client
|
186
|
+
ARGV.each do |url|
|
187
|
+
process_url(client, url, message, delete_branch, merge_pr)
|
188
|
+
end
|
189
|
+
|
190
|
+
return unless file
|
191
|
+
|
192
|
+
File.open(file, "r").each_line do |line|
|
193
|
+
process_url(client, line, message, delete_branch, merge_pr)
|
194
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ghreview
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ladislav Slezák
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: netrc
|
@@ -90,9 +90,37 @@ dependencies:
|
|
90
90
|
- - "<"
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: '3.0'
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: rake
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '13'
|
100
|
+
type: :development
|
101
|
+
prerelease: false
|
102
|
+
version_requirements: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - "~>"
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '13'
|
107
|
+
- !ruby/object:Gem::Dependency
|
108
|
+
name: rubocop
|
109
|
+
requirement: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - '='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 0.71.0
|
114
|
+
type: :development
|
115
|
+
prerelease: false
|
116
|
+
version_requirements: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - '='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: 0.71.0
|
93
121
|
description: |2
|
94
|
-
The 'ghreview'
|
95
|
-
command line. It is
|
122
|
+
The 'ghreview' tool allows doing mass GitHub pull request reviews from
|
123
|
+
command line. It is intended for approving simple changes is several
|
96
124
|
pull requests even across several repositories.
|
97
125
|
email:
|
98
126
|
executables:
|