fue 0.1.2 → 0.2.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 +5 -5
- data/CHANGELOG.md +3 -1
- data/README.md +4 -2
- data/bin/fue +9 -2
- data/lib/fue/finder.rb +27 -9
- data/lib/fue/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 61e751b27876661073781594e4e2453f29775ece
|
4
|
+
data.tar.gz: 2072ed4777de7041e92388e47b370a562743c10c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bb5e6dbe47b597282085d695d4b1da2a434f200425661ada1088d1dfac7e79899c04f02360931e1df08b14617e3ee98deb78626942bf6f315dcf2870966df95
|
7
|
+
data.tar.gz: 2e9a9fc434871489eb5d2ae86dfe9f2b8e42c91d52e1e9c278568001ab5ae9150289ca6927f301d656670b413ead461a35ac331168cb14e9a2088ded9aee520c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
### 0.
|
1
|
+
### 0.2.0 (2018/8/22)
|
2
2
|
|
3
|
+
* [#6](https://github.com/dblock/fue/issues/6): Configure max depth and breadth separately - [@dblock](https://github.com/dblock).
|
4
|
+
* [#5](https://github.com/dblock/fue/issues/5): Iterate over more than 100 repositories - [@dblock](https://github.com/dblock).
|
3
5
|
* [#5](https://github.com/dblock/fue/issues/5): Fix error message and clarify max depth - [@dblock](https://github.com/dblock).
|
4
6
|
|
5
7
|
### 0.1.1 (2018/8/14)
|
data/README.md
CHANGED
@@ -6,6 +6,8 @@ Fue
|
|
6
6
|
|
7
7
|
Find an e-mail address of a Github user from their commit log.
|
8
8
|
|
9
|
+
Fue is short for "Finding Unicorn Engineers".
|
10
|
+
|
9
11
|

|
10
12
|
|
11
13
|
## Usage
|
@@ -31,10 +33,10 @@ Chris Wanstrath <chris@github.com>
|
|
31
33
|
|
32
34
|
#### Specify More Depth
|
33
35
|
|
34
|
-
By default the code looks at the last 10 repos. You can
|
36
|
+
By default the code looks at 1 commit from the last 10 repos. You can look at more repositories (breadth) and more commits (depth). The maximum value for depth is 100, enforced by Github. Fue will iterate over a number of repositories larger than 100.
|
35
37
|
|
36
38
|
```
|
37
|
-
GITHUB_ACCESS_TOKEN=token fue find --
|
39
|
+
GITHUB_ACCESS_TOKEN=token fue find --breadth=100 --depth=5 defunkt
|
38
40
|
|
39
41
|
Chris Wanstrath <chris@ozmm.org>
|
40
42
|
Chris Wanstrath <chris@github.com>
|
data/bin/fue
CHANGED
@@ -25,10 +25,17 @@ class App
|
|
25
25
|
desc "Find a Github user's e-mail address."
|
26
26
|
arg 'username'
|
27
27
|
command :find do |c|
|
28
|
-
c.flag %i[d depth], desc: 'Maximum search depth.', default_value:
|
28
|
+
c.flag %i[d depth], desc: 'Maximum search depth in each repository.', default_value: 1
|
29
|
+
c.flag %i[b breadth], desc: 'Maximum number of repositories to search.', default_value: 10
|
29
30
|
c.action do |global_options, options, args|
|
30
31
|
username = args.first
|
31
|
-
|
32
|
+
options[:depth] = options[:depth].to_i
|
33
|
+
options[:breadth] = options[:breadth].to_i
|
34
|
+
if global_options[:verbose]
|
35
|
+
puts "Searching for e-mail address for '#{username}' " \
|
36
|
+
"in the first #{options[:depth].to_i > 1 ? "#{options[:depth]} commits" : 'commit'} " \
|
37
|
+
"of #{options[:breadth]} most recent repositor#{options[:breadth] == 1 ? 'y' : 'ies'} ..."
|
38
|
+
end
|
32
39
|
puts $fue.emails(options.merge(username: username))
|
33
40
|
exit_now! nil, 0
|
34
41
|
end
|
data/lib/fue/finder.rb
CHANGED
@@ -19,15 +19,16 @@ module Fue
|
|
19
19
|
|
20
20
|
def emails(options = {})
|
21
21
|
query = <<-GRAPHQL
|
22
|
-
query($login: String!, $author_id: ID!, $depth: Int
|
22
|
+
query($login: String!, $author_id: ID!, $depth: Int!, $breadth: Int!, $breadthCursor: String) {
|
23
23
|
user(login: $login) {
|
24
|
-
repositories(last: $
|
24
|
+
repositories(last: $breadth, after: $breadthCursor, isFork:false, privacy: PUBLIC) {
|
25
25
|
edges {
|
26
|
+
cursor
|
26
27
|
node {
|
27
28
|
defaultBranchRef {
|
28
29
|
target {
|
29
30
|
... on Commit {
|
30
|
-
history(first:
|
31
|
+
history(first: $depth, author: { id: $author_id }) {
|
31
32
|
nodes {
|
32
33
|
author {
|
33
34
|
email
|
@@ -45,18 +46,35 @@ module Fue
|
|
45
46
|
}
|
46
47
|
GRAPHQL
|
47
48
|
|
49
|
+
max_breadth = options[:breadth] || 10
|
50
|
+
|
48
51
|
query_options = {
|
49
52
|
login: options[:username],
|
50
53
|
author_id: author_id(options[:username]),
|
51
|
-
depth:
|
54
|
+
depth: options[:depth] || 1
|
52
55
|
}
|
53
56
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
57
|
+
emails = Set.new
|
58
|
+
|
59
|
+
loop do
|
60
|
+
query_options[:breadth] = [max_breadth, 100].min
|
61
|
+
response = graphql_client.query(query, query_options)
|
62
|
+
edges = response.data.user.repositories.edges if response
|
63
|
+
if edges
|
64
|
+
edges.each do |edge|
|
65
|
+
query_options[:breadthCursor] = edge.cursor
|
66
|
+
branch_ref = edge.node.default_branch_ref
|
67
|
+
next unless branch_ref
|
68
|
+
branch_ref.target.history.nodes.each do |node|
|
69
|
+
emails << "#{node.author.name} <#{node.author.email}>"
|
70
|
+
end
|
71
|
+
end
|
58
72
|
end
|
59
|
-
|
73
|
+
max_breadth -= 100
|
74
|
+
break if max_breadth <= 0
|
75
|
+
end
|
76
|
+
|
77
|
+
emails.to_a
|
60
78
|
end
|
61
79
|
|
62
80
|
private
|
data/lib/fue/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Doubrovkine
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-08-
|
11
|
+
date: 2018-08-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gli
|
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
73
|
version: 1.3.6
|
74
74
|
requirements: []
|
75
75
|
rubyforge_project:
|
76
|
-
rubygems_version: 2.
|
76
|
+
rubygems_version: 2.6.12
|
77
77
|
signing_key:
|
78
78
|
specification_version: 4
|
79
79
|
summary: Find an e-mail address of a Github user.
|