git-trend 0.0.7 → 0.0.8

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: 8d005c8a154e363c7d06876ff9a0ff64cf999e0a
4
- data.tar.gz: eabc49916aacd96b7b3867e86df388865749e976
3
+ metadata.gz: f57110a790f167885bd1f37c5d6ab482e26f223b
4
+ data.tar.gz: 5b5dc73682fb47665d72651800df82270d45884a
5
5
  SHA512:
6
- metadata.gz: 022e010d212d9f848501812b5c2b521238f2ef93473b4c61d7126501faad83c55f18f76ee0d5e77ae59e5f356a34eaab8aea7b845597aa27ce57564296b293a2
7
- data.tar.gz: 41416f4de73265d2cb8f952812798792fd8f9ea200bd65e6d052ec450d90dea7de09174ed105cad5ef412973f7b8aa2b9da486db920ac9db58195b374a9d5d1b
6
+ metadata.gz: 35bcff208b8e7939bba39db0a4550d1c0577dcdd9a719fe6310df5745af195c483f3f5727ea3e826e41ac9ef8bcde1ee593f4b98de27e405ef4e03a26bb69ff2
7
+ data.tar.gz: 63d649e9d633ccc5878a25cbd17c1c27ffb5433cf6bf035999f749a76da7a32750e7779b738b3b76cd4fef18ff5a0bc4c2e3747e35e62cbab6143d8e342bf885
@@ -1,3 +1,8 @@
1
+ ## v0.0.8
2
+
3
+ * Upgrade simplecov 0.9.0 (5fbcbab)
4
+ * Fix gemspec homepage typo (9bd6b48)
5
+
1
6
  ## v0.0.7
2
7
 
3
8
  * Tweak help message.(Accent a green color in help) (9da3e5e)
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.email = ['terasawan@gmail.com']
25
25
  spec.summary = 'cli based; show Trending repository on github'
26
26
  spec.description = spec.summary
27
- spec.homepage = 'https://github.com/rochefort/github-trend'
27
+ spec.homepage = 'https://github.com/rochefort/git-trend'
28
28
  spec.license = 'MIT'
29
29
 
30
30
  spec.files = `git ls-files -z`.split("\x0")
@@ -43,7 +43,7 @@ Gem::Specification.new do |spec|
43
43
 
44
44
  spec.add_development_dependency 'rspec', '~> 3.0.0'
45
45
  spec.add_development_dependency 'rspec-its', '~> 1.0.1'
46
- spec.add_development_dependency 'simplecov', '~> 0.8.2'
46
+ spec.add_development_dependency 'simplecov', '~> 0.9.0'
47
47
  spec.add_development_dependency 'webmock', '~> 1.18.0'
48
48
 
49
49
  spec.add_development_dependency 'coveralls'
@@ -21,9 +21,8 @@ class String
21
21
  extraction
22
22
  end
23
23
 
24
- def mb_ljust(width, padding=' ')
24
+ def mb_ljust(width, padding = ' ')
25
25
  padding_size = [0, width - mb_width].max
26
26
  self + padding * padding_size
27
27
  end
28
-
29
28
  end
@@ -1,6 +1,5 @@
1
1
  module GitTrend
2
2
  module Rendering
3
-
4
3
  def self.included(base)
5
4
  base.extend(self)
6
5
  end
@@ -10,9 +9,9 @@ module GitTrend
10
9
  DEFAULT_RULED_LINE_SIZE = [3, 40, 10, 6, 5]
11
10
  DESCRIPTION_MIN_SIZE = 20
12
11
 
13
- def render(projects, describable=false)
12
+ def render(projects, describable = false)
14
13
  @describable = describable
15
- set_ruled_line_size(projects)
14
+ ruled_line_size(projects)
16
15
  render_to_header
17
16
  render_to_body(projects)
18
17
  end
@@ -27,74 +26,75 @@ module GitTrend
27
26
  end
28
27
 
29
28
  private
30
- def max_size_of(projects, attr)
31
- projects.max_by { |project| project.send(attr).size }.send(attr).size
32
- end
33
29
 
