hiddengems 0.1.2 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc335eeb19fe93f0b9c02938dd5ab82fbf9380b49bfe6a8bb889b00d440d3e70
4
- data.tar.gz: 43a52edb017aff5dbbee6113044dd505d02c54c7833e77b9119218bc43fa6917
3
+ metadata.gz: cbd3bf240c66763263cb3a431d2e7e021a125494a6d8bcd8506ce79999d44785
4
+ data.tar.gz: b0bd717c020c74e3822863e01b27f3f17e1f7f9607457e460ad41aa613a87be1
5
5
  SHA512:
6
- metadata.gz: 4816b656047b21aba744dd6a15b058cb7ab2b85d36157e0d8ddec18d8a5490a2da57d0513de506e5c1cb60999c7a196e5628c04d61c99c6520456709e27c41f9
7
- data.tar.gz: 19d94d9164adca25710fc9ce222100d742ecafc5e44c32ab8f0e709fec4d0980b50ad99eb501d6efa0a40e5a3df17f1cfd53002c4dd88f5d8300106510a5bbda
6
+ metadata.gz: '0509ce583caea5f997bb957ebdaadd0981c82108fd281f5fc03d4cfd18cb63f8dcd8e59a848800a51572e6a4741c92f19184d6f516f8b16e04ac485395c506a4'
7
+ data.tar.gz: 9d1760403e3e039ef9609af1c4631370d2384f7430f955f57235e2bc0f96d441eb07b2e51fbc7f160ab3b289cea621e4ca20ab32b494882298ccf89d05a81603
data/README.md CHANGED
@@ -7,12 +7,13 @@ and sorts the search results by a number of ranking parameters:
7
7
  - number of versions
8
8
  - date of latest version
9
9
  - average date of all released versions
10
+ - download linear regression trend slope
10
11
 
11
12
  Using the above, it produces a table of found gems sorted by "vitality", which
12
13
  works like this:
13
14
 
14
15
  The gem's ranking order for each of the above ranking parameters is summed together.
15
- The ranking sum that is loweest produces the highest "vitality" ranking.
16
+ The ranking sum that is lowest produces the highest "vitality" ranking.
16
17
 
17
18
  The rationale for this is: bestgems.org ranks only according to download counts. If developers are using just bestgems.org's results to help find libraries that they need, they'll end up with results that are heavily biased toward libraries that have simply been around for a long time; if a gem has been around for many years it will accrue lots of downloads regardless of whether the gem is being actively developed/improved.
18
19
 
@@ -20,30 +21,31 @@ Example:
20
21
 
21
22
  ```
22
23
  $ hiddengems.rb 'zabbix sender'
23
- Search term zabbix sender returned 6 hits
24
+ Found +6 gems (total 6)
25
+ Search term 'zabbix sender' returned 6 hits
24
26
  Simple Rankings
25
- +---------------------------+------------------------+---------------------------+---------------------------+
26
- |by_downloads |by_versions |by_latest_version_date |by_avg_version_date |
27
- +---------------------------+------------------------+---------------------------+---------------------------+
28
- |zabbix-ruby-client (51296) |zabbix-ruby-client (24) |zabbix_sender_api (2022) |zabbix_sender_api (2021) |
29
- |zabbix_sender (34951) |zabbix_sender_api (11) |zabbix_sender (2020) |zabbix_sender (2017) |
30
- |zabbix_send (13447) |zabbix_sender (5) |zabbix_sender_legacy (2016)|zabbix_sender_legacy (2016)|
31
- |zabbix_receiver (10271) |zabbix_sender_legacy (5)|zabbix-ruby-client (2016) |zabbix_receiver (2015) |
32
- |zabbix_sender_api (10031) |zabbix_receiver (5) |zabbix_receiver (2015) |zabbix-ruby-client (2014) |
33
- |zabbix_sender_legacy (9939)|zabbix_send (3) |zabbix_send (2013) |zabbix_send (2013) |
34
- +---------------------------+------------------------+---------------------------+---------------------------+
27
+ +----+---------------------------+------------------------+---------------------------+---------------------------+--------------------------+
28
+ |rank|by_downloads |by_versions |by_latest_version_date |by_avg_version_date |by_download_slope |
29
+ +----+---------------------------+------------------------+---------------------------+---------------------------+--------------------------+
30
+ |0 |zabbix-ruby-client (51368) |zabbix-ruby-client (24) |zabbix_sender_api (2022) |zabbix_sender_api (2021) |zabbix_send (1286) |
31
+ |1 |zabbix_sender (35004) |zabbix_sender_api (11) |zabbix_sender (2020) |zabbix_sender (2017) |zabbix_receiver (375) |
32
+ |2 |zabbix_send (13456) |zabbix_sender (5) |zabbix_sender_legacy (2016)|zabbix_sender_legacy (2016)|zabbix_sender (319) |
33
+ |3 |zabbix_receiver (10286) |zabbix_sender_legacy (5)|zabbix-ruby-client (2016) |zabbix_receiver (2015) |zabbix_sender_legacy (278)|
34
+ |4 |zabbix_sender_api (10064) |zabbix_receiver (5) |zabbix_receiver (2015) |zabbix-ruby-client (2014) |zabbix_sender_api (100) |
35
+ |5 |zabbix_sender_legacy (9954)|zabbix_send (3) |zabbix_send (2013) |zabbix_send (2013) |zabbix-ruby-client (64) |
36
+ +----+---------------------------+------------------------+---------------------------+---------------------------+--------------------------+
35
37
 
36
38
  Vitality Ranking:
37
- +-----------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+
38
- |name |info |
39
- +-----------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+
40
- |zabbix_sender |Zabbix Sender gem |
41
- |zabbix_sender_api |This gem implements an api that abstracts the zabbix sender/trapper mechanism. It saves tons of time when you… |
42
- |zabbix_sender_legacy |Improved zabbix_sender gem just for legacy ruby < 2.0 like in Debian Wheezy |
43
- |zabbix-ruby-client |A zabbix alternative to zabbix-agent using zabbix-sender. |
44
- |zabbix_send |Send data to Zabbix trappers from Ruby |
45
- |zabbix_receiver |Server to receive sender data from zabbix-agent. |
46
- +-----------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+
39
+ +-----+-----------------------------------+----------------------------------------------------------------------------------------------------+
40
+ |score|name |info |
41
+ +-----+-----------------------------------+----------------------------------------------------------------------------------------------------+
42
+ |7 |zabbix_sender |Zabbix Sender gem |
43
+ |9 |zabbix_sender_api |This gem implements an api that abstracts the zabbix sender/trapper mechanism. It saves tons of ti… |
44
+ |12 |zabbix-ruby-client |A zabbix alternative to zabbix-agent using zabbix-sender. |
45
+ |15 |zabbix_sender_legacy |Improved zabbix_sender gem just for legacy ruby < 2.0 like in Debian Wheezy |
46
+ |15 |zabbix_receiver |Server to receive sender data from zabbix-agent. |
47
+ |17 |zabbix_send |Send data to Zabbix trappers from Ruby |
48
+ +-----+-----------------------------------+----------------------------------------------------------------------------------------------------+
47
49
  ```
