export-pull-requests 0.1.0 → 0.1.1
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/bin/epr +49 -6
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a531cf40cb67b6e178bc75a254ee821758369d6
|
4
|
+
data.tar.gz: da773616d8a630e16bc43b68bf19a6dcddfca440
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 859d3b348f3e95edefa52cf74de68a5a3ce253863ddd9c8695b663fa5b3488193d9672740822f51b6becf14558a9ac4d623d36f56df79fc2ddd23d365f2a3aea
|
7
|
+
data.tar.gz: 883f927bd24a27b417b085550fc4697e06ce4f631c3212ce54e53e8ce74f901df02c7b33ae9d7df99f9aa20b80cdc81288deadea57c1e0eb860f8a7f7af6ca20
|
data/bin/epr
CHANGED
@@ -3,10 +3,14 @@
|
|
3
3
|
require "csv"
|
4
4
|
require "optparse"
|
5
5
|
require "time"
|
6
|
+
require "logger"
|
7
|
+
|
6
8
|
require "github_api"
|
7
9
|
require "gitlab"
|
10
|
+
require "bitbucket_rest_api"
|
8
11
|
|
9
|
-
VERSION = "0.1.
|
12
|
+
VERSION = "0.1.1"
|
13
|
+
SERVICES = %w[github gitlab bitbucket]
|
10
14
|
|
11
15
|
def localtime(t)
|
12
16
|
Time.parse(t).localtime.strftime("%x %X")
|
@@ -36,6 +40,39 @@ def lookup_token
|
|
36
40
|
end
|
37
41
|
end
|
38
42
|
|
43
|
+
def bitbucket(user, repo)
|
44
|
+
page = 0
|
45
|
+
rows = []
|
46
|
+
|
47
|
+
$bitbucket ||= BitBucket.new(:basic_auth => $token)
|
48
|
+
# TODO: make sure no need to translate any states
|
49
|
+
# https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/pullrequests
|
50
|
+
|
51
|
+
loop do
|
52
|
+
page += 1
|
53
|
+
|
54
|
+
prs = $bitbucket.repos.pull_request.all(user, repo, :page => page, :state => $filter.upcase)
|
55
|
+
prs["values"].each do |pr|
|
56
|
+
next if pr.author && skip_user?(pr.author.username)
|
57
|
+
|
58
|
+
rows << [
|
59
|
+
"#{user}/#{repo}",
|
60
|
+
pr.id,
|
61
|
+
pr.author ? pr.author.username : "-",
|
62
|
+
pr.title,
|
63
|
+
pr.state,
|
64
|
+
localtime(pr.created_on),
|
65
|
+
localtime(pr.updated_on),
|
66
|
+
pr["links"].html.href
|
67
|
+
]
|
68
|
+
end
|
69
|
+
|
70
|
+
break unless prs["next"]
|
71
|
+
end
|
72
|
+
|
73
|
+
rows
|
74
|
+
end
|
75
|
+
|
39
76
|
def github(user, repo)
|
40
77
|
rows = []
|
41
78
|
|
@@ -99,12 +136,14 @@ def export_repos(repos)
|
|
99
136
|
rows.concat(github(user, repo))
|
100
137
|
when "gitlab"
|
101
138
|
rows.concat(gitlab(user, repo))
|
139
|
+
when "bitbucket"
|
140
|
+
rows.concat(bitbucket(user, repo))
|
102
141
|
else
|
103
|
-
abort "unknown service provider:
|
142
|
+
abort "unknown service provider: #$provider"
|
104
143
|
end
|
105
144
|
|
106
145
|
rows.each do |r|
|
107
|
-
# Repository column
|
146
|
+
# Drop Repository column if we only have one repo
|
108
147
|
r.shift unless repos.size > 1
|
109
148
|
puts r.to_csv
|
110
149
|
end
|
@@ -112,10 +151,14 @@ def export_repos(repos)
|
|
112
151
|
end
|
113
152
|
end
|
114
153
|
|
154
|
+
# Hashie is used by Bitbucket, and it spews warnings to stdout. We stop that,
|
155
|
+
# specifically: https://github.com/bitbucket-rest-api/bitbucket/issues/87
|
156
|
+
Hashie.logger = Logger.new(File::NULL) if defined?(Hashie)
|
157
|
+
|
115
158
|
$exclude_users = []
|
116
159
|
$include_users = []
|
117
160
|
$filter = "open"
|
118
|
-
$provider = "
|
161
|
+
$provider = ENV["EPR_SERVICE"] || SERVICES[0]
|
119
162
|
$token = lookup_token
|
120
163
|
|
121
164
|
parser = OptionParser.new do |opts|
|
@@ -135,7 +178,7 @@ parser = OptionParser.new do |opts|
|
|
135
178
|
$token = t
|
136
179
|
end
|
137
180
|
|
138
|
-
opts.on "-p, --provider=NAME",
|
181
|
+
opts.on "-p, --provider=NAME", SERVICES, "Service provider, one of: #{SERVICES}" do |name|
|
139
182
|
$provider = name
|
140
183
|
end
|
141
184
|
|
@@ -144,7 +187,7 @@ parser = OptionParser.new do |opts|
|
|
144
187
|
end
|
145
188
|
|
146
189
|
opts.on "-v", "--version", "epr version" do
|
147
|
-
puts "v#{VERSION} (GitHub
|
190
|
+
puts "v#{VERSION} (GitHub v#{Github::VERSION}, GitLab v#{Gitlab::VERSION}, Bitbucket v#{BitBucket::VERSION::STRING})"
|
148
191
|
exit
|
149
192
|
end
|
150
193
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: export-pull-requests
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Skye Shaw
|
@@ -38,22 +38,36 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '4.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bitbucket_rest_api
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.1'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.9
|
61
|
+
version: '0.9'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.9
|
55
|
-
description: Program to export GitHub
|
56
|
-
a file.
|
68
|
+
version: '0.9'
|
69
|
+
description: Program to export GitHub, GitLab, or Bitbucket pull requests/merge requests
|
70
|
+
to CSV a file.
|
57
71
|
email: skye.shaw@gmail.com
|
58
72
|
executables:
|
59
73
|
- epr
|