34
- def set_ruled_line_size(projects)
35
- @ruled_line_size = DEFAULT_RULED_LINE_SIZE.dup
36
- max_name_size = max_size_of(projects, :name)
37
- if max_name_size > @ruled_line_size[1]
38
- @ruled_line_size[1] = max_name_size
39
- end
30
+ def max_size_of(projects, attr)
31
+ projects.max_by { |project| project.send(attr).size }.send(attr).size
32
+ end
40
33
 
41
- max_lang_size = max_size_of(projects, :lang)
42
- if max_lang_size > @ruled_line_size[2]
43
- @ruled_line_size[2] = max_lang_size
44
- end
34
+ def ruled_line_size(projects)
35
+ @ruled_line_size = DEFAULT_RULED_LINE_SIZE.dup
36
+ max_name_size = max_size_of(projects, :name)
37
+ if max_name_size > @ruled_line_size[1]
38
+ @ruled_line_size[1] = max_name_size
39
+ end
45
40
 
46
- # setting description size
47
- if @describable
48
- terminal_width, _terminal_height = detect_terminal_size
49
- description_width = terminal_width - @ruled_line_size.inject(&:+) - @ruled_line_size.size
50
- if description_width >= DESCRIPTION_MIN_SIZE
51
- @ruled_line_size << description_width
52
- else
53
- @describable = false
54
- end
55
- end
41
+ max_lang_size = max_size_of(projects, :lang)
42
+ if max_lang_size > @ruled_line_size[2]
43
+ @ruled_line_size[2] = max_lang_size
56
44
  end
57
45
 
58
- def render_to_header
59
- f = @ruled_line_size
60
- if @describable
61
- fmt = "%#{f[0]}s %-#{f[1]}s %-#{f[2]}s %#{f[3]}s %#{f[4]}s %-#{f[5]}s"
46
+ # setting description size
47
+ if @describable
48
+ terminal_width, _terminal_height = detect_terminal_size
49
+ description_width = terminal_width - @ruled_line_size.inject(&:+) - @ruled_line_size.size
50
+ if description_width >= DESCRIPTION_MIN_SIZE
51
+ @ruled_line_size << description_width
62
52
  else
63
- fmt = "%#{f[0]}s %-#{f[1]}s %-#{f[2]}s %#{f[3]}s %#{f[4]}s"
53
+ @describable = false
64
54
  end
65
- header = ['No.', 'Name', 'Lang', 'Star', 'Fork']
66
- header << 'Description' if @describable
67
- puts fmt % header
68
- puts fmt % @ruled_line_size.map{ |field| '-'*field }
69
55
  end
56
+ end
70
57
 
71
- def render_to_body(projects)
72
- f = @ruled_line_size
58
+ def render_to_header
59
+ f = @ruled_line_size
60
+ if @describable
61
+ fmt = "%#{f[0]}s %-#{f[1]}s %-#{f[2]}s %#{f[3]}s %#{f[4]}s %-#{f[5]}s"
62
+ else
73
63
  fmt = "%#{f[0]}s %-#{f[1]}s %-#{f[2]}s %#{f[3]}s %#{f[4]}s"
74
- projects.each_with_index do |project, i|
75
- result = fmt % [i+1, project.to_a].flatten
76
- result << " " + project.description.mb_slice(f.last).mb_ljust(f.last) if @describable
77
- puts result
78
- end
79
64
  end
65
+ header = ['No.', 'Name', 'Lang', 'Star', 'Fork']
66
+ header << 'Description' if @describable
67
+ puts fmt % header
68
+ puts fmt % @ruled_line_size.map { |field| '-'*field }
69
+ end
80
70
 
81
- def command_exists?(command)
82
- ENV['PATH'].split(File::PATH_SEPARATOR).any? { |d| File.exists? File.join(d, command) }
71
+ def render_to_body(projects)
72
+ f = @ruled_line_size
73
+ fmt = "%#{f[0]}s %-#{f[1]}s %-#{f[2]}s %#{f[3]}s %#{f[4]}s"
74
+ projects.each_with_index do |project, i|
75
+ result = fmt % [i + 1, project.to_a].flatten
76
+ result << ' ' + project.description.mb_slice(f.last).mb_ljust(f.last) if @describable
77
+ puts result
83
78
  end