48
50
 
49
51
  ## Installation
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
 
@@ -81,38 +87,31 @@ until curpage == 0
81
87
  end
82
88
 
83
89
 
84
- puts "Search term #{searchTerm} returned #{gems.size} hits"
85
-
86
- # Things we wanna see sorted:
87
- # + number of versions
88
- # + date of last version
89
- # + avg date of all versions
90
- # + number of downloads
91
- # - downloads per day per version
92
- # - average downloads per day
93
- # - last downloads per day
94
- # - velocity of downloads per day per version
95
-
90
+ puts "Search term '#{searchTerm}' returned #{gems.size} hits"
96
91
 
97
92
  data = Hash.new
98
93
  data[:by_downloads] = gems.sort {|a,b| b.downloads <=> a.downloads}.collect {|each| "#{each.name} (#{each.downloads})"}
99
94
  data[:by_versions] = gems.sort {|a,b| b.totalVersions <=> a.totalVersions}.collect {|each| "#{each.name} (#{each.totalVersions})"}
100
95
  data[:by_latest_version_date] = gems.sort {|a,b| b.latestVersionDate <=> a.latestVersionDate}.collect {|each| "#{each.name} (#{each.latestVersionDate.year})"}
101
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})"}
102
98
  report = Array.new
99
+ rank = 0
103
100
  gems.each_index {|index|
104
101
  record = Hash.new
105
- [:by_downloads,:by_versions,:by_latest_version_date,:by_avg_version_date].each {|column|
102
+ record[:rank] = rank
103
+ [:by_downloads,:by_versions,:by_latest_version_date,:by_avg_version_date,:by_download_slope].each {|column|
106
104
  record[column] = data[column][index]
107
105
  gemdict[data[column][index].split(' (').first][:rank] += index
108
106
  }
109
107
  report.push(record)
108
+ rank += 1
110
109
  }
111
110
 
112
111
  puts "Simple Rankings"
113
- puts TTY::Table.new(header: data.keys, rows: report).render(:ascii)
112
+ puts TTY::Table.new(header: [:rank]+data.keys, rows: report).render(:ascii, resize: false, column_widths: [5,30,30,30,30,30])
114
113
 
115
114
  puts "\nVitality Ranking:"
116
- puts TTY::Table.new(header: [:name,:info], rows: gems.sort {|a,b| a.ranking<=>b.ranking}.collect {|each| [each.name,each.info]}).render(:ascii, column_widths: [15,20],resize: true)
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)
117
116
 
118
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hiddengems
4
- VERSION = "0.1.2"
4
+ VERSION = "0.2.2"
5
5
  end
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.1.2
4
+ version: 0.2.2
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-29 00:00:00.000000000 Z
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: