hiddengems 0.1.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/exe/hiddengems.rb +17 -16
- data/hiddengems.gemspec +1 -0
- data/lib/hiddengems/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00f25eebd3d13ccf280ea8b5868905c3dec6dfc7033b890f8ad6ece71b88e5b8
|
4
|
+
data.tar.gz: 606dc74c1f9b1372d85bb9690d163ce5bdb8552c750d8ad82918385aeaa910ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adeed64f5fe52b2358127b6f84740fb99deff4a3b6578243fd9bdf4d7f1e266cfc796de44d3faf0be7fd4492b7cc1a48d2ee5ff0ec1a92f6c7aca97c3600e361
|
7
|
+
data.tar.gz: c19a760280479a2624e84420a93cf0193677a1f0b943cb1c4765e782a0119a560880d5e6e96f2e2049d663035f4b306ec6aa2bec9250c816e55881813bcbd0c2
|
data/exe/hiddengems.rb
CHANGED
@@ -5,6 +5,7 @@ require 'faraday'
|
|
5
5
|
require 'ostruct'
|
6
6
|
require 'tty-table'
|
7
7
|
require 'pry-rescue'
|
8
|
+
require 'linear_regression_trend'
|
8
9
|
|
9
10
|
searchTerm = ARGV[0]
|
10
11
|
|
@@ -39,7 +40,12 @@ module GemEntry
|
|
39
40
|
res.push(version.to_h)
|
40
41
|
nextRelease = version.publishedDate
|
41
42
|
}
|
42
|
-
res
|
43
|
+
res.collect{|each|each[:downloadsPerDay]}
|
44
|
+
end
|
45
|
+
|
46
|
+
def downloadSlope
|
47
|
+
slope = LinearRegressionTrend::Calculator.new(versionDownloadHistory).slope
|
48
|
+
slope.nan? ? 0 : slope
|
43
49
|
end
|
44
50
|
end
|
45
51
|
|
@@ -75,42 +81,37 @@ until curpage == 0
|
|
75
81
|
gem
|
76
82
|
}
|
77
83
|
gems += gemPage
|
84
|
+
puts "Found +#{gemPage.size} gems (total #{gems.size})"
|
78
85
|
curpage = ((gemPage.size < 30) ? 0 : curpage.next)
|
86
|
+
puts "looking for more..." if curpage != 0
|
79
87
|
end
|
80
88
|
|
81
89
|
|
82
|
-
puts "Search term #{searchTerm} returned #{gems.size} hits"
|
83
|
-
|
84
|
-
# Things we wanna see sorted:
|
85
|
-
# + number of versions
|
86
|
-
# + date of last version
|
87
|
-
# + avg date of all versions
|
88
|
-
# + number of downloads
|
89
|
-
# - downloads per day per version
|
90
|
-
# - average downloads per day
|
91
|
-
# - last downloads per day
|
92
|
-
# - velocity of downloads per day per version
|
93
|
-
|
90
|
+
puts "Search term '#{searchTerm}' returned #{gems.size} hits"
|
94
91
|
|
95
92
|
data = Hash.new
|
96
93
|
data[:by_downloads] = gems.sort {|a,b| b.downloads <=> a.downloads}.collect {|each| "#{each.name} (#{each.downloads})"}
|
97
94
|
data[:by_versions] = gems.sort {|a,b| b.totalVersions <=> a.totalVersions}.collect {|each| "#{each.name} (#{each.totalVersions})"}
|
98
95
|
data[:by_latest_version_date] = gems.sort {|a,b| b.latestVersionDate <=> a.latestVersionDate}.collect {|each| "#{each.name} (#{each.latestVersionDate.year})"}
|
99
96
|
data[:by_avg_version_date] = gems.sort {|a,b| b.avgDateOfAllVersions<=> a.avgDateOfAllVersions}.collect {|each| "#{each.name} (#{each.avgDateOfAllVersions.year})"}
|
97
|
+
data[:by_download_slope] = gems.sort {|a,b| b.downloadSlope <=> a.downloadSlope}.collect {|each| "#{each.name} (#{each.downloadSlope.round})"}
|
100
98
|
report = Array.new
|
99
|
+
rank = 0
|
101
100
|
gems.each_index {|index|
|
102
101
|
record = Hash.new
|
103
|
-
[:
|
102
|
+
record[:rank] = rank
|
103
|
+
[:by_downloads,:by_versions,:by_latest_version_date,:by_avg_version_date,:by_download_slope].each {|column|
|
104
104
|
record[column] = data[column][index]
|
105
105
|
gemdict[data[column][index].split(' (').first][:rank] += index
|
106
106
|
}
|
107
107
|
report.push(record)
|
108
|
+
rank += 1
|
108
109
|
}
|
109
110
|
|
110
111
|
puts "Simple Rankings"
|
111
|
-
puts TTY::Table.new(header: data.keys, rows: report).render(:ascii)
|
112
|
+
puts TTY::Table.new(header: [:rank]+data.keys, rows: report).render(:ascii)
|
112
113
|
|
113
114
|
puts "\nVitality Ranking:"
|
114
|
-
puts TTY::Table.new(header: [:name,:info], rows: gems.sort {|a,b| a.
|
115
|
+
puts TTY::Table.new(header: [:score, :name,:info], rows: gems.sort {|a,b| a.rank<=>b.rank}.collect {|each| [each.rank,each.name,each.info]}).render(:ascii, column_widths: [5,35,100],resize: false)
|
115
116
|
|
116
117
|
puts
|
data/hiddengems.gemspec
CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_dependency 'ostruct'
|
37
37
|
spec.add_dependency 'tty-table'
|
38
38
|
spec.add_dependency 'pry-rescue'
|
39
|
+
spec.add_dependency 'linear_regression_trend'
|
39
40
|
|
40
41
|
# For more information and examples about making a new gem, checkout our
|
41
42
|
# guide at: https://bundler.io/guides/creating_gem.html
|
data/lib/hiddengems/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hiddengems
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dave Parker
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: linear_regression_trend
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
description: Provides a cli that lets you search rubygems for a search term. Displays
|
98
112
|
multiple ranking criteria with emphasis on project vitality
|
99
113
|
email:
|