79
+ end
84
80
 
85
- # https://github.com/cldwalker/hirb/blob/master/lib/hirb/util.rb#L61-71
86
- def detect_terminal_size
87
- if (ENV['COLUMNS'] =~ /^\d+$/) && (ENV['LINES'] =~ /^\d+$/)
88
- [ENV['COLUMNS'].to_i, ENV['LINES'].to_i]
89
- elsif (RUBY_PLATFORM =~ /java/ || (!STDIN.tty? && ENV['TERM'])) && command_exists?('tput')
90
- [`tput cols`.to_i, `tput lines`.to_i]
91
- elsif STDIN.tty? && command_exists?('stty')
92
- `stty size`.scan(/\d+/).map { |s| s.to_i }.reverse
93
- else
94
- nil
95
- end
96
- rescue
81
+ def command_exists?(command)
82
+ ENV['PATH'].split(File::PATH_SEPARATOR).any? { |d| File.exist? File.join(d, command) }
83
+ end
84
+
85
+ # https://github.com/cldwalker/hirb/blob/master/lib/hirb/util.rb#L61-71
86
+ def detect_terminal_size
87
+ if (ENV['COLUMNS'] =~ /^\d+$/) && (ENV['LINES'] =~ /^\d+$/)
88
+ [ENV['COLUMNS'].to_i, ENV['LINES'].to_i]
89
+ elsif (RUBY_PLATFORM =~ /java/ || (!STDIN.tty? && ENV['TERM'])) && command_exists?('tput')
90
+ [`tput cols`.to_i, `tput lines`.to_i]
91
+ elsif STDIN.tty? && command_exists?('stty')
92
+ `stty size`.scan(/\d+/).map { |s| s.to_i }.reverse
93
+ else
97
94
  nil
98
95
  end
96
+ rescue
97
+ nil
98
+ end
99
99
  end
100
100
  end
@@ -3,19 +3,16 @@ require 'addressable/uri'
3
3
 
4
4
  module GitTrend
5
5
  class Scraper
6
-
7
6
  BASE_HOST = 'https://github.com'
8
7
  BASE_URL = "#{BASE_HOST}/trending"
9
8
 
10
9
  def initialize
11
10
  @agent = Mechanize.new
12
11
  proxy = URI.parse(ENV['http_proxy']) if ENV['http_proxy']
13
- if proxy
14
- @agent.set_proxy(proxy.host, proxy.port, proxy.user, proxy.password)
15
- end
12
+ @agent.set_proxy(proxy.host, proxy.port, proxy.user, proxy.password) if proxy
16
13
  end
17
14
 
18
- def get(language=nil, since=nil)
15
+ def get(language = nil, since = nil)
19
16
  projects = []
20
17
  page = @agent.get(generate_url_for_get(language, since))
21
18
 
@@ -46,16 +43,17 @@ module GitTrend
46
43
  end
47
44
 
48
45
  private
49
- def generate_url_for_get(language, since)
50
- uri = Addressable::URI.parse(BASE_URL)
51
- if language or since
52
- uri.query_values = { l: language, since: since}.delete_if{ |k,v| v.nil? }
53
- end
54
- uri.to_s
55
- end
56
46
 
57
- def meta_count(elm)
58
- elm.empty? ? 0 : elm[0].parent.text.strip.gsub(',', '').to_i
47
+ def generate_url_for_get(language, since)
48
+ uri = Addressable::URI.parse(BASE_URL)
49
+ if language || since
50
+ uri.query_values = { l: language, since: since }.delete_if { |_k, v| v.nil? }
59
51
  end
52
+ uri.to_s
53
+ end
54
+
55
+ def meta_count(elm)
56
+ elm.empty? ? 0 : elm[0].parent.text.strip.gsub(',', '').to_i
57
+ end
60
58
  end
