github_issue_exporter 0.2.0 → 0.2.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/README.md +6 -0
- data/bin/export-github-issues +8 -2
- data/lib/issue_exporter/export.rb +4 -3
- data/lib/issue_exporter/github.rb +17 -4
- data/lib/issue_exporter/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6b637b45fea0775f61dbec3788145b2a8fc345e
|
4
|
+
data.tar.gz: 67e5feafb6fb20a48d73b1ebeea3e6f00c11f1ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 540fa1dc0bf08ead897b173d2430da55094498bc147880f39f7ac393e2a6fdcee2be4d53cd7e4cba0aec0c7c3b65078e105cae43eb7524fb6630139bd66f3cde
|
7
|
+
data.tar.gz: 079061fdd23c1b48d9a3756481efc76f3b9f6852c823192e5f3e6c3ae8d7bbd346dd78db017b60db67a83dafd7c1a34cb1c8148f118214fc5e3976e1ed23fea6
|
data/README.md
CHANGED
@@ -31,6 +31,8 @@ The Exporter has a couple of options.
|
|
31
31
|
|
32
32
|
`--output` Set the directory to store the issues in. By default it is the current directory.
|
33
33
|
|
34
|
+
`--closed` By default, only Open issues are exported. Adding this flag will include Closed ones as well.
|
35
|
+
|
34
36
|
The issues will be exported into either a single `issues.json` file or multiple `issue-[NUMBER].json` files.
|
35
37
|
|
36
38
|
### Example
|
@@ -38,6 +40,8 @@ The issues will be exported into either a single `issues.json` file or multiple
|
|
38
40
|
```
|
39
41
|
export-github-issues tallwave github_issue_exporter [TOKEN]
|
40
42
|
|
43
|
+
export-github-issues --closed tallwave github_issue_exporter [TOKEN]
|
44
|
+
|
41
45
|
export-github-issues --multiple-files --output ~/issues tallwave github_issue_exporter [TOKEN]
|
42
46
|
```
|
43
47
|
|
@@ -61,6 +65,8 @@ import-github-issues --directory ~/issues tallwave github_issue_exporter [TOKEN]
|
|
61
65
|
## Roadmap
|
62
66
|
|
63
67
|
* Better error handling.
|
68
|
+
* Properly import closed issues.
|
69
|
+
* Create a GitHub 'application' so that the user doesn't need the auth token.
|
64
70
|
|
65
71
|
## Contributing
|
66
72
|
|
data/bin/export-github-issues
CHANGED
@@ -28,6 +28,8 @@ Example: #{$PROGRAM_NAME} swilliams issue_exporter abcdef
|
|
28
28
|
--multiple-files Use a separate file for each issue
|
29
29
|
(default: one single file)
|
30
30
|
|
31
|
+
--closed include closed issues (default: false)
|
32
|
+
|
31
33
|
-h, --help display this help and exit
|
32
34
|
--version display the version
|
33
35
|
|
@@ -39,6 +41,7 @@ HERE
|
|
39
41
|
super
|
40
42
|
@output = nil
|
41
43
|
@multiple_files = false
|
44
|
+
@include_closed_issues = false
|
42
45
|
end
|
43
46
|
|
44
47
|
def correct_number_of_args(arg_count)
|
@@ -47,7 +50,8 @@ HERE
|
|
47
50
|
|
48
51
|
def define_options(opts)
|
49
52
|
opts.on("-o", "--output ARG") { |arg| @output = arg }
|
50
|
-
opts.on("--multiple-files")
|
53
|
+
opts.on("--multiple-files") { @multiple_files = true }
|
54
|
+
opts.on("--closed") { @include_closed_issues = true }
|
51
55
|
end
|
52
56
|
|
53
57
|
def process_input(arg, index)
|
@@ -62,7 +66,9 @@ HERE
|
|
62
66
|
end
|
63
67
|
|
64
68
|
def perform_action
|
65
|
-
options = { path: @output,
|
69
|
+
options = { path: @output,
|
70
|
+
multiple_files: @multiple_files,
|
71
|
+
include_closed_issues: @include_closed_issues }
|
66
72
|
exporter = IssueExporting::Exporter.new(@owner, @repo, @token, options)
|
67
73
|
exporter.export
|
68
74
|
end
|
@@ -12,12 +12,14 @@ module IssueExporting
|
|
12
12
|
@owner = owner
|
13
13
|
@repo = repo
|
14
14
|
@token = token
|
15
|
-
@
|
15
|
+
@options = options
|
16
|
+
outputter_options = options.select { |k,v| [:path, :multiple_files].include? k }
|
17
|
+
@outputter = FileOutputter.new outputter_options
|
16
18
|
end
|
17
19
|
|
18
20
|
def export
|
19
21
|
error_handler = ErrorHandler.new
|
20
|
-
url = IssueExporting.make_uri @owner, @repo, @token
|
22
|
+
url = IssueExporting.make_uri @owner, @repo, @token, @options
|
21
23
|
response = Net::HTTP::get url
|
22
24
|
if err = error_handler.error_message(response)
|
23
25
|
error_handler.handle_error err
|
@@ -25,7 +27,6 @@ module IssueExporting
|
|
25
27
|
outputter.write response
|
26
28
|
end
|
27
29
|
end
|
28
|
-
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
@@ -1,14 +1,27 @@
|
|
1
|
+
require "open-uri"
|
2
|
+
|
1
3
|
module IssueExporting
|
2
4
|
def self.api_url
|
3
5
|
"https://api.github.com/repos/%s/%s/issues?access_token=%s"
|
4
6
|
end
|
5
7
|
|
6
|
-
def self.make_url(owner, repo, token)
|
8
|
+
def self.make_url(owner, repo, token, options = {})
|
7
9
|
url_format = IssueExporting.api_url
|
8
|
-
url_format % [owner, repo, token]
|
10
|
+
root_url = url_format % [owner, repo, token]
|
11
|
+
return root_url unless options[:include_closed_issues] == true
|
12
|
+
root_url + "&state=all"
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.make_uri(owner, repo, token, options = {})
|
16
|
+
URI.parse IssueExporting.make_url(owner, repo, token, options)
|
9
17
|
end
|
10
18
|
|
11
|
-
def self.
|
12
|
-
|
19
|
+
def self.turn_options_into_querystring(options)
|
20
|
+
querystring = ''
|
21
|
+
options.each do |k, v|
|
22
|
+
escaped_k, escaped_v = URI::encode(k), URI::encode(v)
|
23
|
+
querystring += "#{escaped_k}=#{escaped_v}&"
|
24
|
+
end
|
25
|
+
querystring.chop
|
13
26
|
end
|
14
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github_issue_exporter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |2
|
14
14
|
Download Issues from a GitHub repository.
|