ghuls 1.3.0 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 578a5b369b6037f20fe20b57efcc34c635f101c4
4
- data.tar.gz: 0946055d85925e4da130f344a612a003cd09749a
3
+ metadata.gz: 3f6d5c7d684db6106c93dd68df4b8dbfff31fb81
4
+ data.tar.gz: a9bdddbf1aefbe8f0073cb6fdc02935d3056096f
5
5
  SHA512:
6
- metadata.gz: 3a7cb2154f6bef5a6f5e63d4a0624697436efec516ffd47ca459ebc5c91d80f541a7cea8a86f72c355e66a00a2d4579b1f77759c981327847b94460088af23a8
7
- data.tar.gz: ba36ea02b0ba389d04415e77119ad7021bd8bb5c21cef43da64471454675b5c619f7ba72c0888e7b6b2cc695846be0dcfe4110e384e0083aac2bfd2b6d55cf31
6
+ metadata.gz: 53476ef791abc37e6fb268c027315ee647afd179efbe36027753d5062ec4b174abc8a335a4b8b09bfeb1bafcaf7fdfe5fb282e9e9ba7a8267878398219c3b4f8
7
+ data.tar.gz: 019bc62be666c3d4e22144812cb104e143053ca8c70877bc220589fb6e121ff89a0793f3888498b1171ce28907ba3732ea80e39e4d2624d9f98439de52206afa
File without changes
data/bin/ghuls CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
3
 
4
- path = File.expand_path('../../cli/lib', __FILE__)
4
+ path = File.expand_path('../lib', __FILE__)
5
5
  $LOAD_PATH.unshift(path)
6
6
 
7
- require 'ghuls'
7
+ require_relative '../lib/ghuls'
8
8
 
9
9
  cli = GHULS::CLI.new
10
10
  cli.run
@@ -2,7 +2,7 @@ require 'octokit'
2
2
  require 'base64'
3
3
  require 'rainbow'
4
4
  require 'progress_bar'
5
- require_relative '../../../utils/utilities'
5
+ require 'ghuls'
6
6
 
7
7
  module GHULS
8
8
  class CLI
@@ -17,6 +17,7 @@ module GHULS
17
17
  when '-t', '--token' then @opts[:token] = Utilities.get_next(arg, args)
18
18
  when '-g', '--get' then @opts[:get] = Utilities.get_next(arg, args)
19
19
  when '-d', '--debug' then @opts[:debug] = true
20
+ when '-r', '--random' then @opts[:get] = nil
20
21
  end
21
22
  end
22
23
  end
@@ -38,14 +39,15 @@ module GHULS
38
39
  }
39
40
 
40
41
  @usage = 'Usage: ghuls [-h] [-un] username [-pw] password [-t] token ' \
41
- '[-g] username'
42
+ '[-g] username [-r] [-d]'
42
43
  @help = "-h, --help Show helpful information.\n" \
43
44
  "-d, --debug Provide debug information.\n" \
44
45
  "-un, --user The username to log in as.\n" \
45
46
  "-pw, --pass The password for that username.\n" \
46
47
  '-t, --token The token to log in as. This will be preferred ' \
47
48
  "over username and password authentication.\n" \
48
- '-g, --get The username/organization to analyze.'
49
+ "-g, --get The username/organization to analyze.\n" \
50
+ "-r, --random Use a random user.\n"
49
51
 
50
52
  parse_options(args)
51
53
  @bar = ProgressBar.new(5) if @opts[:debug]
@@ -65,7 +67,6 @@ module GHULS
65
67
  # @return [Boolean] False if it did not fail, true if it did.
66
68
  def failed?
67
69
  false if @opts[:help]
68
-
69
70
  true if @opts[:get].nil?
70
71
  true if @opts[:token].nil? && @opts[:user].nil?
71
72
  true if @opts[:token].nil? && @opts[:pass].nil?
@@ -93,6 +94,7 @@ module GHULS
93
94
  puts @help if @opts[:help]
94
95
  exit if failed?
95
96
  increment
97
+ @opts[:get] = Utilities.get_random_user(@gh) if @opts[:get].nil?
96
98
  user_percents = Utilities.analyze_user(@opts[:get], @gh)
97
99
  increment
98
100
  org_percents = Utilities.analyze_orgs(@opts[:get], @gh)
data/lib/ghuls.rb ADDED
@@ -0,0 +1 @@
1
+ require_relative 'ghuls/cli'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghuls
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.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-10-31 00:00:00.000000000 Z
11
+ date: 2015-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ghuls-lib
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: progress_bar
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  description: Getting GitHub repository language data by user! It also has a web alternative
56
84
  at http://ghuls.herokuapp.com
57
85
  email: elifosterwy@gmail.com
@@ -60,11 +88,10 @@ executables:
60
88
  extensions: []
61
89
  extra_rdoc_files: []
62
90
  files:
91
+ - CHANGELOG.md
63
92
  - bin/ghuls
64
- - cli/CHANGELOG.md
65
- - cli/lib/ghuls.rb
66
- - cli/lib/ghuls/cli.rb
67
- - utils/utilities.rb
93
+ - lib/ghuls.rb
94
+ - lib/ghuls/cli.rb
68
95
  homepage: http://ghuls.herokuapp.com
69
96
  licenses: []
70
97
  metadata: {}