61
59
  end
@@ -1,3 +1,3 @@
1
1
  module GitTrend
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
@@ -24,7 +24,7 @@ RSpec.describe GitTrend::CLI do
24
24
  before do
25
25
  stub_request_get("trending?l=#{language}")
26
26
  end
27
- let(:language) {'ruby'}
27
+ let(:language) { 'ruby' }
28
28
 
29
29
  it 'display daily ranking by language' do
30
30
  res = <<-'EOS'.unindent
@@ -56,15 +56,15 @@ RSpec.describe GitTrend::CLI do
56
56
  | 24 sferik/twitter Ruby 0 1
57
57
  | 25 rightscale/rightscale_cookbooks Ruby 0 1
58
58
  EOS
59
- expect { @cli.invoke(:list, [], {language: language}) }.to output(res).to_stdout
59
+ expect { @cli.invoke(:list, [], language: language) }.to output(res).to_stdout
60
60
  end
61
61
  end
62
62
 
63
63
  context 'with objective-c++ (including + sign)' do
64
64
  before do
65
- stub_request_get("trending?l=objective-c%2B%2B")
65
+ stub_request_get('trending?l=objective-c%2B%2B')
66
66
  end
67
- let(:language) {'objective-c++'}
67
+ let(:language) { 'objective-c++' }
68
68
 
69
69
  it 'display daily ranking by language' do
70
70
  res = <<-'EOS'.unindent
@@ -96,7 +96,7 @@ RSpec.describe GitTrend::CLI do
96
96
  | 24 Yonsm/CeleWare Objective-C++ 0 0
97
97
  | 25 ccrma/miniAudicle Objective-C++ 0 0
98
98
  EOS
99
- expect { @cli.invoke(:list, [], {language: language}) }.to output(res).to_stdout
99
+ expect { @cli.invoke(:list, [], language: language) }.to output(res).to_stdout
100
100
  end
101
101
  end
102
102
  end
@@ -106,7 +106,7 @@ RSpec.describe GitTrend::CLI do
106
106
  before do
107
107
  stub_request_get("trending?since=#{since}")
108
108
  end
109
- let(:since) {'weekly'}
109
+ let(:since) { 'weekly' }
110
110
 
111
111
  it 'display daily ranking since weekly' do
112
112
  res = <<-'EOS'.unindent
@@ -138,7 +138,7 @@ RSpec.describe GitTrend::CLI do
138
138
  | 24 mbostock/d3 JavaScript 307 113
139
139
  | 25 maxpow4h/swiftz Swift 350 20
140
140
  EOS
141
- expect { @cli.invoke(:list, [], {since: since}) }.to output(res).to_stdout
141
+ expect { @cli.invoke(:list, [], since: since) }.to output(res).to_stdout
142
142
  end
143
143
  end
144
144
 
@@ -146,7 +146,7 @@ RSpec.describe GitTrend::CLI do
146
146
  before do
147
147
  stub_request_get("trending?since=#{since}")
148
148
  end
149
- let(:since) {'monthly'}
149
+ let(:since) { 'monthly' }
150
150
 
151
151
  it 'display daily ranking since monthly' do
152
152
  res = <<-'EOS'.unindent
@@ -178,7 +178,7 @@ RSpec.describe GitTrend::CLI do
178
178
  | 24 julianshapiro/velocity JavaScript 1081 71
179
179
  | 25 babun/babun Shell 1068 46
180
180
  EOS
181
- expect { @cli.invoke(:list, [], {since: since}) }.to output(res).to_stdout
181
+ expect { @cli.invoke(:list, [], since: since) }.to output(res).to_stdout
182
182
  end
183
183
  end
184
184
  end
@@ -192,7 +192,7 @@ RSpec.describe GitTrend::CLI do
192
192
 
193
193
  context 'terminal width is enough' do
194
194
  before do
195
- stub_request_get("trending")
195
+ stub_request_get('trending')
196
196
  ENV['COLUMNS'] = '140'
197
197
  ENV['LINES'] = '40'
198
198
  end
