userl 0.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.
- data/bin/userl +4 -0
- data/lib/userl.rb +69 -0
- metadata +47 -0
data/bin/userl
ADDED
data/lib/userl.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'terminal-table'
|
4
|
+
|
5
|
+
# The main userl driver
|
6
|
+
class Userl
|
7
|
+
|
8
|
+
# Get the most used languages of a GitHub user
|
9
|
+
#
|
10
|
+
# Example:
|
11
|
+
# >> Userl.start("marcosero")
|
12
|
+
# => repos and languages infos
|
13
|
+
#
|
14
|
+
# Arguments:
|
15
|
+
# language: (String)
|
16
|
+
def self.start(user)
|
17
|
+
all_languages = Hash.new
|
18
|
+
starred_repos = 0
|
19
|
+
forked_repos = 0
|
20
|
+
|
21
|
+
done = false
|
22
|
+
t = Thread.new {
|
23
|
+
print "Analyzing #{user}'s repos"
|
24
|
+
while (!done) do
|
25
|
+
print '.'
|
26
|
+
sleep 0.5
|
27
|
+
end
|
28
|
+
}
|
29
|
+
t.run
|
30
|
+
|
31
|
+
# Get all repos
|
32
|
+
# GET /repos/:owner/repos
|
33
|
+
repos_string = URI.parse("https://api.github.com/users/#{user}/repos").read
|
34
|
+
repos = JSON.parse(repos_string)
|
35
|
+
|
36
|
+
repos_rows = []
|
37
|
+
|
38
|
+
repos.each do |repository|
|
39
|
+
starred_repos += repository["watchers"]
|
40
|
+
forked_repos += repository["forks"]
|
41
|
+
repos_rows << [repository["name"], repository["watchers"], repository["forks"], repository["language"]]
|
42
|
+
|
43
|
+
# Detect Languages
|
44
|
+
# GET /repos/:owner/:repo/languages
|
45
|
+
languages_string = URI.parse("https://api.github.com/repos/#{user}/#{repository['name']}/languages").read
|
46
|
+
repo_languages = JSON.parse(languages_string)
|
47
|
+
all_languages = all_languages.merge(repo_languages){|key, oldval, newval| newval + oldval}
|
48
|
+
end
|
49
|
+
|
50
|
+
# prepare repos table
|
51
|
+
repos_table = Terminal::Table.new :title => "#{user}'s repositories", :headings => ['Name', 'Stars', 'Forks', 'language'], :rows => repos_rows, :style => {:width => 70} do |t|
|
52
|
+
t << :separator
|
53
|
+
t.add_row ['', starred_repos, forked_repos]
|
54
|
+
end
|
55
|
+
|
56
|
+
# prepare languages table
|
57
|
+
languages_rows = []
|
58
|
+
all_languages.each do |key, value|
|
59
|
+
languages_rows << [key, value]
|
60
|
+
end
|
61
|
+
languages_rows = languages_rows.sort_by {|k,v| -v}
|
62
|
+
languages_table = Terminal::Table.new :title => "#{user}'s languages", :headings => ['Language', 'Bytes'], :rows => languages_rows, :style => {:width => 70}
|
63
|
+
|
64
|
+
done = true
|
65
|
+
puts ''
|
66
|
+
puts repos_table
|
67
|
+
puts languages_table
|
68
|
+
end
|
69
|
+
end
|
metadata
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: userl
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Marco Sero
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-10-01 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: A CLI to get the most used languages of a GitHub user
|
15
|
+
email: marco@marcosero.com
|
16
|
+
executables:
|
17
|
+
- userl
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- lib/userl.rb
|
22
|
+
- bin/userl
|
23
|
+
homepage: https://github.com/MarcoSero/userl
|
24
|
+
licenses: []
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
requirements: []
|
42
|
+
rubyforge_project:
|
43
|
+
rubygems_version: 1.8.24
|
44
|
+
signing_key:
|
45
|
+
specification_version: 3
|
46
|
+
summary: A CLI to get the most used languages of a GitHub user
|
47
|
+
test_files: []
|