data/cli/lib/ghuls.rb DELETED
@@ -1,2 +0,0 @@
1
- require_relative '../../utils/utilities'
2
- require_relative 'ghuls/cli'
data/utils/utilities.rb DELETED
@@ -1,164 +0,0 @@
1
- require 'octokit'
2
- require 'string-utility'
3
-
4
- module Utilities
5
- # Gets the Octokit and colors for the program.
6
- # @param opts [Hash] The options to use. The ones that are used by this method
7
- # are: :token, :pass, and :user.
8
- # @return [Hash] A hash containing objects formatted as
9
- # { git: Octokit::Client, colors: JSON }
10
- def self.configure_stuff(opts = {})
11
- token = opts[:token]
12
- pass = opts[:pass]
13
- user = opts[:user]
14
- gh = Octokit::Client.new(login: user, password: pass) if token.nil?
15
- gh = Octokit::Client.new(access_token: token) unless token.nil?
16
- begin
17
- encoded = gh.contents('ozh/github-colors', path: 'colors.json')[:content]
18
- colors = JSON.parse(Base64.decode64(encoded))
19
- rescue Octokit::Unauthorized
20
- return false
21
- end
22
- { git: gh, colors: colors }
23
- end
24
-
25
- # Gets the next value in an array.
26
- # @param single [Any] The current value.
27
- # @param full [Array] The main array to parse.
28
- # @return [Any] The next value in the array.
29
- def self.get_next(single, full)
30
- full.at(full.index(single) + 1)
31
- end
32
-
33
- # Gets whether or not the user exists.
34
- # @param username [String] The user to check
35
- # @param github [Octokit::Client] The instance of Octokit to use.
36
- # @return [Boolean] True if it does, false if it doesn't.
37
- def self.user_exists?(username, github)
38
- begin
39
- github.user(username)
40
- rescue Octokit::NotFound
41
- return false
42
- end
43
- true
44
- end
45
-
46
- # Returns the repos in the user's organizations that they have actually
47
- # contributed to.
48
- # @param username [String] See #user_exists?
49
- # @param github [Octokit::Client] See #user_exists?
50
- # @return [Array] All the repository full names that the user has contributed
51
- # to.
52
- def self.get_org_repos(username, github)
53
- orgs = github.organizations(username)
54
- repos = []
55
- orgs.each do |o|
56
- repos += github.repositories(o[:login])
57
- end
58
- true_repos = []
59
- repos.each do |r|
60
- next if r[:fork]
61
- contributors = github.contributors(r[:full_name])
62
- contributors.each do |c|
63
- if c[:login] == username
64
- true_repos.push(r[:full_name])
65
- else
66
- next
67
- end
68
- end
69
- end
70
- true_repos
71
- end
72
-
73
- # Gets the langauges and their bytes for the :user.
74
- # @param username [String] The username to get info for.
75
- # @param github [OctoKit::Client] The instance of Octokit::Client.
76
- # @return [Hash] The languages and their bytes, as formatted as
77
- # { :Ruby => 129890, :CoffeeScript => 5970 }
78
- def self.get_user_langs(username, github)
79
- repos = github.repositories(username)
80
- langs = {}
81
- repos.each do |r|
82
- next if r[:fork]
83
- repo_langs = github.languages(r[:full_name])
84
- repo_langs.each do |l, b|
85
- if langs[l].nil?
86
- langs[l] = b
87
- else
88
- existing = langs[l]
89
- langs[l] = existing + b
90
- end
91
- end
92
- end
93
- langs
94
- end
95
-
96
- def self.get_org_langs(username, github)
97
- org_repos = get_org_repos(username, github)
98
- langs = {}
99
- org_repos.each do |r|
100
- repo_langs = github.languages(r)
101
- repo_langs.each do |l, b|
102
- if langs[l].nil?
103
- langs[l] = b
104
- else
105
- existing = langs[l]
106
- langs[l] = existing + b
107
- end
108
- end
109
- end
110
- langs
111
- end
112
-
113
- # Gets the percentage for the given numbers.
114
- # @param part [Fixnum] The partial value.
115
- # @param whole [Fixnum] The whole value.
116
- # @return [Fixnum] The percentage that part is of whole.
117
- def self.calculate_percent(part, whole)
118
- (part / whole) * 100
119
- end
120
-
121
- # Gets the defined color for the language.
122
- # @param lang [String] The language name.
123
- # @param colors [Hash] The hash of colors and languages.
124
- # @return [String] The 6 digit hexidecimal color.
125
- # @return [Nil] If there is no defined color for the language.
126
- def self.get_color_for_language(lang, colors)
127
- if colors[lang]['color'].nil?
128
- return StringUtility.random_color_six
129
- else
130
- return colors[lang]['color']
131
- end
132
- end
133
-
134
- def self.get_language_percentages(langs)
135
- total = 0
136
- langs.each { |_, b| total += b }
137
- lang_percents = {}
138
- langs.each do |l, b|
139
- percent = Utilities.calculate_percent(b, total.to_f)
140
- lang_percents[l] = percent.round(2)
141
- end
142
- lang_percents
143
- end
144
-
145
- def self.analyze_orgs(username, github)
146
- if user_exists?(username, github)
147
- langs = get_org_langs(username, github)
148
- return false if langs.empty?
149
- get_language_percentages(langs)
150
- else
151
- false
152
- end
153
- end
154
-
155
- def self.analyze_user(username, github)
156
- if user_exists?(username, github)
157
- langs = get_user_langs(username, github)
158
- return false if langs.empty?
159
- get_language_percentages(langs)
160
- else
161
- false
162
- end
163
- end
164
- end