git-trend 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
[![
|
2
|
-
[![Coverage Status](https://coveralls.io/repos/github/rochefort/git-trend/badge.svg?branch=master)](https://coveralls.io/github/rochefort/git-trend?branch=master)
|
3
|
-
[![Code Climate](https://img.shields.io/codeclimate/maintainability/rochefort/git-trend.svg)](https://codeclimate.com/github/rochefort/git-trend/maintainability)
|
1
|
+
[![codecov](https://codecov.io/gh/rochefort/git-trend/graph/badge.svg?token=rbh4fONhKx)](https://codecov.io/gh/rochefort/git-trend)
|
4
2
|
[![Gem Version](http://img.shields.io/gem/v/git-trend.svg?style=flat)](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
|