reponaut 1.2.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/reponaut +19 -1
- data/features/count.feature +17 -25
- data/features/help.feature +36 -21
- data/features/list.feature +210 -8
- data/features/step_definitions/github_steps.rb +5 -0
- data/lib/reponaut.rb +14 -1
- data/lib/reponaut/command.rb +37 -0
- data/lib/reponaut/commands/count.rb +41 -0
- data/lib/reponaut/commands/list.rb +40 -0
- data/lib/reponaut/ext/ENV.rb +9 -0
- data/lib/reponaut/ext/mercenary.rb +16 -0
- data/lib/reponaut/github.rb +37 -7
- data/lib/reponaut/presenter.rb +30 -0
- data/lib/reponaut/sorter.rb +29 -0
- data/lib/reponaut/version.rb +1 -1
- data/reponaut.gemspec +9 -3
- data/spec/fixtures/rate_limiting.json +4 -0
- data/spec/fixtures/repos/mdippery/Smyck-Color-Scheme.json +266 -0
- data/spec/fixtures/repos/mdippery/dnsimple-python.json +266 -0
- data/spec/fixtures/repos/mdippery/nginx.vim.json +266 -0
- data/spec/fixtures/repos/mdippery/staticgenerator.json +266 -0
- data/spec/reponaut/github_spec.rb +9 -0
- data/spec/reponaut/presenter_spec.rb +59 -0
- data/spec/reponaut/sorter_spec.rb +64 -0
- metadata +41 -12
- data/lib/reponaut/application.rb +0 -99
@@ -5,3 +5,8 @@ end
|
|
5
5
|
Given /^the GitHub service returns 404 for the user "([^"]*)"$/ do |username|
|
6
6
|
set_environment_variable 'REPONAUT_ENV', 'cucumber'
|
7
7
|
end
|
8
|
+
|
9
|
+
Given /^the GitHub service is rate limiting requests for the user "([^"]*)"$/ do |username|
|
10
|
+
set_environment_variable 'REPONAUT_ENV', 'cucumber'
|
11
|
+
set_environment_variable 'REPONAUT_RATE_LIMIT', 'on'
|
12
|
+
end
|
data/lib/reponaut.rb
CHANGED
@@ -1,4 +1,17 @@
|
|
1
|
-
|
1
|
+
def require_all(path)
|
2
|
+
glob = File.join(File.dirname(__FILE__), path, '*.rb')
|
3
|
+
Dir[glob].each do |f|
|
4
|
+
require f
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'reponaut/ext/ENV'
|
9
|
+
|
10
|
+
require 'reponaut/command'
|
2
11
|
require 'reponaut/github'
|
12
|
+
require 'reponaut/presenter'
|
13
|
+
require 'reponaut/sorter'
|
3
14
|
require 'reponaut/statistics'
|
4
15
|
require 'reponaut/version'
|
16
|
+
|
17
|
+
require_all 'reponaut/commands'
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Reponaut
|
2
|
+
module Application
|
3
|
+
class Command
|
4
|
+
class << self
|
5
|
+
def subclasses
|
6
|
+
@subclasses ||= []
|
7
|
+
end
|
8
|
+
|
9
|
+
def inherited(base)
|
10
|
+
subclasses << base
|
11
|
+
super
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_reader :username, :client, :repos
|
16
|
+
|
17
|
+
def initialize(prog); end
|
18
|
+
|
19
|
+
def process(options, args)
|
20
|
+
raise ArgumentError.new('You must specify a username') if args.empty?
|
21
|
+
@username = args.first
|
22
|
+
@client = Reponaut::GitHub::Client.new(username)
|
23
|
+
@repos = client.repos.reject { |r| r.language.nil? }
|
24
|
+
@repos = @repos.find_all { |r| r.source? } if options['ignore_forks']
|
25
|
+
rescue Reponaut::GitHub::NoSuchUserError
|
26
|
+
quit 4, "No such user: #{username}"
|
27
|
+
rescue Reponaut::GitHub::RateLimitExceededError
|
28
|
+
quit 5, 'GitHub rate limit exceeded. Try your request again later.'
|
29
|
+
end
|
30
|
+
|
31
|
+
def quit(code, msg)
|
32
|
+
$stderr.puts msg
|
33
|
+
exit code
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'reponaut/ext/hash'
|
2
|
+
|
3
|
+
module Reponaut
|
4
|
+
module Application
|
5
|
+
class Count < Command
|
6
|
+
def initialize(prog)
|
7
|
+
prog.command(:count) do |c|
|
8
|
+
c.syntax 'count [options] <username>'
|
9
|
+
c.description "Shows a breakdown of a user's total number of repos"
|
10
|
+
c.option 'ignore_forks', '-f', '--ignore-forks', 'Ignore forks'
|
11
|
+
c.option 'sort_numerically', '-n', 'Sort by number of repos instead of alphabetically'
|
12
|
+
|
13
|
+
c.action do |args, options|
|
14
|
+
process(options, args)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def process(options, args)
|
20
|
+
super
|
21
|
+
|
22
|
+
quit 3, "#{username} has no repositories" if repos.empty?
|
23
|
+
|
24
|
+
stats = Reponaut::StatisticsCalculator.new(repos)
|
25
|
+
counts = sort_counts(stats.language_counts.pairs, !!options['sort_numerically'])
|
26
|
+
longest_label = counts.map { |e| e[0].length }.max
|
27
|
+
longest_count = counts.map { |e| e[1].to_s.length }.max
|
28
|
+
counts.each do |e|
|
29
|
+
printf "%-*s %*d\n", longest_label, e[0], longest_count, e[1]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def sort_counts(pairs, sort_numerically)
|
36
|
+
sorter = sort_numerically ? NumericalSorter : LexicographicalSorter
|
37
|
+
pairs.map { |p| sorter.new(p) }.sort.map { |s| [s.name, s.count] }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Reponaut
|
2
|
+
module Application
|
3
|
+
class List < Command
|
4
|
+
def initialize(prog)
|
5
|
+
prog.command(:list) do |c|
|
6
|
+
c.alias :ls
|
7
|
+
c.syntax 'list [options] <username> [language]'
|
8
|
+
c.description "List a user's repos"
|
9
|
+
c.option 'ignore_forks', '-f', 'Ignore forks'
|
10
|
+
c.option 'show_description', '-d', 'Show repo description'
|
11
|
+
|
12
|
+
c.action do |args, options|
|
13
|
+
process(options, args)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def process(options, args)
|
19
|
+
super
|
20
|
+
|
21
|
+
language = args[1]
|
22
|
+
|
23
|
+
filtered_repos = repos
|
24
|
+
filtered_repos = filtered_repos.select { |r| r.language.downcase == language.downcase } if language
|
25
|
+
quit 4, "#{username} has no repositories written in #{language}" if filtered_repos.empty?
|
26
|
+
|
27
|
+
formatter = formatter_class(options).new
|
28
|
+
filtered_repos.sort.each do |r|
|
29
|
+
puts formatter.format(r)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def formatter_class(options)
|
36
|
+
options['show_description'] ? LongPresenter : SimplePresenter
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Mercenary
|
2
|
+
class Command
|
3
|
+
def logger(level = nil)
|
4
|
+
unless @logger
|
5
|
+
@logger = Logger.new(STDERR)
|
6
|
+
@logger.level = level || Logger::INFO
|
7
|
+
@logger.formatter = proc do |severity, datetime, progname, msg|
|
8
|
+
"#{msg}\n"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
@logger.level = level unless level.nil?
|
13
|
+
@logger
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/reponaut/github.rb
CHANGED
@@ -5,8 +5,6 @@ require 'reponaut/ext/bool'
|
|
5
5
|
|
6
6
|
module Reponaut
|
7
7
|
module GitHub
|
8
|
-
class NoSuchUserError < StandardError; end
|
9
|
-
|
10
8
|
class Client
|
11
9
|
include HTTParty
|
12
10
|
|
@@ -26,21 +24,33 @@ module Reponaut
|
|
26
24
|
username
|
27
25
|
end
|
28
26
|
|
27
|
+
def method_missing(symbol, *args)
|
28
|
+
if self.class.respond_to?(symbol)
|
29
|
+
self.class.send(symbol, *args)
|
30
|
+
else
|
31
|
+
super
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
29
35
|
private
|
30
|
-
|
31
|
-
|
32
|
-
resp =
|
36
|
+
|
37
|
+
def real_repo_data
|
38
|
+
resp = get("/users/#{username}/repos")
|
33
39
|
raise NoSuchUserError, username if resp.code == 404
|
40
|
+
raise RateLimitExceededError if resp.code == 403
|
34
41
|
resp.body
|
35
42
|
end
|
36
43
|
|
37
44
|
def mock_repo_data
|
38
|
-
|
45
|
+
raise RateLimitExceededError if ENV['REPONAUT_RATE_LIMIT'] == 'on'
|
46
|
+
path = File.expand_path("../../../spec/fixtures/cassettes/#{username}.yml", __FILE__)
|
39
47
|
raw_data = IO.read(path)
|
40
48
|
data = YAML.load(raw_data)
|
41
49
|
raise NoSuchUserError, username if data['http_interactions'][0]['response']['status']['code'] == 404
|
42
50
|
data['http_interactions'][0]['response']['body']['string']
|
43
51
|
end
|
52
|
+
|
53
|
+
define_method(:repo_data, instance_method(ENV.cucumber? ? :mock_repo_data : :real_repo_data))
|
44
54
|
end
|
45
55
|
|
46
56
|
class Repository
|
@@ -55,7 +65,7 @@ module Reponaut
|
|
55
65
|
|
56
66
|
def upstream
|
57
67
|
return nil unless fork?
|
58
|
-
|
68
|
+
repo_data['parent']['full_name']
|
59
69
|
end
|
60
70
|
|
61
71
|
def to_s
|
@@ -82,6 +92,26 @@ module Reponaut
|
|
82
92
|
end
|
83
93
|
end
|
84
94
|
end
|
95
|
+
|
96
|
+
private
|
97
|
+
|
98
|
+
def real_repo_data
|
99
|
+
@service.get("/repos/#{full_name}")
|
100
|
+
end
|
101
|
+
|
102
|
+
def mock_repo_data
|
103
|
+
path = File.expand_path("../../../spec/fixtures/repos/#{full_name}.json", __FILE__)
|
104
|
+
raw_data = IO.read(path)
|
105
|
+
JSON.parse(raw_data)
|
106
|
+
end
|
107
|
+
|
108
|
+
define_method(:repo_data, instance_method(ENV.cucumber? ? :mock_repo_data : :real_repo_data))
|
85
109
|
end
|
110
|
+
|
111
|
+
class GitHubError < StandardError; end
|
112
|
+
|
113
|
+
class NoSuchUserError < GitHubError; end
|
114
|
+
|
115
|
+
class RateLimitExceededError < GitHubError; end
|
86
116
|
end
|
87
117
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Reponaut
|
2
|
+
module Application
|
3
|
+
class Presenter
|
4
|
+
def format(repo)
|
5
|
+
line = repo.name
|
6
|
+
line = "#{line} -> #{repo.upstream}" if repo.fork?
|
7
|
+
line
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class SimplePresenter < Presenter; end
|
12
|
+
|
13
|
+
class LongPresenter < Presenter
|
14
|
+
attr_reader :count
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
super
|
18
|
+
@count = 0
|
19
|
+
end
|
20
|
+
|
21
|
+
def format(repo)
|
22
|
+
line = super
|
23
|
+
line = "\n#{line}" unless @count == 0
|
24
|
+
line = "#{line}\n #{repo.description}"
|
25
|
+
@count += 1
|
26
|
+
line
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Reponaut
|
2
|
+
module Application
|
3
|
+
class Sorter
|
4
|
+
attr_reader :name, :count
|
5
|
+
|
6
|
+
def initialize(pair)
|
7
|
+
@name, @count = pair
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class LexicographicalSorter < Sorter
|
12
|
+
def <=>(o)
|
13
|
+
return nil unless o.kind_of? self.class
|
14
|
+
name <=> o.name
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class NumericalSorter < Sorter
|
19
|
+
def <=>(o)
|
20
|
+
return nil unless o.kind_of? self.class
|
21
|
+
if count == o.count
|
22
|
+
name <=> o.name
|
23
|
+
else
|
24
|
+
o.count <=> count
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/reponaut/version.rb
CHANGED
data/reponaut.gemspec
CHANGED
@@ -17,11 +17,17 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features|fixtures)/})
|
18
18
|
gem.require_paths = ['lib']
|
19
19
|
|
20
|
+
gem.metadata = {
|
21
|
+
'build_date' => Time.now.strftime("%Y-%m-%d %H:%M:%S %Z"),
|
22
|
+
'commit' => `git describe 2>/dev/null`.chomp,
|
23
|
+
'commit_hash' => `git rev-parse HEAD`.chomp,
|
24
|
+
}
|
25
|
+
|
20
26
|
gem.required_ruby_version = '>= 2.0.0'
|
21
27
|
|
22
|
-
gem.add_runtime_dependency('httparty', '~> 0.
|
23
|
-
gem.add_runtime_dependency('json', '~>
|
24
|
-
gem.add_runtime_dependency('
|
28
|
+
gem.add_runtime_dependency('httparty', '~> 0.14.0')
|
29
|
+
gem.add_runtime_dependency('json', '~> 2.0')
|
30
|
+
gem.add_runtime_dependency('mercenary', '~> 0.3.5', '!= 0.3.6')
|
25
31
|
|
26
32
|
gem.add_development_dependency('aruba', '~> 0.8')
|
27
33
|
gem.add_development_dependency('cucumber', '~> 2.0')
|
@@ -0,0 +1,266 @@
|
|
1
|
+
{
|
2
|
+
"id": 29265278,
|
3
|
+
"name": "Smyck-Color-Scheme",
|
4
|
+
"full_name": "mdippery/Smyck-Color-Scheme",
|
5
|
+
"owner": {
|
6
|
+
"login": "mdippery",
|
7
|
+
"id": 22942,
|
8
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/22942?v=3",
|
9
|
+
"gravatar_id": "",
|
10
|
+
"url": "https://api.github.com/users/mdippery",
|
11
|
+
"html_url": "https://github.com/mdippery",
|
12
|
+
"followers_url": "https://api.github.com/users/mdippery/followers",
|
13
|
+
"following_url": "https://api.github.com/users/mdippery/following{/other_user}",
|
14
|
+
"gists_url": "https://api.github.com/users/mdippery/gists{/gist_id}",
|
15
|
+
"starred_url": "https://api.github.com/users/mdippery/starred{/owner}{/repo}",
|
16
|
+
"subscriptions_url": "https://api.github.com/users/mdippery/subscriptions",
|
17
|
+
"organizations_url": "https://api.github.com/users/mdippery/orgs",
|
18
|
+
"repos_url": "https://api.github.com/users/mdippery/repos",
|
19
|
+
"events_url": "https://api.github.com/users/mdippery/events{/privacy}",
|
20
|
+
"received_events_url": "https://api.github.com/users/mdippery/received_events",
|
21
|
+
"type": "User",
|
22
|
+
"site_admin": false
|
23
|
+
},
|
24
|
+
"private": false,
|
25
|
+
"html_url": "https://github.com/mdippery/Smyck-Color-Scheme",
|
26
|
+
"description": "Color Scheme for Terminal.app, iTerm2, Vim, MacVim, Sublime Text2 and Textmate",
|
27
|
+
"fork": true,
|
28
|
+
"url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme",
|
29
|
+
"forks_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/forks",
|
30
|
+
"keys_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/keys{/key_id}",
|
31
|
+
"collaborators_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/collaborators{/collaborator}",
|
32
|
+
"teams_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/teams",
|
33
|
+
"hooks_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/hooks",
|
34
|
+
"issue_events_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/issues/events{/number}",
|
35
|
+
"events_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/events",
|
36
|
+
"assignees_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/assignees{/user}",
|
37
|
+
"branches_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/branches{/branch}",
|
38
|
+
"tags_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/tags",
|
39
|
+
"blobs_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/git/blobs{/sha}",
|
40
|
+
"git_tags_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/git/tags{/sha}",
|
41
|
+
"git_refs_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/git/refs{/sha}",
|
42
|
+
"trees_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/git/trees{/sha}",
|
43
|
+
"statuses_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/statuses/{sha}",
|
44
|
+
"languages_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/languages",
|
45
|
+
"stargazers_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/stargazers",
|
46
|
+
"contributors_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/contributors",
|
47
|
+
"subscribers_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/subscribers",
|
48
|
+
"subscription_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/subscription",
|
49
|
+
"commits_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/commits{/sha}",
|
50
|
+
"git_commits_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/git/commits{/sha}",
|
51
|
+
"comments_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/comments{/number}",
|
52
|
+
"issue_comment_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/issues/comments{/number}",
|
53
|
+
"contents_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/contents/{+path}",
|
54
|
+
"compare_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/compare/{base}...{head}",
|
55
|
+
"merges_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/merges",
|
56
|
+
"archive_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/{archive_format}{/ref}",
|
57
|
+
"downloads_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/downloads",
|
58
|
+
"issues_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/issues{/number}",
|
59
|
+
"pulls_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/pulls{/number}",
|
60
|
+
"milestones_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/milestones{/number}",
|
61
|
+
"notifications_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/notifications{?since,all,participating}",
|
62
|
+
"labels_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/labels{/name}",
|
63
|
+
"releases_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/releases{/id}",
|
64
|
+
"deployments_url": "https://api.github.com/repos/mdippery/Smyck-Color-Scheme/deployments",
|
65
|
+
"created_at": "2015-01-14T20:54:57Z",
|
66
|
+
"updated_at": "2015-01-14T20:55:08Z",
|
67
|
+
"pushed_at": "2015-01-14T23:29:10Z",
|
68
|
+
"git_url": "git://github.com/mdippery/Smyck-Color-Scheme.git",
|
69
|
+
"ssh_url": "git@github.com:mdippery/Smyck-Color-Scheme.git",
|
70
|
+
"clone_url": "https://github.com/mdippery/Smyck-Color-Scheme.git",
|
71
|
+
"svn_url": "https://github.com/mdippery/Smyck-Color-Scheme",
|
72
|
+
"homepage": "http://color.smyck.org/",
|
73
|
+
"size": 107,
|
74
|
+
"stargazers_count": 0,
|
75
|
+
"watchers_count": 0,
|
76
|
+
"language": "VimL",
|
77
|
+
"has_issues": false,
|
78
|
+
"has_downloads": true,
|
79
|
+
"has_wiki": false,
|
80
|
+
"has_pages": false,
|
81
|
+
"forks_count": 0,
|
82
|
+
"mirror_url": null,
|
83
|
+
"open_issues_count": 0,
|
84
|
+
"forks": 0,
|
85
|
+
"open_issues": 0,
|
86
|
+
"watchers": 0,
|
87
|
+
"default_branch": "master",
|
88
|
+
"parent": {
|
89
|
+
"id": 3688785,
|
90
|
+
"name": "Smyck-Color-Scheme",
|
91
|
+
"full_name": "hukl/Smyck-Color-Scheme",
|
92
|
+
"owner": {
|
93
|
+
"login": "hukl",
|
94
|
+
"id": 25157,
|
95
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/25157?v=3",
|
96
|
+
"gravatar_id": "",
|
97
|
+
"url": "https://api.github.com/users/hukl",
|
98
|
+
"html_url": "https://github.com/hukl",
|
99
|
+
"followers_url": "https://api.github.com/users/hukl/followers",
|
100
|
+
"following_url": "https://api.github.com/users/hukl/following{/other_user}",
|
101
|
+
"gists_url": "https://api.github.com/users/hukl/gists{/gist_id}",
|
102
|
+
"starred_url": "https://api.github.com/users/hukl/starred{/owner}{/repo}",
|
103
|
+
"subscriptions_url": "https://api.github.com/users/hukl/subscriptions",
|
104
|
+
"organizations_url": "https://api.github.com/users/hukl/orgs",
|
105
|
+
"repos_url": "https://api.github.com/users/hukl/repos",
|
106
|
+
"events_url": "https://api.github.com/users/hukl/events{/privacy}",
|
107
|
+
"received_events_url": "https://api.github.com/users/hukl/received_events",
|
108
|
+
"type": "User",
|
109
|
+
"site_admin": false
|
110
|
+
},
|
111
|
+
"private": false,
|
112
|
+
"html_url": "https://github.com/hukl/Smyck-Color-Scheme",
|
113
|
+
"description": "Color Scheme for Terminal.app, iTerm2, Vim, MacVim, Sublime Text2 and Textmate",
|
114
|
+
"fork": false,
|
115
|
+
"url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme",
|
116
|
+
"forks_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/forks",
|
117
|
+
"keys_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/keys{/key_id}",
|
118
|
+
"collaborators_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/collaborators{/collaborator}",
|
119
|
+
"teams_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/teams",
|
120
|
+
"hooks_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/hooks",
|
121
|
+
"issue_events_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/issues/events{/number}",
|
122
|
+
"events_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/events",
|
123
|
+
"assignees_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/assignees{/user}",
|
124
|
+
"branches_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/branches{/branch}",
|
125
|
+
"tags_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/tags",
|
126
|
+
"blobs_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/git/blobs{/sha}",
|
127
|
+
"git_tags_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/git/tags{/sha}",
|
128
|
+
"git_refs_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/git/refs{/sha}",
|
129
|
+
"trees_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/git/trees{/sha}",
|
130
|
+
"statuses_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/statuses/{sha}",
|
131
|
+
"languages_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/languages",
|
132
|
+
"stargazers_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/stargazers",
|
133
|
+
"contributors_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/contributors",
|
134
|
+
"subscribers_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/subscribers",
|
135
|
+
"subscription_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/subscription",
|
136
|
+
"commits_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/commits{/sha}",
|
137
|
+
"git_commits_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/git/commits{/sha}",
|
138
|
+
"comments_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/comments{/number}",
|
139
|
+
"issue_comment_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/issues/comments{/number}",
|
140
|
+
"contents_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/contents/{+path}",
|
141
|
+
"compare_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/compare/{base}...{head}",
|
142
|
+
"merges_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/merges",
|
143
|
+
"archive_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/{archive_format}{/ref}",
|
144
|
+
"downloads_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/downloads",
|
145
|
+
"issues_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/issues{/number}",
|
146
|
+
"pulls_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/pulls{/number}",
|
147
|
+
"milestones_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/milestones{/number}",
|
148
|
+
"notifications_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/notifications{?since,all,participating}",
|
149
|
+
"labels_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/labels{/name}",
|
150
|
+
"releases_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/releases{/id}",
|
151
|
+
"deployments_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/deployments",
|
152
|
+
"created_at": "2012-03-11T18:46:41Z",
|
153
|
+
"updated_at": "2016-07-06T05:06:25Z",
|
154
|
+
"pushed_at": "2016-04-24T15:46:54Z",
|
155
|
+
"git_url": "git://github.com/hukl/Smyck-Color-Scheme.git",
|
156
|
+
"ssh_url": "git@github.com:hukl/Smyck-Color-Scheme.git",
|
157
|
+
"clone_url": "https://github.com/hukl/Smyck-Color-Scheme.git",
|
158
|
+
"svn_url": "https://github.com/hukl/Smyck-Color-Scheme",
|
159
|
+
"homepage": "http://color.smyck.org/",
|
160
|
+
"size": 221,
|
161
|
+
"stargazers_count": 817,
|
162
|
+
"watchers_count": 817,
|
163
|
+
"language": "VimL",
|
164
|
+
"has_issues": true,
|
165
|
+
"has_downloads": true,
|
166
|
+
"has_wiki": true,
|
167
|
+
"has_pages": false,
|
168
|
+
"forks_count": 115,
|
169
|
+
"mirror_url": null,
|
170
|
+
"open_issues_count": 18,
|
171
|
+
"forks": 115,
|
172
|
+
"open_issues": 18,
|
173
|
+
"watchers": 817,
|
174
|
+
"default_branch": "master"
|
175
|
+
},
|
176
|
+
"source": {
|
177
|
+
"id": 3688785,
|
178
|
+
"name": "Smyck-Color-Scheme",
|
179
|
+
"full_name": "hukl/Smyck-Color-Scheme",
|
180
|
+
"owner": {
|
181
|
+
"login": "hukl",
|
182
|
+
"id": 25157,
|
183
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/25157?v=3",
|
184
|
+
"gravatar_id": "",
|
185
|
+
"url": "https://api.github.com/users/hukl",
|
186
|
+
"html_url": "https://github.com/hukl",
|
187
|
+
"followers_url": "https://api.github.com/users/hukl/followers",
|
188
|
+
"following_url": "https://api.github.com/users/hukl/following{/other_user}",
|
189
|
+
"gists_url": "https://api.github.com/users/hukl/gists{/gist_id}",
|
190
|
+
"starred_url": "https://api.github.com/users/hukl/starred{/owner}{/repo}",
|
191
|
+
"subscriptions_url": "https://api.github.com/users/hukl/subscriptions",
|
192
|
+
"organizations_url": "https://api.github.com/users/hukl/orgs",
|
193
|
+
"repos_url": "https://api.github.com/users/hukl/repos",
|
194
|
+
"events_url": "https://api.github.com/users/hukl/events{/privacy}",
|
195
|
+
"received_events_url": "https://api.github.com/users/hukl/received_events",
|
196
|
+
"type": "User",
|
197
|
+
"site_admin": false
|
198
|
+
},
|
199
|
+
"private": false,
|
200
|
+
"html_url": "https://github.com/hukl/Smyck-Color-Scheme",
|
201
|
+
"description": "Color Scheme for Terminal.app, iTerm2, Vim, MacVim, Sublime Text2 and Textmate",
|
202
|
+
"fork": false,
|
203
|
+
"url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme",
|
204
|
+
"forks_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/forks",
|
205
|
+
"keys_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/keys{/key_id}",
|
206
|
+
"collaborators_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/collaborators{/collaborator}",
|
207
|
+
"teams_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/teams",
|
208
|
+
"hooks_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/hooks",
|
209
|
+
"issue_events_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/issues/events{/number}",
|
210
|
+
"events_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/events",
|
211
|
+
"assignees_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/assignees{/user}",
|
212
|
+
"branches_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/branches{/branch}",
|
213
|
+
"tags_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/tags",
|
214
|
+
"blobs_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/git/blobs{/sha}",
|
215
|
+
"git_tags_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/git/tags{/sha}",
|
216
|
+
"git_refs_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/git/refs{/sha}",
|
217
|
+
"trees_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/git/trees{/sha}",
|
218
|
+
"statuses_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/statuses/{sha}",
|
219
|
+
"languages_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/languages",
|
220
|
+
"stargazers_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/stargazers",
|
221
|
+
"contributors_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/contributors",
|
222
|
+
"subscribers_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/subscribers",
|
223
|
+
"subscription_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/subscription",
|
224
|
+
"commits_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/commits{/sha}",
|
225
|
+
"git_commits_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/git/commits{/sha}",
|
226
|
+
"comments_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/comments{/number}",
|
227
|
+
"issue_comment_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/issues/comments{/number}",
|
228
|
+
"contents_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/contents/{+path}",
|
229
|
+
"compare_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/compare/{base}...{head}",
|
230
|
+
"merges_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/merges",
|
231
|
+
"archive_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/{archive_format}{/ref}",
|
232
|
+
"downloads_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/downloads",
|
233
|
+
"issues_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/issues{/number}",
|
234
|
+
"pulls_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/pulls{/number}",
|
235
|
+
"milestones_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/milestones{/number}",
|
236
|
+
"notifications_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/notifications{?since,all,participating}",
|
237
|
+
"labels_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/labels{/name}",
|
238
|
+
"releases_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/releases{/id}",
|
239
|
+
"deployments_url": "https://api.github.com/repos/hukl/Smyck-Color-Scheme/deployments",
|
240
|
+
"created_at": "2012-03-11T18:46:41Z",
|
241
|
+
"updated_at": "2016-07-06T05:06:25Z",
|
242
|
+
"pushed_at": "2016-04-24T15:46:54Z",
|
243
|
+
"git_url": "git://github.com/hukl/Smyck-Color-Scheme.git",
|
244
|
+
"ssh_url": "git@github.com:hukl/Smyck-Color-Scheme.git",
|
245
|
+
"clone_url": "https://github.com/hukl/Smyck-Color-Scheme.git",
|
246
|
+
"svn_url": "https://github.com/hukl/Smyck-Color-Scheme",
|
247
|
+
"homepage": "http://color.smyck.org/",
|
248
|
+
"size": 221,
|
249
|
+
"stargazers_count": 817,
|
250
|
+
"watchers_count": 817,
|
251
|
+
"language": "VimL",
|
252
|
+
"has_issues": true,
|
253
|
+
"has_downloads": true,
|
254
|
+
"has_wiki": true,
|
255
|
+
"has_pages": false,
|
256
|
+
"forks_count": 115,
|
257
|
+
"mirror_url": null,
|
258
|
+
"open_issues_count": 18,
|
259
|
+
"forks": 115,
|
260
|
+
"open_issues": 18,
|
261
|
+
"watchers": 817,
|
262
|
+
"default_branch": "master"
|
263
|
+
},
|
264
|
+
"network_count": 115,
|
265
|
+
"subscribers_count": 0
|
266
|
+
}
|