ghuls-lib 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ghuls/lib.rb +47 -7
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67ca5effd388bccc1045323ba0a05507c566f682
|
4
|
+
data.tar.gz: b93f7737533f3ac78d65fa01502d55cee400f7b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0057082b97bed7d49c6c6d75a67c9bd351b30430d0b332f6a38f63de3dd7b8a1750a4ebaf3ad6b48ff11fc40271247180c7299cb18da752f14f67592e374f95
|
7
|
+
data.tar.gz: 0a138e32b0fdc2eff4486742bfab2acb45684cab1deeba9007ff74bff35b840e2e0eb14277f24a0835dbbb89dd00a786d58e7aaa298fa344bd9aaab61299fef1
|
data/lib/ghuls/lib.rb
CHANGED
@@ -45,6 +45,20 @@ module GHULS
|
|
45
45
|
true
|
46
46
|
end
|
47
47
|
|
48
|
+
# Gets the username and checks if it exists in the process.
|
49
|
+
# @param userid [Fixnum] The user ID.
|
50
|
+
# @param github [Octokit::Client] See #user_exists?
|
51
|
+
# @return [String] The username
|
52
|
+
# @return [Boolean] False if it does not exist.
|
53
|
+
def self.get_user_and_check(userid, github)
|
54
|
+
begin
|
55
|
+
username = github.user(userid)
|
56
|
+
rescue Octokit::NotFound
|
57
|
+
return false
|
58
|
+
end
|
59
|
+
username[:login]
|
60
|
+
end
|
61
|
+
|
48
62
|
# Returns the repos in the user's organizations that they have actually
|
49
63
|
# contributed to.
|
50
64
|
# @param username [String] See #user_exists?
|
@@ -72,9 +86,9 @@ module GHULS
|
|
72
86
|
true_repos
|
73
87
|
end
|
74
88
|
|
75
|
-
# Gets the langauges and their bytes for the
|
76
|
-
# @param username [String]
|
77
|
-
# @param github [
|
89
|
+
# Gets the langauges and their bytes for the user.
|
90
|
+
# @param username [String] See #user_exists?
|
91
|
+
# @param github [Octokit::Client] See #user_exists?
|
78
92
|
# @return [Hash] The languages and their bytes, as formatted as
|
79
93
|
# { :Ruby => 129890, :CoffeeScript => 5970 }
|
80
94
|
def self.get_user_langs(username, github)
|
@@ -95,6 +109,10 @@ module GHULS
|
|
95
109
|
langs
|
96
110
|
end
|
97
111
|
|
112
|
+
# Gets the languages and their bytes for the user's organizations.
|
113
|
+
# @param username [String] See #user_exists?
|
114
|
+
# @param github [Octokit::Client] See #user_exists?
|
115
|
+
# @return [Hash] See #get_user_langs
|
98
116
|
def self.get_org_langs(username, github)
|
99
117
|
org_repos = get_org_repos(username, github)
|
100
118
|
langs = {}
|
@@ -133,6 +151,10 @@ module GHULS
|
|
133
151
|
end
|
134
152
|
end
|
135
153
|
|
154
|
+
# Gets the percentages for each language in a hash.
|
155
|
+
# @param langs [Hash] The language hash obtained by the get_langs methods.
|
156
|
+
# @return [Hash] The language percentages formatted as
|
157
|
+
# { Ruby: 50%, CoffeeScript: 50% }
|
136
158
|
def self.get_language_percentages(langs)
|
137
159
|
total = 0
|
138
160
|
langs.each { |_, b| total += b }
|
@@ -144,6 +166,11 @@ module GHULS
|
|
144
166
|
lang_percents
|
145
167
|
end
|
146
168
|
|
169
|
+
# Performs the main analysis of the user's organizations.
|
170
|
+
# @param username [String] See #user_exists?
|
171
|
+
# @param github [Octokit::Client] See #user_exists?
|
172
|
+
# @return [Hash] See #get_language_percentages
|
173
|
+
# @return [Boolean] False if user_exists? returns false.
|
147
174
|
def self.analyze_orgs(username, github)
|
148
175
|
if user_exists?(username, github)
|
149
176
|
langs = get_org_langs(username, github)
|
@@ -154,6 +181,11 @@ module GHULS
|
|
154
181
|
end
|
155
182
|
end
|
156
183
|
|
184
|
+
# Performs the main analysis of the user.
|
185
|
+
# @param username [String] See #user_exists?
|
186
|
+
# @param github [Octokit::Client] See #user_exists?
|
187
|
+
# @return [Hash] See #analyze_orgs
|
188
|
+
# @return [Boolean] See #analyze_orgs
|
157
189
|
def self.analyze_user(username, github)
|
158
190
|
if user_exists?(username, github)
|
159
191
|
langs = get_user_langs(username, github)
|
@@ -165,14 +197,22 @@ module GHULS
|
|
165
197
|
end
|
166
198
|
|
167
199
|
using StringUtility
|
200
|
+
# Gets a random GitHub user that actually has data to analyze.
|
201
|
+
# Must always get a user that exists and has repositories, so it will
|
202
|
+
# go through a loop infinitely until it gets one. Uses the GitHub Search
|
203
|
+
# to find the maximum number of users, which may not be the best way to do
|
204
|
+
# it. However, none of the documented GitHub APIs show that we can get the
|
205
|
+
# total number of GitHub users.
|
206
|
+
# @param github [Octokit::Client] See #user_exists?
|
207
|
+
# @return [String] A random username.
|
168
208
|
def self.get_random_user(github)
|
169
209
|
source = open('https://github.com/search?utf8=%E2%9C%93&q=repos%3A%3E-1' \
|
170
210
|
'&type=Users&ref=searchresults').read
|
171
|
-
|
172
|
-
while
|
211
|
+
continue = false
|
212
|
+
while continue == false
|
173
213
|
userid = rand(source[/Showing (.*?) available users/, 1].to_i_separated)
|
174
|
-
user =
|
175
|
-
|
214
|
+
user = get_user_and_check(userid, github)
|
215
|
+
continue = true if user != false && !get_user_langs(user, github).empty?
|
176
216
|
end
|
177
217
|
user
|
178
218
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ghuls-lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eli Foster
|
@@ -69,3 +69,4 @@ signing_key:
|
|
69
69
|
specification_version: 4
|
70
70
|
summary: The library used for and by the GHULS applications.
|
71
71
|
test_files: []
|
72
|
+
has_rdoc:
|