git-trend 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 +4 -4
- data/.github/workflows/ci.yml +82 -0
- data/.rubocop.yml +85 -2
- data/.rubocop_todo.yml +15 -0
- data/CHANGELOG.md +10 -6
- data/Gemfile +11 -0
- data/README.md +2 -4
- data/git-trend.gemspec +4 -17
- data/lib/git-trend.rb +1 -1
- data/lib/git_trend/cli.rb +6 -4
- data/lib/git_trend/formatter.rb +1 -0
- data/lib/git_trend/formatters/json_formatter.rb +2 -2
- data/lib/git_trend/formatters/text_formatter.rb +8 -3
- data/lib/git_trend/scraper.rb +8 -6
- data/lib/git_trend/version.rb +1 -1
- data/spec/git_trend/cli_spec.rb +34 -20
- data/spec/git_trend/scraper_spec.rb +7 -3
- data/spec/git_trend_spec.rb +64 -48
- data/spec/spec_helper.rb +3 -14
- metadata +10 -162
- data/.coveralls.yml +0 -1
- data/.travis.yml +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0747b72131e24ecb5c876c337ce33be1941683110562847152189e4ddbb5c72
|
4
|
+
data.tar.gz: 47412945f045abb2cd8af2d959ca9cb01547649d7904b5eeec0a3791f5476be6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a55d7452c04a64ad860e52e19a9673dedd0ef585b9615e1ad2e385100892540cff76209b807ae81087665436379219c351546f9f05115df006e93783050c09a
|
7
|
+
data.tar.gz: 041bb27a4b62b0114231b6d0d66cf285ca0dd7b2326d8dee5c3faa31667506960300e7bfb59e05c5e06eb46b81e0c5a14f189ab14a4c3fb466347061a7a9fbe3
|
@@ -0,0 +1,82 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
pull_request:
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
ruby27:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
timeout-minutes: 10
|
11
|
+
|
12
|
+
steps:
|
13
|
+
- name: Checkout code
|
14
|
+
uses: actions/checkout@v2
|
15
|
+
|
16
|
+
- name: Setup Ruby
|
17
|
+
uses: ruby/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: '2.7.5'
|
20
|
+
bundler-cache: true
|
21
|
+
|
22
|
+
- name: Show ruby version
|
23
|
+
run: ruby -v
|
24
|
+
|
25
|
+
- name: Run tests
|
26
|
+
run: bundle exec rspec
|
27
|
+
|
28
|
+
- name: Run lint
|
29
|
+
run: bundle exec rubocop
|
30
|
+
|
31
|
+
|
32
|
+
ruby31:
|
33
|
+
runs-on: ubuntu-latest
|
34
|
+
timeout-minutes: 10
|
35
|
+
|
36
|
+
steps:
|
37
|
+
- name: Checkout code
|
38
|
+
uses: actions/checkout@v2
|
39
|
+
|
40
|
+
- name: Setup Ruby
|
41
|
+
uses: ruby/setup-ruby@v1
|
42
|
+
with:
|
43
|
+
ruby-version: '3.1.3'
|
44
|
+
bundler-cache: true
|
45
|
+
|
46
|
+
- name: Show ruby version
|
47
|
+
run: ruby -v
|
48
|
+
|
49
|
+
- name: Run tests
|
50
|
+
run: bundle exec rspec
|
51
|
+
|
52
|
+
- name: Run lint
|
53
|
+
run: bundle exec rubocop
|
54
|
+
|
55
|
+
ruby32:
|
56
|
+
runs-on: ubuntu-latest
|
57
|
+
timeout-minutes: 10
|
58
|
+
|
59
|
+
steps:
|
60
|
+
- name: Checkout code
|
61
|
+
uses: actions/checkout@v2
|
62
|
+
|
63
|
+
- name: Setup Ruby
|
64
|
+
uses: ruby/setup-ruby@v1
|
65
|
+
with:
|
66
|
+
ruby-version: '3.2.2'
|
67
|
+
bundler-cache: true
|
68
|
+
|
69
|
+
- name: Show ruby version
|
70
|
+
run: ruby -v
|
71
|
+
|
72
|
+
- name: Run tests
|
73
|
+
run: bundle exec rspec
|
74
|
+
|
75
|
+
- name: Run lint
|
76
|
+
run: bundle exec rubocop
|
77
|
+
|
78
|
+
- name: Upload coverage reports to Codecov
|
79
|
+
uses: codecov/codecov-action@v3
|
80
|
+
with:
|
81
|
+
files: ./coverage/.resultset.json
|
82
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
data/.rubocop.yml
CHANGED
@@ -1,5 +1,88 @@
|
|
1
|
-
inherit_from:
|
2
|
-
|
1
|
+
inherit_from: .rubocop_todo.yml
|
2
|
+
|
3
|
+
require:
|
4
|
+
- rubocop-performance
|
5
|
+
- rubocop-rake
|
6
|
+
- rubocop-rspec
|
7
|
+
|
8
|
+
AllCops:
|
9
|
+
TargetRubyVersion: 2.7
|
10
|
+
Exclude:
|
11
|
+
- '**/tmp/**/*'
|
12
|
+
- '**/vendor/**/*'
|
13
|
+
NewCops: enable
|
14
|
+
|
15
|
+
# ドキュメントの無い public class を許可する
|
16
|
+
Style/Documentation:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
# special_inside_parentheses (default) と比べて
|
20
|
+
# * 横に長くなりづらい
|
21
|
+
# * メソッド名の長さが変わったときに diff が少ない
|
22
|
+
Layout/FirstArrayElementIndentation:
|
23
|
+
EnforcedStyle: consistent
|
24
|
+
|
25
|
+
# private/protected は一段深くインデントする
|
26
|
+
Layout/IndentationConsistency:
|
27
|
+
EnforcedStyle: indented_internal_methods
|
28
|
+
|
29
|
+
Layout/LineLength:
|
30
|
+
Exclude:
|
31
|
+
- "spec/**/*.rb"
|
32
|
+
Max: 160
|
33
|
+
|
34
|
+
Metrics/BlockLength:
|
35
|
+
Exclude:
|
36
|
+
- "Rakefile"
|
37
|
+
- "**/*.rake"
|
38
|
+
- "spec/**/*.rb"
|
39
|
+
- "Gemfile"
|
40
|
+
- "*.gemspec"
|
41
|
+
|
42
|
+
Metrics/MethodLength:
|
43
|
+
Max: 20
|
44
|
+
Exclude:
|
45
|
+
- "spec/**/*.rb"
|
46
|
+
|
47
|
+
Metrics/ParameterLists:
|
48
|
+
Enabled: false
|
49
|
+
|
50
|
+
Style/BlockComments:
|
51
|
+
Enabled: false
|
52
|
+
|
53
|
+
# namespace 付きのクラスはかなり頻繁に作るので簡単に書きたい。
|
54
|
+
Style/ClassAndModuleChildren:
|
55
|
+
Enabled: false
|
3
56
|
|
4
57
|
Style/FrozenStringLiteralComment:
|
5
58
|
Enabled: false
|
59
|
+
|
60
|
+
# 無指定だと StandardError を rescue するのは常識の範疇なので。
|
61
|
+
Style/RescueStandardError:
|
62
|
+
EnforcedStyle: implicit
|
63
|
+
|
64
|
+
# * 式展開したい場合に書き換えるのが面倒
|
65
|
+
# * 文章ではダブルクォートよりもシングルクォートの方が頻出する
|
66
|
+
# ことから EnforcedStyle: double_quotes 推奨
|
67
|
+
Style/StringLiterals:
|
68
|
+
EnforcedStyle: double_quotes
|
69
|
+
|
70
|
+
# 複数行の場合はケツカンマを入れる(Arrayリテラル)
|
71
|
+
Style/TrailingCommaInArrayLiteral:
|
72
|
+
EnforcedStyleForMultiline: comma
|
73
|
+
|
74
|
+
# 複数行の場合はケツカンマを入れる(Hashリテラル)
|
75
|
+
Style/TrailingCommaInHashLiteral:
|
76
|
+
EnforcedStyleForMultiline: comma
|
77
|
+
|
78
|
+
RSpec/NestedGroups:
|
79
|
+
Max: 5
|
80
|
+
|
81
|
+
RSpec/ContextWording:
|
82
|
+
Enabled: false
|
83
|
+
|
84
|
+
RSpec/ExampleLength:
|
85
|
+
Enabled: false
|
86
|
+
|
87
|
+
RSpec/NamedSubject:
|
88
|
+
Enabled: false
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2023-12-10 21:11:24 UTC using RuboCop version 1.58.0.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 1
|
10
|
+
# This cop supports safe autocorrection (--autocorrect).
|
11
|
+
# Configuration parameters: EnforcedStyle.
|
12
|
+
# SupportedStyles: format, sprintf, percent
|
13
|
+
Style/FormatString:
|
14
|
+
Exclude:
|
15
|
+
- 'lib/git_trend/formatters/text_formatter.rb'
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## v1.4.0 (Mon Mar 13 2023)
|
2
|
+
|
3
|
+
- Drop support of Ruby 2.6 and earlier [41e871e]
|
4
|
+
|
1
5
|
## v1.3.0 (Mon Mar 13 2023)
|
2
6
|
|
3
7
|
- Fix changing HTML structure [8de4920]
|
@@ -24,11 +28,11 @@
|
|
24
28
|
|
25
29
|
## v1.2.4 (Mon Mar 2 2020)
|
26
30
|
|
27
|
-
- Fix languages without
|
31
|
+
- Fix languages without linefeed [ecc63af]
|
28
32
|
|
29
33
|
## v1.2.3 (Mon Mar 2 2020)
|
30
34
|
|
31
|
-
- Fix wrong
|
35
|
+
- Fix wrong integer format of star [dbdc344]
|
32
36
|
|
33
37
|
## v1.2.2 (Sun Dec 15 2019)
|
34
38
|
|
@@ -44,7 +48,7 @@
|
|
44
48
|
|
45
49
|
## v1.1.9 (Sat Mar 16 2017)
|
46
50
|
|
47
|
-
- Fix
|
51
|
+
- Fix language result is zero (#24) [9bb8785]
|
48
52
|
|
49
53
|
## v1.1.8 (Sat Jul 22 2017)
|
50
54
|
|
@@ -98,7 +102,7 @@
|
|
98
102
|
- Update gems [29bc2a9]
|
99
103
|
|
100
104
|
## v0.2.1 (Sun Dec 6 2015)
|
101
|
-
- Fix #6 redundancy line feeds when including
|
105
|
+
- Fix #6 redundancy line feeds when including multi-byte characters [61fd81c]
|
102
106
|
- Update gems [ea5a018]
|
103
107
|
|
104
108
|
## v0.2.0 (Tue Dec 3 2015)
|
@@ -125,7 +129,7 @@
|
|
125
129
|
- Add number option #3 [7cff5b4]
|
126
130
|
|
127
131
|
## v0.1.3
|
128
|
-
- The `
|
132
|
+
- The `description` option of `list` command was changed into the default. [3602272]
|
129
133
|
|
130
134
|
## v0.1.2
|
131
135
|
- Fix travis ci error #24 [6752e1d]
|
@@ -156,7 +160,7 @@ Add a magic comment for ruby1.9 #2
|
|
156
160
|
- Fix lack of addressable gem when installing [54ca275]
|
157
161
|
|
158
162
|
## v0.0.4
|
159
|
-
- Implement
|
163
|
+
- Implement description option [4587e56]
|
160
164
|
|
161
165
|
## v0.0.3
|
162
166
|
- Implement since option [04f1978]
|
data/Gemfile
CHANGED
@@ -2,3 +2,14 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in git-trend.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
gem "rake"
|
7
|
+
gem "rubocop", require: false
|
8
|
+
gem "rubocop-performance", require: false
|
9
|
+
gem "rubocop-rake", require: false
|
10
|
+
gem "rubocop-rspec", require: false
|
11
|
+
|
12
|
+
gem "irb", require: false
|
13
|
+
gem "rspec", require: false
|
14
|
+
gem "simplecov", require: false
|
15
|
+
gem "webmock", require: false
|
data/README.md
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
[](https://coveralls.io/github/rochefort/git-trend?branch=master)
|
3
|
-
[](https://codeclimate.com/github/rochefort/git-trend/maintainability)
|
1
|
+
[](https://codecov.io/gh/rochefort/git-trend)
|
4
2
|
[](http://badge.fury.io/rb/git-trend)
|
5
3
|
|
6
4
|
|
@@ -20,7 +18,7 @@ And this also work as a command line utility.
|
|
20
18
|
|
21
19
|
## Requirements
|
22
20
|
|
23
|
-
Ruby versions is 2.
|
21
|
+
Ruby versions is 2.7 or later.
|
24
22
|
|
25
23
|
## Installation
|
26
24
|
Add this line to your application's Gemfile:
|
data/git-trend.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
lib = File.expand_path("
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require "git_trend/version"
|
4
4
|
|
@@ -17,33 +17,20 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.description = spec.summary
|
18
18
|
spec.homepage = "https://github.com/rochefort/git-trend"
|
19
19
|
spec.license = "MIT"
|
20
|
-
spec.required_ruby_version = ">= 2.
|
20
|
+
spec.required_ruby_version = ">= 2.7.0"
|
21
21
|
|
22
22
|
spec.files = `git ls-files -z`.split("\x0")
|
23
23
|
spec.bindir = "exe"
|
24
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
26
25
|
spec.require_paths = ["lib"]
|
27
26
|
|
28
27
|
spec.post_install_message = install_message
|
29
28
|
|
30
29
|
spec.add_dependency "addressable", "~> 2.8"
|
31
30
|
spec.add_dependency "mb_string"
|
32
|
-
spec.add_dependency "mechanize", ">= 2.8.5", "< 2.
|
31
|
+
spec.add_dependency "mechanize", ">= 2.8.5", "< 2.10.0"
|
33
32
|
spec.add_dependency "thor", ">= 0.20.0", "< 1.3.0"
|
34
33
|
spec.add_dependency "unicode-display_width"
|
35
34
|
|
36
|
-
spec.
|
37
|
-
spec.add_development_dependency "rake", "~> 13.0.0"
|
38
|
-
|
39
|
-
spec.add_development_dependency "rubocop"
|
40
|
-
spec.add_development_dependency "rubocop-performance"
|
41
|
-
spec.add_development_dependency "rubocop-rails"
|
42
|
-
|
43
|
-
spec.add_development_dependency "pry-byebug"
|
44
|
-
spec.add_development_dependency "rspec", "~> 3.12.0"
|
45
|
-
spec.add_development_dependency "simplecov", "~>0.16.1"
|
46
|
-
spec.add_development_dependency "webmock", "~> 3.18.1"
|
47
|
-
|
48
|
-
spec.add_development_dependency "coveralls", "~> 0.8.23"
|
35
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
49
36
|
end
|
data/lib/git-trend.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require "git_trend"
|
1
|
+
require "git_trend" # rubocop:disable Naming/FileName
|
data/lib/git_trend/cli.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require "thor"
|
2
2
|
|
3
|
+
# rubocop:disable Metrics/AbcSize
|
3
4
|
module GitTrend
|
4
5
|
class CLI < Thor
|
5
|
-
map "-v"
|
6
|
-
"--version" => :version
|
6
|
+
map "-v" => :version, "--version" => :version
|
7
7
|
|
8
8
|
default_command :list
|
9
9
|
class_option :verbose, type: :boolean
|
@@ -28,19 +28,20 @@ module GitTrend
|
|
28
28
|
option :help, aliases: "-h", required: false, type: :boolean
|
29
29
|
def list
|
30
30
|
help(:list) && return if options[:help]
|
31
|
+
|
31
32
|
scraper = Scraper.new
|
32
33
|
projects = scraper.get(options[:language], options[:since], options[:number])
|
33
34
|
formatter = Formatter.new(options[:format])
|
34
35
|
formatter.print(projects, enable_description: !!options[:description])
|
35
36
|
rescue => e
|
36
37
|
say "An unexpected #{e.class} has occurred.", :red
|
37
|
-
say e.message unless e.
|
38
|
+
say e.message unless e.instance_of?(e.message) # エラー内容がクラス名の場合は表示しない
|
38
39
|
|
39
40
|
puts exception.backtrace if options[:verbose]
|
40
41
|
end
|
41
42
|
|
42
43
|
desc :languages, "Show selectable languages"
|
43
|
-
option :format,
|
44
|
+
option :format, aliases: "-f", required: false, default: "text", desc: "Choose a formatter as text or json. Enable: [t, text, j, json]"
|
44
45
|
def languages
|
45
46
|
scraper = Scraper.new
|
46
47
|
languages = scraper.languages
|
@@ -49,3 +50,4 @@ module GitTrend
|
|
49
50
|
end
|
50
51
|
end
|
51
52
|
end
|
53
|
+
# rubocop:enable Metrics/AbcSize
|
data/lib/git_trend/formatter.rb
CHANGED
@@ -2,8 +2,8 @@ require "json"
|
|
2
2
|
|
3
3
|
module GitTrend::Formatters
|
4
4
|
class JsonFormatter
|
5
|
-
def print(projects, options)
|
6
|
-
puts projects.map
|
5
|
+
def print(projects, options) # rubocop:disable Lint/UnusedMethodArgument
|
6
|
+
puts projects.map(&:to_h).to_json
|
7
7
|
end
|
8
8
|
|
9
9
|
def print_languages(languages)
|
@@ -2,8 +2,8 @@ require "mb_string"
|
|
2
2
|
|
3
3
|
module GitTrend::Formatters
|
4
4
|
class TextFormatter
|
5
|
-
HEADER_COLUMNS = %w
|
6
|
-
DEFAULT_COLUMNS_SIZES = [3, 40, 10, 6, 20]
|
5
|
+
HEADER_COLUMNS = %w[no. name lang star description].freeze
|
6
|
+
DEFAULT_COLUMNS_SIZES = [3, 40, 10, 6, 20].freeze
|
7
7
|
|
8
8
|
def print(projects, options)
|
9
9
|
if projects.empty?
|
@@ -27,6 +27,7 @@ module GitTrend::Formatters
|
|
27
27
|
end
|
28
28
|
|
29
29
|
private
|
30
|
+
|
30
31
|
def render_zero
|
31
32
|
puts "It looks like we don’t have any trending repositories."
|
32
33
|
puts
|
@@ -42,7 +43,7 @@ module GitTrend::Formatters
|
|
42
43
|
|
43
44
|
def rule_max_description_size
|
44
45
|
terminal_width, _terminal_height = detect_terminal_size
|
45
|
-
description_width = terminal_width - @columns_sizes[0..-2].
|
46
|
+
description_width = terminal_width - @columns_sizes[0..-2].sum - (@columns_sizes.size - 1)
|
46
47
|
if description_width >= DEFAULT_COLUMNS_SIZES.last
|
47
48
|
@columns_sizes[-1] = description_width
|
48
49
|
else
|
@@ -71,6 +72,7 @@ module GitTrend::Formatters
|
|
71
72
|
puts fmt % @columns_sizes.map { |column| "-" * column }
|
72
73
|
end
|
73
74
|
|
75
|
+
# rubocop:disable Metrics/AbcSize
|
74
76
|
def render_body(projects)
|
75
77
|
f = @columns_sizes
|
76
78
|
fmt = "%#{f[0]}s %-#{f[1]}s %-#{f[2]}s %#{f[3]}s"
|
@@ -87,12 +89,14 @@ module GitTrend::Formatters
|
|
87
89
|
puts result.rstrip
|
88
90
|
end
|
89
91
|
end
|
92
|
+
# rubocop:enable Metrics/AbcSize
|
90
93
|
|
91
94
|
def render_footer
|
92
95
|
puts
|
93
96
|
end
|
94
97
|
|
95
98
|
# https://github.com/cldwalker/hirb/blob/master/lib/hirb/util.rb#L61-71
|
99
|
+
# rubocop:disable all
|
96
100
|
def detect_terminal_size
|
97
101
|
if (ENV["COLUMNS"] =~ /^\d+$/) && (ENV["LINES"] =~ /^\d+$/)
|
98
102
|
[ENV["COLUMNS"].to_i, ENV["LINES"].to_i]
|
@@ -104,6 +108,7 @@ module GitTrend::Formatters
|
|
104
108
|
rescue
|
105
109
|
nil
|
106
110
|
end
|
111
|
+
# rubocop:enable all
|
107
112
|
|
108
113
|
def command_exists?(command)
|
109
114
|
ENV["PATH"].split(File::PATH_SEPARATOR).any? { |d| File.exist? File.join(d, command) }
|
data/lib/git_trend/scraper.rb
CHANGED
@@ -3,8 +3,8 @@ require "addressable/uri"
|
|
3
3
|
|
4
4
|
module GitTrend
|
5
5
|
class Scraper
|
6
|
-
BASE_HOST = "https://github.com"
|
7
|
-
BASE_URL = "#{BASE_HOST}/trending"
|
6
|
+
BASE_HOST = "https://github.com".freeze
|
7
|
+
BASE_URL = "#{BASE_HOST}/trending".freeze
|
8
8
|
|
9
9
|
def initialize
|
10
10
|
@agent = Mechanize.new
|
@@ -28,19 +28,19 @@ module GitTrend
|
|
28
28
|
end
|
29
29
|
|
30
30
|
private
|
31
|
+
|
31
32
|
def generate_url(language, since)
|
32
33
|
url = BASE_URL.dup
|
33
34
|
url << "/#{language}" if language
|
34
35
|
uri = Addressable::URI.parse(url)
|
35
36
|
since = convert_url_param_since(since)
|
36
|
-
if since
|
37
|
-
uri.query_values = { since: since }.delete_if { |_k, v| v.nil? }
|
38
|
-
end
|
37
|
+
uri.query_values = { since: since }.compact if since
|
39
38
|
uri.to_s
|
40
39
|
end
|
41
40
|
|
42
41
|
def convert_url_param_since(since)
|
43
42
|
return unless since
|
43
|
+
|
44
44
|
case since.to_sym
|
45
45
|
when :d, :day, :daily then "daily"
|
46
46
|
when :w, :week, :weekly then "weekly"
|
@@ -49,11 +49,12 @@ module GitTrend
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
+
# rubocop:disable Metrics/AbcSize
|
52
53
|
def generate_project(page)
|
53
54
|
page.search(".Box-row").map do |content|
|
54
55
|
icon_area = content.search(".f6.color-fg-muted.mt-2")
|
55
56
|
Project.new(
|
56
|
-
name: content.search("h2 a").attr("href").to_s.
|
57
|
+
name: content.search("h2 a").attr("href").to_s.delete_prefix("/"),
|
57
58
|
description: content.search(".col-9.color-fg-muted.my-1.pr-4").text.strip,
|
58
59
|
lang: content.search('span[itemprop="programmingLanguage"]').text.strip,
|
59
60
|
all_star_count: comma_to_i(icon_area.search("a:has(svg.octicon-star)").text.strip),
|
@@ -62,6 +63,7 @@ module GitTrend
|
|
62
63
|
)
|
63
64
|
end
|
64
65
|
end
|
66
|
+
# rubocop:enable Metrics/AbcSize
|
65
67
|
|
66
68
|
def comma_to_i(obj)
|
67
69
|
obj.to_s.delete(",").to_i
|
data/lib/git_trend/version.rb
CHANGED
data/spec/git_trend/cli_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# rubocop:disable Style/TrailingWhitespace
|
2
|
-
include GitTrend
|
3
1
|
RSpec.describe GitTrend::CLI do
|
2
|
+
include GitTrend
|
3
|
+
|
4
4
|
shared_examples "since daily ranking" do |since|
|
5
5
|
it "display daily ranking" do
|
6
6
|
expect { cli.invoke(:list, [], since: since, description: false) }.to output(dummy_result_without_description).to_stdout
|
@@ -25,23 +25,27 @@ RSpec.describe GitTrend::CLI do
|
|
25
25
|
describe "with -n option" do
|
26
26
|
context "with 3" do
|
27
27
|
before { stub_request_get("trending") }
|
28
|
+
|
28
29
|
let(:number) { 3 }
|
30
|
+
|
29
31
|
it "display top 3 daily ranking" do
|
30
|
-
res = <<-
|
32
|
+
res = <<-OUTPUT.unindent
|
31
33
|
|No. Name Lang Star
|
32
34
|
|--- ---------------------------------------- ---------------- ------
|
33
35
|
| 1 linexjlin/GPTs 445
|
34
36
|
| 2 ml-explore/mlx-examples Python 161
|
35
37
|
| 3 PRIS-CV/DemoFusion Jupyter Notebook 169
|
36
38
|
|
37
|
-
|
39
|
+
OUTPUT
|
38
40
|
expect { cli.invoke(:list, [], number: number, description: false) }.to output(res).to_stdout
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
42
44
|
context "with over 25" do
|
43
45
|
before { stub_request_get("trending") }
|
46
|
+
|
44
47
|
let(:number) { 26 }
|
48
|
+
|
45
49
|
it "display daily ranking" do
|
46
50
|
expect { cli.invoke(:list, [], number: number, description: false) }.to output(dummy_result_without_description).to_stdout
|
47
51
|
end
|
@@ -51,10 +55,11 @@ RSpec.describe GitTrend::CLI do
|
|
51
55
|
describe "with -l option" do
|
52
56
|
context "with ruby" do
|
53
57
|
before { stub_request_get("trending/#{language}") }
|
58
|
+
|
54
59
|
let(:language) { "ruby" }
|
55
60
|
|
56
61
|
it "display daily ranking by language" do
|
57
|
-
res = <<-
|
62
|
+
res = <<-OUTPUT.unindent
|
58
63
|
|No. Name Lang Star
|
59
64
|
|--- ---------------------------------------- ---------- ------
|
60
65
|
| 1 greatghoul/remote-working Ruby 34
|
@@ -83,20 +88,21 @@ RSpec.describe GitTrend::CLI do
|
|
83
88
|
| 24 chef/chef Ruby 0
|
84
89
|
| 25 instructure/canvas-lms Ruby 0
|
85
90
|
|
86
|
-
|
91
|
+
OUTPUT
|
87
92
|
expect { cli.invoke(:list, [], language: language, description: false) }.to output(res).to_stdout
|
88
93
|
end
|
89
94
|
end
|
90
95
|
|
91
96
|
context "with alloy : when trending is nothing" do
|
92
97
|
before { stub_request_get("trending/#{language}") }
|
98
|
+
|
93
99
|
let(:language) { "alloy" }
|
94
100
|
|
95
101
|
it "display the 0cases message" do
|
96
|
-
res = <<-
|
102
|
+
res = <<-OUTPUT.unindent
|
97
103
|
|It looks like we don’t have any trending repositories.
|
98
104
|
|
99
|
-
|
105
|
+
OUTPUT
|
100
106
|
expect { cli.invoke(:list, [], language: language, description: false) }.to output(res).to_stdout
|
101
107
|
end
|
102
108
|
end
|
@@ -105,11 +111,13 @@ RSpec.describe GitTrend::CLI do
|
|
105
111
|
describe "with -s option" do
|
106
112
|
context "with no option" do
|
107
113
|
before { stub_request_get("trending?since=") }
|
114
|
+
|
108
115
|
include_examples "since daily ranking", ""
|
109
116
|
end
|
110
117
|
|
111
118
|
describe "since daily" do
|
112
119
|
before { stub_request_get("trending?since=daily") }
|
120
|
+
|
113
121
|
context "with d" do
|
114
122
|
include_examples "since daily ranking", "d"
|
115
123
|
end
|
@@ -125,6 +133,7 @@ RSpec.describe GitTrend::CLI do
|
|
125
133
|
|
126
134
|
describe "since weekly" do
|
127
135
|
before { stub_request_get("trending?since=weekly") }
|
136
|
+
|
128
137
|
context "with w" do
|
129
138
|
include_examples "since weekly ranking", "w"
|
130
139
|
end
|
@@ -140,6 +149,7 @@ RSpec.describe GitTrend::CLI do
|
|
140
149
|
|
141
150
|
describe "since monthly" do
|
142
151
|
before { stub_request_get("trending?since=monthly") }
|
152
|
+
|
143
153
|
context "with m" do
|
144
154
|
include_examples "since monthly ranking", "m"
|
145
155
|
end
|
@@ -193,11 +203,12 @@ RSpec.describe GitTrend::CLI do
|
|
193
203
|
describe "with -l and -s option" do
|
194
204
|
context "with ruby and weekly" do
|
195
205
|
before { stub_request_get("trending/#{language}?since=#{since}") }
|
206
|
+
|
196
207
|
let(:language) { "ruby" }
|
197
208
|
let(:since) { "weekly" }
|
198
209
|
|
199
210
|
it "display weekly ranking by language" do
|
200
|
-
res = <<-
|
211
|
+
res = <<-OUTPUT.unindent
|
201
212
|
|No. Name Lang Star
|
202
213
|
|--- ---------------------------------------- ---------- ------
|
203
214
|
| 1 mastodon/mastodon Ruby 115
|
@@ -226,7 +237,7 @@ RSpec.describe GitTrend::CLI do
|
|
226
237
|
| 24 rubocop/rubocop Ruby 10
|
227
238
|
| 25 paper-trail-gem/paper_trail Ruby 3
|
228
239
|
|
229
|
-
|
240
|
+
OUTPUT
|
230
241
|
expect { cli.invoke(:list, [], language: language, since: since, description: false) }.to output(res).to_stdout
|
231
242
|
end
|
232
243
|
end
|
@@ -235,16 +246,18 @@ RSpec.describe GitTrend::CLI do
|
|
235
246
|
|
236
247
|
describe "#languages" do
|
237
248
|
before { stub_request_get("trending") }
|
249
|
+
|
238
250
|
let(:cli) { CLI.new }
|
239
251
|
|
240
252
|
context "with no option" do
|
241
253
|
it "display languages" do
|
242
|
-
expect { cli.languages }.to output(
|
254
|
+
expect { cli.languages }.to output(include("C++", "HTML", "Ruby")).to_stdout
|
243
255
|
end
|
244
256
|
end
|
245
257
|
end
|
246
258
|
|
247
259
|
private
|
260
|
+
|
248
261
|
def stub_request_get(stub_url_path, stub_file_name = nil)
|
249
262
|
url = Scraper::BASE_HOST.dup
|
250
263
|
url << "/#{stub_url_path}" if stub_url_path
|
@@ -254,11 +267,12 @@ RSpec.describe GitTrend::CLI do
|
|
254
267
|
.to_return(
|
255
268
|
status: 200,
|
256
269
|
headers: { content_type: "text/html" },
|
257
|
-
body: load_http_stub(stub_file)
|
270
|
+
body: load_http_stub(stub_file)
|
271
|
+
)
|
258
272
|
end
|
259
273
|
|
260
274
|
def dummy_result_without_description
|
261
|
-
<<-
|
275
|
+
<<-OUTPUT.unindent
|
262
276
|
|No. Name Lang Star
|
263
277
|
|--- ------------------------------------------ ---------------- ------
|
264
278
|
| 1 linexjlin/GPTs 445
|
@@ -287,11 +301,11 @@ RSpec.describe GitTrend::CLI do
|
|
287
301
|
| 24 ytdl-org/youtube-dl Python 24
|
288
302
|
| 25 dunglas/frankenphp Go 53
|
289
303
|
|
290
|
-
|
304
|
+
OUTPUT
|
291
305
|
end
|
292
306
|
|
293
307
|
def dummy_result_no_options
|
294
|
-
<<-
|
308
|
+
<<-OUTPUT.unindent
|
295
309
|
|No. Name Lang Star Description
|
296
310
|
|--- ------------------------------------------ ---------------- ------ ---------------------------------------------------------------------
|
297
311
|
| 1 linexjlin/GPTs 445 leaked prompts of GPTs
|
@@ -320,11 +334,11 @@ RSpec.describe GitTrend::CLI do
|
|
320
334
|
| 24 ytdl-org/youtube-dl Python 24 Command-line program to download videos from YouTube.com and other...
|
321
335
|
| 25 dunglas/frankenphp Go 53 The modern PHP app server
|
322
336
|
|
323
|
-
|
337
|
+
OUTPUT
|
324
338
|
end
|
325
339
|
|
326
340
|
def dummy_weekly_result
|
327
|
-
<<-
|
341
|
+
<<-OUTPUT.unindent
|
328
342
|
|No. Name Lang Star
|
329
343
|
|--- ------------------------------------------ ---------------- ------
|
330
344
|
| 1 LC044/WeChatMsg Python 10719
|
@@ -353,11 +367,11 @@ RSpec.describe GitTrend::CLI do
|
|
353
367
|
| 24 coolsnowwolf/lede C 132
|
354
368
|
| 25 QwenLM/Qwen Python 377
|
355
369
|
|
356
|
-
|
370
|
+
OUTPUT
|
357
371
|
end
|
358
372
|
|
359
373
|
def dummy_monthly_result
|
360
|
-
<<-
|
374
|
+
<<-OUTPUT.unindent
|
361
375
|
|No. Name Lang Star
|
362
376
|
|--- ---------------------------------------- ---------------- ------
|
363
377
|
| 1 SawyerHood/draw-a-ui TypeScript 11761
|
@@ -386,6 +400,6 @@ RSpec.describe GitTrend::CLI do
|
|
386
400
|
| 24 SillyTavern/SillyTavern JavaScript 1566
|
387
401
|
| 25 1Panel-dev/1Panel Go 1950
|
388
402
|
|
389
|
-
|
403
|
+
OUTPUT
|
390
404
|
end
|
391
405
|
end
|
@@ -1,17 +1,20 @@
|
|
1
|
-
include GitTrend
|
1
|
+
include GitTrend # rubocop:disable Style/MixinUsage
|
2
2
|
RSpec.describe GitTrend::Scraper do
|
3
3
|
let(:scraper) { Scraper.new }
|
4
4
|
|
5
5
|
describe "settings" do
|
6
|
+
subject { scraper.instance_variable_get(:@agent) }
|
7
|
+
|
6
8
|
before do
|
7
9
|
allow(ENV).to receive(:[]).with("http_proxy").and_return("http://#{proxy_user}:#{proxy_pass}@#{proxy_addr}:#{proxy_port}")
|
8
10
|
end
|
11
|
+
|
9
12
|
let(:proxy_addr) { "192.168.1.99" }
|
10
13
|
let(:proxy_port) { 9999 }
|
11
14
|
let(:proxy_user) { "proxy_user" }
|
12
15
|
let(:proxy_pass) { "proxy_pass" }
|
13
|
-
|
14
|
-
it "
|
16
|
+
|
17
|
+
it "uses proxy settings of ENV" do
|
15
18
|
aggregate_failures do
|
16
19
|
expect(subject.proxy_addr).to eq proxy_addr
|
17
20
|
expect(subject.proxy_user).to eq proxy_user
|
@@ -28,6 +31,7 @@ RSpec.describe GitTrend::Scraper do
|
|
28
31
|
stub_request(:get, Scraper::BASE_URL)
|
29
32
|
.to_return(status: 500, body: "[]")
|
30
33
|
end
|
34
|
+
|
31
35
|
it { expect { scraper.get }.to raise_error(Exception) }
|
32
36
|
end
|
33
37
|
end
|
data/spec/git_trend_spec.rb
CHANGED
@@ -1,81 +1,97 @@
|
|
1
1
|
RSpec.describe GitTrend do
|
2
|
+
include described_class
|
3
|
+
let(:scraper_mock) { instance_double(Scraper) }
|
4
|
+
|
2
5
|
before do
|
6
|
+
allow(Scraper).to receive(:new).and_return(scraper_mock)
|
3
7
|
stub_request(:get, /.*/)
|
4
8
|
.to_return(status: 200, headers: { content_type: "text/html" }, body: load_http_stub("trending"))
|
5
9
|
end
|
6
10
|
|
7
11
|
describe "#get" do
|
8
|
-
context "
|
9
|
-
|
10
|
-
|
11
|
-
GitTrend.get
|
12
|
+
context "normal" do
|
13
|
+
before do
|
14
|
+
allow(scraper_mock).to receive(:get)
|
12
15
|
end
|
13
|
-
end
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
17
|
+
context "without options" do
|
18
|
+
it "Scraper#get call without options" do
|
19
|
+
described_class.get
|
20
|
+
expect(scraper_mock).to have_received(:get).with(no_args)
|
21
|
+
end
|
19
22
|
end
|
20
|
-
end
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
context "parameter is 'ruby'" do
|
25
|
+
it "Scraper#get call with 'ruby'" do
|
26
|
+
described_class.get("ruby")
|
27
|
+
expect(scraper_mock).to have_received(:get).with("ruby")
|
28
|
+
end
|
26
29
|
end
|
27
|
-
end
|
28
30
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
31
|
+
context "parameter is :ruby" do
|
32
|
+
it "Scraper#get call with :ruby" do
|
33
|
+
described_class.get(:ruby)
|
34
|
+
expect(scraper_mock).to have_received(:get).with(:ruby)
|
35
|
+
end
|
33
36
|
end
|
34
|
-
end
|
35
37
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
context "parameter is since: :weekly" do
|
39
|
+
it "Scraper#get call with [nil, :weekly]" do
|
40
|
+
described_class.get(since: :weekly)
|
41
|
+
expect(scraper_mock).to have_received(:get).with(nil, :weekly)
|
42
|
+
end
|
40
43
|
end
|
41
|
-
end
|
42
44
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
45
|
+
context "parameter is since: :week" do
|
46
|
+
it "Scraper#get call with [nil, :week]" do
|
47
|
+
described_class.get(since: :week)
|
48
|
+
expect(scraper_mock).to have_received(:get).with(nil, :week)
|
49
|
+
end
|
47
50
|
end
|
48
|
-
end
|
49
51
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
52
|
+
context "parameter is since: :w" do
|
53
|
+
it "Scraper#get call with [nil, :w]" do
|
54
|
+
described_class.get(since: :w)
|
55
|
+
expect(scraper_mock).to have_received(:get).with(nil, :w)
|
56
|
+
end
|
54
57
|
end
|
55
|
-
end
|
56
58
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
59
|
+
context "parameters are 'ruby', 'weekly'" do
|
60
|
+
it "Scraper#get call with ['ruby', 'weekly']" do
|
61
|
+
described_class.get("ruby", "weekly")
|
62
|
+
expect(scraper_mock).to have_received(:get).with("ruby", "weekly")
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context "parameters are :ruby, :weekly" do
|
67
|
+
it "Scraper#get call with [:ruby, :weekly]" do
|
68
|
+
described_class.get(:ruby, :weekly)
|
69
|
+
expect(scraper_mock).to have_received(:get).with(:ruby, :weekly)
|
70
|
+
end
|
61
71
|
end
|
62
|
-
end
|
63
72
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
73
|
+
context "parameters are language: :ruby, since: :weekly" do
|
74
|
+
it "Scraper#get call with [:ruby, :weekly]" do
|
75
|
+
described_class.get(language: :ruby, since: :weekly)
|
76
|
+
expect(scraper_mock).to have_received(:get).with(:ruby, :weekly)
|
77
|
+
end
|
68
78
|
end
|
69
79
|
end
|
70
80
|
|
71
|
-
context "
|
72
|
-
|
81
|
+
context "abnormal" do
|
82
|
+
context "when too many parameters" do
|
83
|
+
it { expect { described_class.get("ruby", "weekly", "many_params") }.to raise_error(Exception) }
|
84
|
+
end
|
73
85
|
end
|
74
86
|
|
75
87
|
describe "#languages" do
|
88
|
+
before do
|
89
|
+
allow(scraper_mock).to receive(:languages)
|
90
|
+
end
|
91
|
+
|
76
92
|
it "Scraper#languages call" do
|
77
|
-
|
78
|
-
|
93
|
+
described_class.languages
|
94
|
+
expect(scraper_mock).to have_received(:languages).with(no_args)
|
79
95
|
end
|
80
96
|
end
|
81
97
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -14,25 +14,14 @@
|
|
14
14
|
# users commonly want.
|
15
15
|
#
|
16
16
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
17
|
-
# require "coveralls"
|
18
|
-
# Coveralls.wear!
|
19
|
-
|
20
17
|
require "simplecov"
|
21
|
-
require "webmock/rspec"
|
22
|
-
require "git_trend"
|
23
|
-
|
24
|
-
# require "codeclimate-test-reporter"
|
25
|
-
dir = File.join(ENV["CIRCLE_ARTIFACTS"] || "coverage")
|
26
|
-
SimpleCov.coverage_dir(dir)
|
27
18
|
SimpleCov.start do
|
28
19
|
add_filter "/spec/"
|
29
|
-
|
30
|
-
formatter SimpleCov::Formatter::MultiFormatter.new([
|
31
|
-
SimpleCov::Formatter::HTMLFormatter,
|
32
|
-
# Coveralls::SimpleCov::Formatter
|
33
|
-
])
|
34
20
|
end
|
35
21
|
|
22
|
+
require "webmock/rspec"
|
23
|
+
require "git_trend"
|
24
|
+
|
36
25
|
RSpec.configure do |config|
|
37
26
|
config.expect_with :rspec do |expectations|
|
38
27
|
expectations.syntax = :expect
|
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: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- rochefort
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -47,7 +47,7 @@ dependencies:
|
|
47
47
|
version: 2.8.5
|
48
48
|
- - "<"
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: 2.
|
50
|
+
version: 2.10.0
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -57,7 +57,7 @@ dependencies:
|
|
57
57
|
version: 2.8.5
|
58
58
|
- - "<"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: 2.
|
60
|
+
version: 2.10.0
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: thor
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,146 +92,6 @@ dependencies:
|
|
92
92
|
- - ">="
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: '0'
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: bundler
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
98
|
-
requirements:
|
99
|
-
- - ">="
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
102
|
-
type: :development
|
103
|
-
prerelease: false
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
requirements:
|
106
|
-
- - ">="
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
version: '0'
|
109
|
-
- !ruby/object:Gem::Dependency
|
110
|
-
name: rake
|
111
|
-
requirement: !ruby/object:Gem::Requirement
|
112
|
-
requirements:
|
113
|
-
- - "~>"
|
114
|
-
- !ruby/object:Gem::Version
|
115
|
-
version: 13.0.0
|
116
|
-
type: :development
|
117
|
-
prerelease: false
|
118
|
-
version_requirements: !ruby/object:Gem::Requirement
|
119
|
-
requirements:
|
120
|
-
- - "~>"
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
version: 13.0.0
|
123
|
-
- !ruby/object:Gem::Dependency
|
124
|
-
name: rubocop
|
125
|
-
requirement: !ruby/object:Gem::Requirement
|
126
|
-
requirements:
|
127
|
-
- - ">="
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
version: '0'
|
130
|
-
type: :development
|
131
|
-
prerelease: false
|
132
|
-
version_requirements: !ruby/object:Gem::Requirement
|
133
|
-
requirements:
|
134
|
-
- - ">="
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
version: '0'
|
137
|
-
- !ruby/object:Gem::Dependency
|
138
|
-
name: rubocop-performance
|
139
|
-
requirement: !ruby/object:Gem::Requirement
|
140
|
-
requirements:
|
141
|
-
- - ">="
|
142
|
-
- !ruby/object:Gem::Version
|
143
|
-
version: '0'
|
144
|
-
type: :development
|
145
|
-
prerelease: false
|
146
|
-
version_requirements: !ruby/object:Gem::Requirement
|
147
|
-
requirements:
|
148
|
-
- - ">="
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: '0'
|
151
|
-
- !ruby/object:Gem::Dependency
|
152
|
-
name: rubocop-rails
|
153
|
-
requirement: !ruby/object:Gem::Requirement
|
154
|
-
requirements:
|
155
|
-
- - ">="
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: '0'
|
158
|
-
type: :development
|
159
|
-
prerelease: false
|
160
|
-
version_requirements: !ruby/object:Gem::Requirement
|
161
|
-
requirements:
|
162
|
-
- - ">="
|
163
|
-
- !ruby/object:Gem::Version
|
164
|
-
version: '0'
|
165
|
-
- !ruby/object:Gem::Dependency
|
166
|
-
name: pry-byebug
|
167
|
-
requirement: !ruby/object:Gem::Requirement
|
168
|
-
requirements:
|
169
|
-
- - ">="
|
170
|
-
- !ruby/object:Gem::Version
|
171
|
-
version: '0'
|
172
|
-
type: :development
|
173
|
-
prerelease: false
|
174
|
-
version_requirements: !ruby/object:Gem::Requirement
|
175
|
-
requirements:
|
176
|
-
- - ">="
|
177
|
-
- !ruby/object:Gem::Version
|
178
|
-
version: '0'
|
179
|
-
- !ruby/object:Gem::Dependency
|
180
|
-
name: rspec
|
181
|
-
requirement: !ruby/object:Gem::Requirement
|
182
|
-
requirements:
|
183
|
-
- - "~>"
|
184
|
-
- !ruby/object:Gem::Version
|
185
|
-
version: 3.12.0
|
186
|
-
type: :development
|
187
|
-
prerelease: false
|
188
|
-
version_requirements: !ruby/object:Gem::Requirement
|
189
|
-
requirements:
|
190
|
-
- - "~>"
|
191
|
-
- !ruby/object:Gem::Version
|
192
|
-
version: 3.12.0
|
193
|
-
- !ruby/object:Gem::Dependency
|
194
|
-
name: simplecov
|
195
|
-
requirement: !ruby/object:Gem::Requirement
|
196
|
-
requirements:
|
197
|
-
- - "~>"
|
198
|
-
- !ruby/object:Gem::Version
|
199
|
-
version: 0.16.1
|
200
|
-
type: :development
|
201
|
-
prerelease: false
|
202
|
-
version_requirements: !ruby/object:Gem::Requirement
|
203
|
-
requirements:
|
204
|
-
- - "~>"
|
205
|
-
- !ruby/object:Gem::Version
|
206
|
-
version: 0.16.1
|
207
|
-
- !ruby/object:Gem::Dependency
|
208
|
-
name: webmock
|
209
|
-
requirement: !ruby/object:Gem::Requirement
|
210
|
-
requirements:
|
211
|
-
- - "~>"
|
212
|
-
- !ruby/object:Gem::Version
|
213
|
-
version: 3.18.1
|
214
|
-
type: :development
|
215
|
-
prerelease: false
|
216
|
-
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
requirements:
|
218
|
-
- - "~>"
|
219
|
-
- !ruby/object:Gem::Version
|
220
|
-
version: 3.18.1
|
221
|
-
- !ruby/object:Gem::Dependency
|
222
|
-
name: coveralls
|
223
|
-
requirement: !ruby/object:Gem::Requirement
|
224
|
-
requirements:
|
225
|
-
- - "~>"
|
226
|
-
- !ruby/object:Gem::Version
|
227
|
-
version: 0.8.23
|
228
|
-
type: :development
|
229
|
-
prerelease: false
|
230
|
-
version_requirements: !ruby/object:Gem::Requirement
|
231
|
-
requirements:
|
232
|
-
- - "~>"
|
233
|
-
- !ruby/object:Gem::Version
|
234
|
-
version: 0.8.23
|
235
95
|
description: CLI-Based tool that show Trending repository on github
|
236
96
|
email:
|
237
97
|
- terasawan@gmail.com
|
@@ -240,13 +100,13 @@ executables:
|
|
240
100
|
extensions: []
|
241
101
|
extra_rdoc_files: []
|
242
102
|
files:
|
243
|
-
- ".coveralls.yml"
|
244
103
|
- ".github/dependabot.yml"
|
104
|
+
- ".github/workflows/ci.yml"
|
245
105
|
- ".github/workflows/codeql.yml"
|
246
106
|
- ".gitignore"
|
247
107
|
- ".rspec"
|
248
108
|
- ".rubocop.yml"
|
249
|
-
- ".
|
109
|
+
- ".rubocop_todo.yml"
|
250
110
|
- CHANGELOG.md
|
251
111
|
- Gemfile
|
252
112
|
- LICENSE.txt
|
@@ -282,7 +142,8 @@ files:
|
|
282
142
|
homepage: https://github.com/rochefort/git-trend
|
283
143
|
licenses:
|
284
144
|
- MIT
|
285
|
-
metadata:
|
145
|
+
metadata:
|
146
|
+
rubygems_mfa_required: 'true'
|
286
147
|
post_install_message: "\U0001F37A Thanks for installing!"
|
287
148
|
rdoc_options: []
|
288
149
|
require_paths:
|
@@ -291,7 +152,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
291
152
|
requirements:
|
292
153
|
- - ">="
|
293
154
|
- !ruby/object:Gem::Version
|
294
|
-
version: 2.
|
155
|
+
version: 2.7.0
|
295
156
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
296
157
|
requirements:
|
297
158
|
- - ">="
|
@@ -302,17 +163,4 @@ rubygems_version: 3.4.10
|
|
302
163
|
signing_key:
|
303
164
|
specification_version: 4
|
304
165
|
summary: CLI-Based tool that show Trending repository on github
|
305
|
-
test_files:
|
306
|
-
- spec/fixtures/trending/alloy
|
307
|
-
- spec/fixtures/trending/index
|
308
|
-
- spec/fixtures/trending/ruby
|
309
|
-
- spec/fixtures/trending/ruby?since=weekly
|
310
|
-
- spec/fixtures/trending?since=
|
311
|
-
- spec/fixtures/trending?since=daily
|
312
|
-
- spec/fixtures/trending?since=monthly
|
313
|
-
- spec/fixtures/trending?since=monthly.html
|
314
|
-
- spec/fixtures/trending?since=weekly
|
315
|
-
- spec/git_trend/cli_spec.rb
|
316
|
-
- spec/git_trend/scraper_spec.rb
|
317
|
-
- spec/git_trend_spec.rb
|
318
|
-
- spec/spec_helper.rb
|
166
|
+
test_files: []
|
data/.coveralls.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
service_name: travis-ci
|
data/.travis.yml
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
env:
|
2
|
-
global:
|
3
|
-
- CC_TEST_REPORTER_ID=2eb7b0f374e08e909106152c788cb32d24d6440cd41c14fe971a40a8ec971ca2
|
4
|
-
language: ruby
|
5
|
-
rvm:
|
6
|
-
- 2.6.9
|
7
|
-
- 2.7.5
|
8
|
-
- 3.0.3
|
9
|
-
before_script:
|
10
|
-
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
11
|
-
- chmod +x ./cc-test-reporter
|
12
|
-
- ./cc-test-reporter before-build
|
13
|
-
script:
|
14
|
-
- bundle exec rspec
|
15
|
-
after_script:
|
16
|
-
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|