ghuls-lib 1.2.1 → 2.0.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ghuls/lib.rb +101 -5
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 610530e600dae4056abf96b5a94c286df2852d0f
4
- data.tar.gz: 63ec7b6e63018a392d4323594434f8366df62b14
3
+ metadata.gz: acb0b81d66ea6a9ef86fc09969c95c82a66d9f5a
4
+ data.tar.gz: 1a392a026bc1b4312d47126fd998a2e44c01d23a
5
5
  SHA512:
6
- metadata.gz: 6f416f5e54a83b37d113a7aa470727412043e012b9c238de28d62759347c65dd9dec0e9ad3499f39b538736fa0b65df74b0ea429dc8b0d6ad296667583582b8d
7
- data.tar.gz: 59fd44b2b7007031a2d2e5c8585e1b243441a4ba43231711b0f9ce79d814ef372dcf2d0c2afbe76180b487609190664b8ed47db81b6c35513c7c80d154855616
6
+ metadata.gz: 6eb932ac186900293782a7b1b1a4be66f7afde98fdf1d51d1b4f7b3a403403b73733d7fe33e9bd4094add6db3c0f3b19e14c1f95bf924218ade763ebf0d93280
7
+ data.tar.gz: 448be8cb8b3019b5b6c6cce71f47b7142080768fc5ad1af923fca121a86262b023e93ea748b0e31ff568fc76fbb34a5250a65a4898dc9aed59c6380fcf577195
data/lib/ghuls/lib.rb CHANGED
@@ -79,6 +79,105 @@ module GHULS
79
79
  true_repos
80
80
  end
81
81
 
82
+ # Gets the user's repositories organized by whether they are forks,
83
+ # private, public, or mirrors.
84
+ # @param username [String] See #get_user_and_check
85
+ # @param github [Octokit::Client] See #get_user_and_check
86
+ # @return [Hash] All the repositories under the user's account.
87
+ def self.get_user_repos(username, github)
88
+ repos = github.repositories(username)
89
+ forks = []
90
+ publics = []
91
+ mirrors = []
92
+ privates = []
93
+ repos.each do |r|
94
+ forks.push(r[:full_name]) if r[:fork]
95
+
96
+ if r[:private]
97
+ privates.push(r[:full_name])
98
+ else
99
+ publics.push(r[:full_name])
100
+ end
101
+
102
+ mirrors.push(r[:full_name]) unless r[:mirror_url].nil?
103
+ end
104
+
105
+ {
106
+ public: publics,
107
+ forks: forks,
108
+ mirrors: mirrors,
109
+ privates: privates
110
+ }
111
+ end
112
+
113
+ # Gets the number of forkers, stargazers, and watchers.
114
+ # @param repository [String] The full repository name.
115
+ # @param github [Octkit::Client] See #get_user_and_check
116
+ # @return [Hash] The forks, stars, and watcher count.
117
+ def self.get_forks_stars_watchers(repository, github)
118
+ stargazers = github.stargazers(repository).length
119
+ forks = github.forks(repository).length
120
+ watchers = github.subscribers(repository).length
121
+
122
+ {
123
+ forks: forks,
124
+ stars: stargazers,
125
+ watchers: watchers
126
+ }
127
+ end
128
+
129
+ # Gets the number of followers and users followed by the user.
130
+ # @param username [String] See #get_user_and_check
131
+ # @param github [Octokit::Client] See #get_user_and_check
132
+ # @return [Hash] The number of following and followed users.
133
+ def self.get_followers_following(username, github)
134
+ following = github.following(username)
135
+ followers = github.followers(username)
136
+
137
+ {
138
+ following: following.length,
139
+ followers: followers.length
140
+ }
141
+ end
142
+
143
+ # Gets the number of closed/open issues and
144
+ # closed (without merge)/open/merged pull requests for a repository
145
+ # @param repository [String] See #get_forks_stars_watchers
146
+ # @param github [Octokit::Client] See #get_user_and_check
147
+ # @return [Hash] The number of issues and pulls.
148
+ def self.get_issues_pulls(repository, github)
149
+ issues = github.list_issues(repository, state: 'all')
150
+ pulls = github.pull_requests(repository, state: 'all')
151
+ issues_open = 0
152
+ issues_closed = 0
153
+ pulls_open = 0
154
+ pulls_closed = 0
155
+ pulls_merged = 0
156
+ issues.each do |i|
157
+ issues_open += 1 if i['state'] == 'open'
158
+ issues_closed += 1 if i['state'] == 'closed'
159
+ end
160
+ pulls.each do |p|
161
+ pulls_open += 1 if p['state'] == 'open'
162
+ if p['state'] == 'closed'
163
+ pulls_merged += 1 unless p['merged_at'].nil?
164
+ pulls_closed += 1 if p['merged_at'].nil?
165
+ end
166
+ end
167
+
168
+ {
169
+ issues: {
170
+ closed: issues_closed,
171
+ open: issues_open
172
+ },
173
+ pulls: {
174
+ closed: pulls_closed,
175
+ open: pulls_open,
176
+ merged: pulls_merged
177
+ }
178
+ }
179
+ end
180
+
82
181
  # Gets the langauges and their bytes for the user.
83
182
  # @param username [String] See #get_user_and_check
84
183
  # @param github [Octokit::Client] See #get_user_and_check
@@ -94,8 +193,7 @@ module GHULS
94
193
  if langs[l].nil?
95
194
  langs[l] = b
96
195
  else
97
- existing = langs[l]
98
- langs[l] = existing + b
196
+ langs[l] += b
99
197
  end
100
198
  end
101
199
  end
@@ -162,12 +260,11 @@ module GHULS
162
260
  # Performs the main analysis of the user's organizations.
163
261
  # @param username [String] See #get_user_and_check
164
262
  # @param github [Octokit::Client] See #get_user_and_check
165
- # @return [Hash] See #get_language_percentages
263
+ # @return [Hash] See #get_org_langs
166
264
  # @return [Nil] If the user does not have any languages.
167
265
  def self.analyze_orgs(username, github)
168
266
  langs = get_org_langs(username, github)
169
267
  return nil if langs.empty?
170
- get_language_percentages(langs)
171
268
  end
172
269
 
173
270
  # Performs the main analysis of the user.
@@ -178,7 +275,6 @@ module GHULS
178
275
  def self.analyze_user(username, github)
179
276
  langs = get_user_langs(username, github)
180
277
  return nil if langs.empty?
181
- get_language_percentages(langs)
182
278
  end
183
279
 
184
280
  using StringUtility
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghuls-lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eli Foster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-07 00:00:00.000000000 Z
11
+ date: 2015-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit