export-pull-requests 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/Changes +6 -0
  3. data/README.md +11 -6
  4. data/bin/epr +20 -10
  5. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4d378c2d847231e7d5b29e98aeec72a952100258
4
- data.tar.gz: f0a364c762a48ec22d0dc35ed1f94fb501bf76ca
3
+ metadata.gz: 929623e66a1f68647fabb6f245e3ca7215cd167c
4
+ data.tar.gz: 6caa7e29e8fc21d83ef30b668f249a44e76529d4
5
5
  SHA512:
6
- metadata.gz: 007731af9e311ef0f38155aa1c0a13c3dafb61211939239f3f2a5ac7483d953d1e1daac26ac1c511c51d6297595b151368c7a093918b84fab7bd84a7f879e1e6
7
- data.tar.gz: 663950b5114a6634b51d063885fc9e862766694f4f9817b7da5f900affa39ff868629de0aab642fd4ba005febbf4bae1aceb3eba75c0923838d45ff67fc6a335
6
+ metadata.gz: 1db30f68f7b7dc619d7db177c322976cb8276cb47c9efa50315eb4c8ab2198bf9386f8c433591958d08f8530503a09fe54915c342b7591e01331fec6a37aacb5
7
+ data.tar.gz: 2e0d613b81ca451402f4e772faff8872de6c4ab9dead6e2cc4d9e88d4ca0b2bae2c1b676420e4bf9091dd664c5ce821c0f99dfeca6f647b499a853a0822e5652
data/Changes CHANGED
@@ -1,3 +1,9 @@
1
+ --------------------
2
+ v0.2.1 2018-06-05
3
+ --------------------
4
+ Enhancements:
5
+ * Add support for custom endpoints
6
+
1
7
  --------------------
2
8
  v0.2.0 2017-09-21
3
9
  --------------------
data/README.md CHANGED
@@ -16,14 +16,15 @@ This installs the `epr` executable.
16
16
 
17
17
  ## Usage
18
18
 