@@ -227,19 +227,19 @@ RSpec.describe GitTrend::CLI do
227
227
  | 24 PistonDevelopers/piston-workspace Shell 45 0 Git submodules of Piston projects
228
228
  | 25 maxpow4h/swiftz Swift 43 1 Functional programming in Swift
229
229
  EOS
230
- expect { @cli.invoke(:list, [], {description: 'description'}) }.to output(res).to_stdout
230
+ expect { @cli.invoke(:list, [], description: 'description') }.to output(res).to_stdout
231
231
  end
232
232
  end
233
-
233
+
234
234
  context 'terminal width is tiny' do
235
235
  before do
236
- stub_request_get("trending")
236
+ stub_request_get('trending')
237
237
  ENV['COLUMNS'] = '100' # it is not enough for description.
238
238
  ENV['LINES'] = '40'
239
239
  end
240
240
 
241
241
  it 'display daily ranking about the same as no option' do
242
- expect { @cli.invoke(:list, [], {description: 'description'}) }.to output(dummy_result_no_options).to_stdout
242
+ expect { @cli.invoke(:list, [], description: 'description') }.to output(dummy_result_no_options).to_stdout
243
243
  end
244
244
  end
245
245
  end
@@ -249,8 +249,8 @@ RSpec.describe GitTrend::CLI do
249
249
  before do
250
250
  stub_request_get("trending?l=#{language}&since=#{since}")
251
251
  end
252
- let(:language) {'ruby'}
253
- let(:since) {'weekly'}
252
+ let(:language) { 'ruby' }
253
+ let(:since) { 'weekly' }
254
254
 
255
255
  it 'display daily ranking since weekly' do
256
256
  res = <<-'EOS'.unindent
@@ -282,7 +282,7 @@ RSpec.describe GitTrend::CLI do
282
282
  | 24 chloerei/campo Ruby 35 9
283
283
  | 25 jordansissel/fpm Ruby 35 4
284
284
  EOS
285
- expect { @cli.invoke(:list, [], {language: language, since: since}) }.to output(res).to_stdout
285
+ expect { @cli.invoke(:list, [], language: language, since: since) }.to output(res).to_stdout
286
286
  end
287
287
  end
288
288
  end
@@ -492,47 +492,48 @@ RSpec.describe GitTrend::CLI do
492
492
  end
493
493
 
494
494
  private
495
- def stub_request_get(stub_url)
496
- url = Scraper::BASE_HOST.dup
497
- url << "/#{stub_url}" if stub_url
498
- uri = URI.parse(url)
499
495
 
500
- stub_request(:get, uri).
501
- to_return(
502
- :status => 200,
503
- :headers => {content_type: 'text/html'},
504
- :body => load_http_stub(stub_url))
505
- end
496
+ def stub_request_get(stub_url)
497
+ url = Scraper::BASE_HOST.dup
498
+ url << "/#{stub_url}" if stub_url
499
+ uri = URI.parse(url)
506
500
 
