gitfinger 0.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.
Files changed (6) hide show
  1. data/.gitignore +1 -0
  2. data/Gemfile +2 -0
  3. data/Rakefile +6 -0
  4. data/bin/gitfinger +55 -0
  5. data/gitfinger.gemspec +24 -0
  6. metadata +62 -0
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ pkg/
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source :rubygems
2
+ gem 'octokit', '~> 0.6'
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'bundler'
4
+ Bundler::GemHelper.install_tasks
5
+
6
+
data/bin/gitfinger ADDED
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'time'
4
+ user = ARGV.first
5
+ if user.nil?
6
+ $stderr.puts "Usage: #{File.basename(__FILE__)} [a GitHub username]"
7
+ exit 1
8
+ end
9
+
10
+ require 'octokit'
11
+ require 'yaml'
12
+ c = Octokit::Client.new
13
+ begin
14
+ repos = c.repositories(user, per_page: 300)
15
+ rescue Octokit::NotFound
16
+ $stderr.puts "GitHub user #{user} not found"
17
+ exit 1
18
+ end
19
+
20
+ def truncate(s, len)
21
+ return unless s
22
+ s.length > len ? s[0,len-3] + '...' : s
23
+ end
24
+
25
+ res = repos.map {|r|
26
+ d = %w( name name w watchers f forks i open_issues updated updated_at pushed pushed_at type fork desc description).each_slice(2).reduce({}) {|m, x|
27
+ m[x[0]] = r[x[1]]
28
+ m
29
+ }
30
+ %w( updated pushed ).each {|x| d[x] = d[x] && DateTime.parse(d[x]) }
31
+ d['type'] = d['type'] ? 'fork' : 'source'
32
+ d
33
+ }.sort_by {|x| x['updated']}.reverse
34
+
35
+
36
+ def fmt_datetime(t)
37
+ t.strftime("%b %d %Y")
38
+ end
39
+
40
+ abort "No repositories found for #{user}" unless !res.empty?
41
+
42
+ longest_name_len = res.reduce(0) {|max, row| [max, row['name'].length].max }
43
+
44
+ placeholders = "%#{longest_name_len}s%6s%5s%4s%13s%13s%9s "
45
+ desc_length = `tput cols`.to_i - (placeholders.scan(/\d+/).map(&:to_i).reduce(0){|sum,x| sum+x} + 3)
46
+ placeholders += "%-#{desc_length}s"
47
+
48
+ # print headers
49
+ puts placeholders % res[0].keys
50
+
51
+ res.each {|r|
52
+ %w( updated pushed ).each {|x| r[x] = r[x] && fmt_datetime(r[x]) }
53
+ r['desc'] = truncate(r['desc'], desc_length)
54
+ puts placeholders % r.values
55
+ }
data/gitfinger.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "gitfinger"
6
+ s.version = '0.0.1'
7
+ s.platform = Gem::Platform::RUBY
8
+ s.required_ruby_version = '>= 1.9.0'
9
+
10
+ s.authors = ["Daniel Choi"]
11
+ s.email = ["dhchoi@gmail.com"]
12
+ s.homepage = "http://gitihub.com/danchoi/gitfinger"
13
+ s.summary = %q{Finger GitHub users}
14
+ s.description = %q{Finger GitHub users}
15
+
16
+ s.rubyforge_project = "gitfinger"
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+
23
+ s.add_dependency 'octokit', '~> 0.6'
24
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gitfinger
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Daniel Choi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-24 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: octokit
16
+ requirement: &70231540634480 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '0.6'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70231540634480
25
+ description: Finger GitHub users
26
+ email:
27
+ - dhchoi@gmail.com
28
+ executables:
29
+ - gitfinger
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - .gitignore
34
+ - Gemfile
35
+ - Rakefile
36
+ - bin/gitfinger
37
+ - gitfinger.gemspec
38
+ homepage: http://gitihub.com/danchoi/gitfinger
39
+ licenses: []
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: 1.9.0
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ requirements: []
57
+ rubyforge_project: gitfinger
58
+ rubygems_version: 1.8.10
59
+ signing_key:
60
+ specification_version: 3
61
+ summary: Finger GitHub users
62
+ test_files: []