19
- usage: epr [-hv] [-s state] [-t token] [-c user1,user2...] user/repo1 [user/repo2...]
19
+ usage: epr [-hv] [-e url] [-s state] [-t token] [-c user1,user2...] user/repo1 [user/repo2...]
20
20
  -c, --creator=USER1,USER2,... Export PRs created by given username(s); prepend `!' to exclude user
21
+ -e, --endpoint=URL Endpoint URL for 'enterprise', etc... repositories
21
22
  -h, --help Show this message
22
23
  -p, --provider=NAME Service provider: bitbucket, github, or gitlab; defaults to github
24
+ -s, --state=STATE Export items in the given state, defaults to open
23
25
  -t, --token=TOKEN API token
24
- -s, --state=STATE Export PRs in the given state, defaults to open
26
+ -x, --export=WHAT What to export: pr, issues, or all; defaults to all
25
27
  -v, --version epr version
26
- -x, --export=TYPE What to export: pr, issues, or all; defaults to all
27
28
 
28
29
  ### Config
29
30
 
@@ -34,7 +35,7 @@ These can all be set by one of the below methods or [via the command line](#usag
34
35
  The API token can be set by:
35
36
 
36
37
  * `EPR_TOKEN` environment variable
37
- * `epr.token` setting in `.gitconfig`
38
+ * `epr.token` setting in `.gitconfig` (add via `git config --add epr.token <your API token>`)
38
39
  * `github.oauth-token` setting in `.gitconfig`
39
40
 
40
41
  #### Default Service
@@ -61,6 +62,8 @@ Export all issues from a GitLab project:
61
62
 
62
63
  ## Service Notes
63
64
 
65
+ To connect to a custom/"Enterprise" installation of any of the supported services use the endpoint option (`-e`)
66
+
64
67
  ### Bitbucket
65
68
 
66
69
  You can use [app passwords](https://confluence.atlassian.com/bitbucket/app-passwords-828781300.html) for the API token.
@@ -70,8 +73,6 @@ Just provide your token HTTP Auth style using: `username:app_password`.
70
73
 
71
74
  Authentication can be done via a [personal access token](https://gitlab.com/profile/personal_access_tokens).
72
75
 
73
- Currently the API endpoint URL is hardcoded to `https://gitlab.com/api/v4`.
74
-
75
76
  Enterprise editions of GitLab have an [issue export feature](https://docs.gitlab.com/ee/user/project/issues/csv_export.html).
76
77
 
77
78
  ## Author
@@ -81,3 +82,7 @@ Skye Shaw [skye.shaw AT gmail]
81
82
  ## License
82
83
 
83
84
  Released under the MIT License: www.opensource.org/licenses/MIT
85
+
86
+ ---
87
+
88
+ Made by [ScreenStaring](http://screenstaring.com)
data/bin/epr CHANGED
@@ -9,7 +9,7 @@ require "github_api"
9
9
  require "gitlab"
10
10
  require "bitbucket_rest_api"
11
11
 
12
- VERSION = "0.2.0"
12
+ VERSION = "0.2.1"
13
13
  SERVICES = %w[github gitlab bitbucket]
14
14
  GIT_CONFIGS = %w[epr.token github.oauth-token]
15
15
 
@@ -51,7 +51,10 @@ def bitbucket(user, repo)
51
51
  # TODO: make sure no need to translate any states
52
52
  # https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/pullrequests
53
53
 
54
- $bitbucket ||= BitBucket.new(:basic_auth => $token)
54
+ options = { :basic_auth => $token }
55
+ options[:endpoint] = $endpoint if $endpoint
56
+
57
+ $bitbucket ||= BitBucket.new(options)
55
58
 
56
59
  rows = []
57
60
  no_user = "Anonymous"
@@ -129,7 +132,10 @@ def github(user, repo)
129
132
  rows = []
130
133
  method = $export == EXPORT_PRS ? :pull_requests : :issues
131
134
 
132
- $gh ||= Github.new(:oauth_token => $token, :auto_pagination => true)
135
+ options = { :oauth_token => $token, :auto_pagination => true }
136
+ options[:endpoint] = $endpoint if $endpoint
137
+
138
+ $gh ||= Github.new(options)
133
139
  $gh.public_send(method).list(:user => user, :repo => repo, :state => $filter).each_page do |page|
134
140
  next if page.size.zero? # Needed for auto_pagination
135
141
 
@@ -170,8 +176,7 @@ def gitlab(user, repo)
170
176
  # Do we care about this differing in output?
171
177
  state = $filter == "open" ? "opened" : $filter
172
178
 
173
- # TODO: custom endpoint
174
- $gitlab ||= Gitlab.client(:auth_token => $token, :endpoint => "https://gitlab.com/api/v4")
179
+ $gitlab ||= Gitlab.client(:auth_token => $token, :endpoint => $endpoint || "https://gitlab.com/api/v4")
175
180
  methods.each do |method|
176
181
  $gitlab.public_send(method, "#{user}/#{repo}", :state => state).auto_paginate do |item|
177
182
  next if skip_user?(item.author.username)
@@ -223,27 +228,28 @@ Hashie.logger = Logger.new(File::NULL) if defined?(Hashie)
223
228
  $exclude_users = []
224
229
  $include_users = []
225
230
  $export = "all"
231
+ $endpoint = nil
226
232
  $filter = "open"
227
233
  $provider = ENV["EPR_SERVICE"] || SERVICES[0]
228
234
  $token = lookup_token
229
235
 
230
236
  parser = OptionParser.new do |opts|
231
- opts.banner = "usage: #{File.basename($0)} [-hv] [-s state] [-t token] [-c user1,user2...] user/repo1 [user/repo2...]"
237
+ opts.banner = "usage: #{File.basename($0)} [-hv] [-e url] [-s state] [-t token] [-c user1,user2...] user/repo1 [user/repo2...]"
232
238
 
233
239
  opts.on "-c", "--creator=USER1,USER2,...", Array, "Export PRs created by given username(s); prepend `!' to exclude user" do |u|
234
240
  $exclude_users, $include_users = u.partition { |name| name.start_with?("!") }
235
241
  $exclude_users.map! { |name| name[1..-1] } # remove "!"
236
242
  end
237
243
 
244
+ opts.on "-e", "--endpoint=URL", "Endpoint URL for 'enterprise', etc... repositories" do |url|
245
+ $endpoint = url
246
+ end
247
+
238
248
  opts.on "-h", "--help", "Show this message" do
239
249
  puts opts
240
250
  exit
241
251
  end
242
252
 
243
- opts.on "-t", "--token=TOKEN", "API token" do |t|
244
- $token = t
245
- end
246
-
247
253
  opts.on "-p, --provider=NAME", SERVICES, "Service provider: bitbucket, github, or gitlab; defaults to github" do |name|
248
254
  $provider = name
249
255
  end
@@ -252,6 +258,10 @@ parser = OptionParser.new do |opts|
252
258
  $filter = f
253
259
  end
254
260
 
261
+ opts.on "-t", "--token=TOKEN", "API token" do |t|
262
+ $token = t
263
+ end
264
+
255
265
  opts.on "-x", "--export=WHAT", %w[pr issues all], "What to export: pr, issues, or all; defaults to all" do |x|
256
266
  $export = x
257
267
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: export-pull-requests
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Skye Shaw
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-21 00:00:00.000000000 Z
11
+ date: 2018-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: github_api
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  version: '0'
100
100
  requirements: []
101
101
  rubyforge_project:
102
- rubygems_version: 2.4.5.1
102
+ rubygems_version: 2.6.14
103
103
  signing_key:
104
104
  specification_version: 4
105
105
  summary: Export pull requests and issues to a CSV file.