507
- def dummy_result_no_options
508
- <<-'EOS'.unindent
509
- |No. Name Lang Star Fork
510
- |--- -------------------------------------------------- ------------ ------ -----
511
- | 1 prat0318/json_resume Ruby 264 15
512
- | 2 andlabs/ui Go 185 8
513
- | 3 jessepollak/card CSS 174 9
514
- | 4 fullstackio/FlappySwift Swift 148 44
515
- | 5 grant/swift-cheat-sheet 153 13
516
- | 6 Flolagale/mailin Python 155 3
517
- | 7 numbbbbb/the-swift-programming-language-in-chinese JavaScript 120 31
518
- | 8 hippyvm/hippyvm PHP 113 1
519
- | 9 neovim/neovim C 83 8
520
- | 10 hiphopapp/hiphop CoffeeScript 77 8
521
- | 11 interagent/http-api-design 78 4
522
- | 12 austinzheng/swift-2048 Swift 69 16
523
- | 13 mdznr/What-s-New Objective-C 72 2
524
- | 14 daneden/animate.css CSS 65 6
525
- | 15 davidmerfield/randomColor JavaScript 66 3
526
- | 16 dawn/dawn Ruby 62 2
527
- | 17 greatfire/wiki 54 9
528
- | 18 swift-jp/swift-guide CSS 45 9
529
- | 19 addyosmani/psi JavaScript 49 0
530
- | 20 mtford90/silk Python 47 0
531
- | 21 agaue/agaue Go 47 0
532
- | 22 mentionapp/mntpulltoreact Objective-C 46 1
533
- | 23 mikepenz/AboutLibraries Java 45 0
534
- | 24 PistonDevelopers/piston-workspace Shell 45 0
535
- | 25 maxpow4h/swiftz Swift 43 1
536
- EOS
537
- end
501
+ stub_request(:get, uri)
502
+ .to_return(
503
+ status: 200,
504
+ headers: { content_type: 'text/html' },
505
+ body: load_http_stub(stub_url))
506
+ end
507
+
508
+ def dummy_result_no_options
509
+ <<-'EOS'.unindent
510
+ |No. Name Lang Star Fork
511
+ |--- -------------------------------------------------- ------------ ------ -----
512
+ | 1 prat0318/json_resume Ruby 264 15
513
+ | 2 andlabs/ui Go 185 8
514
+ | 3 jessepollak/card CSS 174 9
515
+ | 4 fullstackio/FlappySwift Swift 148 44
516
+ | 5 grant/swift-cheat-sheet 153 13
517
+ | 6 Flolagale/mailin Python 155 3
518
+ | 7 numbbbbb/the-swift-programming-language-in-chinese JavaScript 120 31
519
+ | 8 hippyvm/hippyvm PHP 113 1
520
+ | 9 neovim/neovim C 83 8
521
+ | 10 hiphopapp/hiphop CoffeeScript 77 8
522
+ | 11 interagent/http-api-design 78 4
523
+ | 12 austinzheng/swift-2048 Swift 69 16
524
+ | 13 mdznr/What-s-New Objective-C 72 2
525
+ | 14 daneden/animate.css CSS 65 6
526
+ | 15 davidmerfield/randomColor JavaScript 66 3
527
+ | 16 dawn/dawn Ruby 62 2
528
+ | 17 greatfire/wiki 54 9
529
+ | 18 swift-jp/swift-guide CSS 45 9
530
+ | 19 addyosmani/psi JavaScript 49 0
531
+ | 20 mtford90/silk Python 47 0
532
+ | 21 agaue/agaue Go 47 0
533
+ | 22 mentionapp/mntpulltoreact Objective-C 46 1
534
+ | 23 mikepenz/AboutLibraries Java 45 0
535
+ | 24 PistonDevelopers/piston-workspace Shell 45 0
536
+ | 25 maxpow4h/swiftz Swift 43 1
537
+ EOS
538
+ end
538
539
  end
@@ -19,10 +19,10 @@ RSpec.describe GitTrend::Scraper do
19
19
  context 'when a network error occurred' do
20
20
  before do
21
21
  @scraper = Scraper.new
22
- stub_request(:get, Scraper::BASE_URL).
23
- to_return(:status => 500, :body => '[]')
22
+ stub_request(:get, Scraper::BASE_URL)
23
+ .to_return(status: 500, body: '[]')
24
24
  end
25
- it { expect{ @scraper.get }.to raise_error(Exception) }
25
+ it { expect { @scraper.get }.to raise_error(Exception) }
26
26
  end
27
27
  end
28
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-trend
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - rochefort
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-26 00:00:00.000000000 Z
11
+ date: 2014-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.8.2
117
+ version: 0.9.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.8.2
124
+ version: 0.9.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: webmock
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -185,7 +185,7 @@ files:
185
185
  - spec/git_trend/cli_spec.rb
186
186
  - spec/git_trend/scraper_spec.rb
187
187
  - spec/spec_helper.rb
188
- homepage: https://github.com/rochefort/github-trend
188
+ homepage: https://github.com/rochefort/git-trend
189
189
  licenses:
190
190
  - MIT
191
191
  metadata: {}