hiddengems 0.2.3 → 0.3.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: 55b3634a3b5823bdd3d634dad3e013d377a7e16f3f33496bcc3859dbee798199
4
- data.tar.gz: b495911b4b3b4b6f16c43dd539a726bff9422e0c0de4812d17f44fcbab3cf31b
3
+ metadata.gz: a47531cb9520bab4fcb67bb5290340088c5d11ca3099d78fa2917b8b5fa26dad
4
+ data.tar.gz: 357f84413e436a8fcef588a617e2feb831c7b3ce5fa7058ea80b0a8ab8f3bf78
5
5
  SHA512:
6
- metadata.gz: b9e48d6fa7a5d51c3a8cbe3d15fb51abd22ed9741b2de2f76b5aaf519ec4e693755a35417e20b23378c5ddd7122cd6b7deaaeaf55b52f91eb0a6eab6c9d695f1
7
- data.tar.gz: 9e5811bc5737f1d13d524091867f3d797f76f832150cfcb36f6fe240c99e07963c00f1bbebb723acb8429b475871c01cd39c68e71cd21c202fa66eabe55911e8
6
+ metadata.gz: 30306422b2a18cc4ac4cc7fa3d3506868392e2b600066ac94294475ed70ad741afa0df5f2e4eedbceb00a345a4b6467dea648acdbc0589b18e3dc8527a4ec15e
7
+ data.tar.gz: f9b61754013e77e08b766a10b8e39fe4d464b5c39631e79f5e556074884c1d8a392e5e856f2651f4ee1b388ca1d26a0fd8971ca1b523fac4fbc0144730ea079f
data/LICENSE ADDED
@@ -0,0 +1,7 @@
1
+ Copyright 2022 David Parker
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -9,43 +9,106 @@ and sorts the search results by a number of ranking parameters:
9
9
  - average date of all released versions
10
10
  - download linear regression trend slope
11
11
 
12
- Using the above, it produces a table of found gems sorted by "vitality", which
13
- works like this:
12
+ Using the above, it produces two tables:
14
13
 
15
- The gem's ranking order for each of the above ranking parameters is summed together.
16
- The ranking sum that is lowest produces the highest "vitality" ranking.
14
+ The first is comprised of 5 lists of individual rankings sorted best -> worst for each metric.
17
15
 
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.
16
+ The second table contains a list of gems and their descriptions sorted by the *sum* of all a given gems ranks from the first table. The lowest overall score is best. By default each individual ranking is given a weight of 1, but you can alter this with command line options (see below)
17
+
18
+ ![illustration of how scoring works by default](img/2022-09-04_13-40.png "Scoring example")
19
+
20
+ The rationale for this is that ranking based on download count alone (e.g. http://bestgems.org) doesn't always give you a good sense of where things stand for a given search term. Looking at download count alone, a gem that has been around for many years and has garnered many downloads but has stagnated will tend to retain its top ranking due to the fact that people will tend to download the top ranking gem first. In other words: it invites a positive feedback situation.
21
+
22
+ hiddengems.rb attempts to do a better job of ranking for a given search term. As it's grabbing all the requisite data at run time, it's not as fast as using an indexing site, but it's definitely "smarter".
23
+
24
+ The program supports options that allow you to adjust the weights of the metrics that are used to calculate the rank sum table. By default all metrics are given equal weight, but you can tweak this as you see fit.
25
+
26
+ Example:
27
+ ```
28
+ hiddengems.rb 'zabbix sender' --links --downloads 0 --avg-version-date 3 --download-slope 3 --latest-version-date 2
29
+ ```
30
+ gives:
31
+ ![illustration of how scoring works with weight adjustments](img/2022-09-04_13-51.png "Weighted Scoring example")
32
+
33
+ The program also includes a link validation function. If you use it (--links), hiddengems.rb will first audit each gem's homepage_uri and source_code_uri links to ensure that (a) at least one of those URIs is populated and (b) that the links that are defined are valid. If both (a) and (b) fail, the gem is removed from the list of found gems before ranking is calculated.
34
+
35
+ The --links option can add a bunch of time to processing so it's not on by default, but it does a good job of weeding out dead projects.
36
+
37
+ Note: you'll almost certainly want to pipe output to a pager (e.g. "| less") as the output tends to be pretty long line-wise.
19
38
 
20
39
  Example:
21
40
 
22
41
  ```
23
- $ hiddengems.rb 'zabbix sender'
42
+ $ ./hiddengems.rb --help
43
+ Usage:
44
+ hiddengems.rb [options] '<search term>'
45
+
46
+ Where [options] are:
47
+ -l, --links Verify gem's URIs before scoring (slow)
48
+ -d, --downloads=<i> Weight of download count (default: 1)
49
+ -v, --versions=<i> Weight of version count (default: 1)
50
+ -a, --latest-version-date=<i> Weight of latest version date (default: 1)
51
+ -g, --avg-version-date=<i> Weight of average version date (default: 1)
52
+ -o, --download-slope=<i> Weight of download slope (default: 1)
53
+ -r, --rejectfilter=<s> Regular Expression of gem names to reject (default: )
54
+ -h, --help Show this message
55
+
56
+
57
+ $ hiddengems.rb 'zabbix sender' --links
58
+ Option values:
59
+ {
60
+ :links => true,
61
+ :downloads => 1,
62
+ :versions => 1,
63
+ :latest_version_date => 1,
64
+ :avg_version_date => 1,
65
+ :download_slope => 1,
66
+ :help => false,
67
+ :links_given => true
68
+ }
69
+
70
+ Search term: zabbix sender
24
71
  Found +6 gems (total 6)
72
+
25
73
  Search term 'zabbix sender' returned 6 hits
26
- Simple Rankings
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
- +----+---------------------------+------------------------+---------------------------+---------------------------+--------------------------+
37
-
38
- Vitality Ranking:
74
+
75
+ Validating URIs...
76
+ Attempting https://github.com/nownabe/zabbix_sender
77
+ Attempting https://svdasein.gitlab.io/zabbix_sender_api
78
+ Attempting https://gitlab.com/svdasein/zabbix_sender_api
79
+ Attempting https://github.com/lehn-etracker/zabbix_sender_legacy
80
+ Attempting https://github.com/eduvo/zabbix-ruby-client
81
+ Attempting https://github.com/englishm/zabbix_send
82
+ Attempting https://github.com/englishm/zabbix_send
83
+ Rejecting zabbix_receiver due to lack of valid URIs
84
+
85
+ 5 remaining gems after link validation
86
+
87
+ Calculating rankings...
88
+
89
+ Individual Rankings (best -> worst)
90
+ +-----+------------------------------+------------------------------+------------------------------+------------------------------+------------------------------+
91
+ |rank |downloads (1) |versions (1) |latest_version_date (1) |avg_version_date (1) |download_slope (1) |
92
+ +-----+------------------------------+------------------------------+------------------------------+------------------------------+------------------------------+
93
+ |0 |zabbix-ruby-client (51536) |zabbix-ruby-client (24) |zabbix_sender_api (2022) |zabbix_sender_api (2021) |zabbix_send (1289) |
94
+ |1 |zabbix_sender (35317) |zabbix_sender_api (11) |zabbix_sender (2020) |zabbix_sender (2017) |zabbix_sender (320) |
95
+ |2 |zabbix_send (13477) |zabbix_sender (5) |zabbix_sender_legacy (2016) |zabbix_sender_legacy (2016) |zabbix_sender_legacy (279) |
96
+ |3 |zabbix_sender_api (10149) |zabbix_sender_legacy (5) |zabbix-ruby-client (2016) |zabbix-ruby-client (2014) |zabbix_sender_api (100) |
97
+ |4 |zabbix_sender_legacy (9989) |zabbix_send (3) |zabbix_send (2013) |zabbix_send (2013) |zabbix-ruby-client (64) |
98
+ +-----+------------------------------+------------------------------+------------------------------+------------------------------+------------------------------+
99
+
100
+ Rank sums (best -> worst)
39
101
  +-----+-----------------------------------+----------------------------------------------------------------------------------------------------+
40
102
  |score|name |info |
41
103
  +-----+-----------------------------------+----------------------------------------------------------------------------------------------------+
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 &lt; 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 |
104
+ |6 |zabbix_sender |Zabbix Sender gem |
105
+ |7 |zabbix_sender_api |This gem implements an api that abstracts the zabbix sender/trapper mechanism. It saves tons of ti… |
106
+ |10 |zabbix-ruby-client |A zabbix alternative to zabbix-agent using zabbix-sender. |
107
+ |13 |zabbix_sender_legacy |Improved zabbix_sender gem just for legacy ruby &lt; 2.0 like in Debian Wheezy |
108
+ |14 |zabbix_send |Send data to Zabbix trappers from Ruby |
48
109
  +-----+-----------------------------------+----------------------------------------------------------------------------------------------------+
110
+
111
+
49
112
  ```
50
113
 
51
114
  ## Installation
@@ -76,4 +139,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
76
139
 
77
140
  ## Contributing
78
141
 
79
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/hiddengems.
142
+ Bug reports and pull requests are welcome on GitHub at https://gitlab.com/svdasein/hiddengems.
data/exe/hiddengems.rb CHANGED
@@ -2,12 +2,14 @@
2
2
  require 'json'
3
3
  require 'time'
4
4
  require 'faraday'
5
+ require 'faraday/follow_redirects'
6
+ require 'optimist'
5
7
  require 'ostruct'
6
8
  require 'tty-table'
7
9
  require 'pry-rescue'
8
10
  require 'linear_regression_trend'
11
+ require 'awesome_print'
9
12
 
10
- searchTerm = ARGV[0]
11
13
 
12
14
  module GemEntry
13
15
  def catalogEntry
@@ -47,6 +49,36 @@ module GemEntry
47
49
  slope = LinearRegressionTrend::Calculator.new(versionDownloadHistory).slope
48
50
  slope.nan? ? 0 : slope
49
51
  end
52
+
53
+
54
+ def uriScore
55
+ if @uriScore.nil?
56
+ @uriScore = 0.0
57
+ uriCount = 0
58
+ foundCount = 0
59
+ [:homepage_uri, :source_code_uri].each {|uri|
60
+ if not self[uri].nil? and (self[uri].size > 0)
61
+ print "Attempting #{self[uri]}"
62
+ uriCount += 1
63
+ begin
64
+ client = Faraday.new(url: self[uri]) do |faraday|
65
+ faraday.response(:follow_redirects)
66
+ faraday.options.timeout = 5
67
+ faraday.adapter(Faraday.default_adapter)
68
+ end
69
+ res = client.get
70
+ foundCount += 1 if (res.status == 200)
71
+ puts
72
+ rescue Exception => e
73
+ ap e
74
+ end
75
+ end
76
+ }
77
+ @uriScore = uriCount == 0.0 ? 0 : foundCount.to_f / uriCount.to_f
78
+ end
79
+ @uriScore
80
+ end
81
+
50
82
  end
51
83
 
52
84
  module GemVersion
@@ -63,6 +95,32 @@ module GemVersion
63
95
  end
64
96
 
65
97
 
98
+ ##################################################################################################################
99
+ #
100
+
101
+ opts = Optimist::options do
102
+ banner <<-EOS
103
+ Usage:
104
+ hiddengems.rb [options] '<search term>'
105
+
106
+ Where [options] are:
107
+ EOS
108
+ opt :links, "Verify gem's URIs before scoring (slow)", type: :boolean, default: false
109
+ opt :downloads, "Weight of download count", type: :integer, default: 1
110
+ opt :versions, "Weight of version count", type: :integer, default: 1
111
+ opt :latest_version_date, "Weight of latest version date", type: :integer, default: 1
112
+ opt :avg_version_date, "Weight of average version date", type: :integer, default: 1
113
+ opt :download_slope, "Weight of download slope", type: :integer, default: 1
114
+ opt :rejectfilter, "Regular Expression of gem names to reject", type: :string
115
+ end
116
+
117
+ puts "Option values:"
118
+ ap opts
119
+
120
+ searchTerm = ARGV[0]
121
+ puts "\nSearch term: #{searchTerm}\n"
122
+
123
+
66
124
  curpage = 1
67
125
  gems = Array.new
68
126
  gemdict = Hash.new
@@ -92,32 +150,55 @@ until curpage == 0
92
150
  puts "looking for more..." if curpage != 0
93
151
  end
94
152
 
153
+ puts "\nSearch term '#{searchTerm}' returned #{gems.size} hits"
154
+ if opts[:rejectfilter_given]
155
+ puts "Filtering out unwanted gems with #{opts[:rejectfilter]}"
156
+ re = Regexp.compile(opts[:rejectfilter])
157
+ gems.reject! {|each|
158
+ re.match(each.name)
159
+ }
160
+ puts "\n#{gems.size} remaining gems after reject filter"
161
+ end
95
162
 
96
- puts "Search term '#{searchTerm}' returned #{gems.size} hits"
163
+
164
+ if opts[:links]
165
+ puts "\nValidating URIs..."
166
+ gems.reject! {|each|
167
+ if each.uriScore == 0.0
168
+ puts "Rejecting #{each.name} due to lack of valid URIs"
169
+ true
170
+ else
171
+ false
172
+ end
173
+ }
174
+ puts "\n#{gems.size} remaining gems after link validation"
175
+ end
176
+
177
+ puts "\nCalculating rankings..."
97
178
 
98
179
  data = Hash.new
99
- data[:by_downloads] = gems.sort {|a,b| b.downloads <=> a.downloads}.collect {|each| "#{each.name} (#{each.downloads})"}
100
- data[:by_versions] = gems.sort {|a,b| b.totalVersions <=> a.totalVersions}.collect {|each| "#{each.name} (#{each.totalVersions})"}
101
- data[:by_latest_version_date] = gems.sort {|a,b| b.latestVersionDate <=> a.latestVersionDate}.collect {|each| "#{each.name} (#{each.latestVersionDate.year})"}
102
- data[:by_avg_version_date] = gems.sort {|a,b| b.avgDateOfAllVersions<=> a.avgDateOfAllVersions}.collect {|each| "#{each.name} (#{each.avgDateOfAllVersions.year})"}
103
- data[:by_download_slope] = gems.sort {|a,b| b.downloadSlope <=> a.downloadSlope}.collect {|each| "#{each.name} (#{each.downloadSlope.round})"}
180
+ data[:downloads] = gems.sort {|a,b| b.downloads <=> a.downloads}.collect {|each| "#{each.name} (#{each.downloads})"}
181
+ data[:versions] = gems.sort {|a,b| b.totalVersions <=> a.totalVersions}.collect {|each| "#{each.name} (#{each.totalVersions})"}
182
+ data[:latest_version_date] = gems.sort {|a,b| b.latestVersionDate <=> a.latestVersionDate}.collect {|each| "#{each.name} (#{each.latestVersionDate.year})"}
183
+ data[:avg_version_date] = gems.sort {|a,b| b.avgDateOfAllVersions<=> a.avgDateOfAllVersions}.collect {|each| "#{each.name} (#{each.avgDateOfAllVersions.year})"}
184
+ data[:download_slope] = gems.sort {|a,b| b.downloadSlope <=> a.downloadSlope}.collect {|each| "#{each.name} (#{each.downloadSlope.round})"}
104
185
  report = Array.new
105
186
  rank = 0
106
187
  gems.each_index {|index|
107
188
  record = Hash.new
108
189
  record[:rank] = rank
109
- [:by_downloads,:by_versions,:by_latest_version_date,:by_avg_version_date,:by_download_slope].each {|column|
190
+ data.keys.each {|column|
110
191
  record[column] = data[column][index]
111
- gemdict[data[column][index].split(' (').first][:rank] += index
192
+ gemdict[data[column][index].split(' (').first][:rank] += index * opts[column]
112
193
  }
113
194
  report.push(record)
114
195
  rank += 1
115
196
  }
197
+ puts
198
+ puts "Individual Rankings (best -> worst)"
199
+ puts TTY::Table.new(header: [:rank]+data.keys.collect {|each| "#{each} (#{opts[each]})" }, rows: report).render(:ascii, resize: false, column_widths: [5] + [30] * data.keys.size)
116
200
 
117
- puts "Simple Rankings"
118
- puts TTY::Table.new(header: [:rank]+data.keys, rows: report).render(:ascii, resize: false, column_widths: [5,30,30,30,30,30])
119
-
120
- puts "\nVitality Ranking:"
201
+ puts "\nRank sums (best -> worst)"
121
202
  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)
122
203
 
123
204
  puts
data/hiddengems.gemspec CHANGED
@@ -9,9 +9,10 @@ Gem::Specification.new do |spec|
9
9
  spec.email = ["dparker@svdasein.org"]
10
10
 
11
11
  spec.summary = "Search for ruby gems with a search term (like bestgems.org) with better ranking"
12
- spec.description = "Provides a cli that lets you search rubygems for a search term. Displays multiple ranking criteria with emphasis on project vitality"
12
+ spec.description = "Provides a cli that lets you search rubygems for a search term. Displays multiple ranking criteria with emphasis on project vitality. Alternative to rubygems.org"
13
13
  spec.homepage = "https://gitlab.com/svdasein/hiddengems"
14
14
  spec.required_ruby_version = ">= 2.4.0"
15
+ spec.license = 'MIT'
15
16
 
16
17
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
17
18
 
@@ -33,8 +34,11 @@ Gem::Specification.new do |spec|
33
34
  spec.add_dependency 'json'
34
35
  spec.add_dependency 'time'
35
36
  spec.add_dependency 'faraday'
37
+ spec.add_dependency 'faraday-follow_redirects'
38
+ spec.add_dependency 'optimist'
36
39
  spec.add_dependency 'ostruct'
37
40
  spec.add_dependency 'tty-table'
41
+ spec.add_dependency 'awesome_print'
38
42
  spec.add_dependency 'pry-rescue'
39
43
  spec.add_dependency 'linear_regression_trend'
40
44
 
Binary file
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hiddengems
4
- VERSION = "0.2.3"
4
+ VERSION = "0.3.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.2.3
4
+ version: 0.3.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-30 00:00:00.000000000 Z
11
+ date: 2022-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: faraday-follow_redirects
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: optimist
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: ostruct
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +108,20 @@ dependencies:
80
108
  - - ">="
81
109
  - !ruby/object:Gem::Version
82
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: awesome_print
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
83
125
  - !ruby/object:Gem::Dependency
84
126
  name: pry-rescue
85
127
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +151,7 @@ dependencies:
109
151
  - !ruby/object:Gem::Version
110
152
  version: '0'
111
153
  description: Provides a cli that lets you search rubygems for a search term. Displays
112
- multiple ranking criteria with emphasis on project vitality
154
+ multiple ranking criteria with emphasis on project vitality. Alternative to rubygems.org
113
155
  email:
114
156
  - dparker@svdasein.org
115
157
  executables:
@@ -119,16 +161,21 @@ extra_rdoc_files: []
119
161
  files:
120
162
  - ".gitignore"
121
163
  - Gemfile
164
+ - LICENSE
122
165
  - README.md
123
166
  - Rakefile
124
167
  - bin/console
125
168
  - bin/setup
126
169
  - exe/hiddengems.rb
127
170
  - hiddengems.gemspec
171
+ - img/2022-09-04_12-37.png
172
+ - img/2022-09-04_13-40.png
173
+ - img/2022-09-04_13-51.png
128
174
  - lib/hiddengems.rb
129
175
  - lib/hiddengems/version.rb
130
176
  homepage: https://gitlab.com/svdasein/hiddengems
131
- licenses: []
177
+ licenses:
178
+ - MIT
132
179
  metadata:
133
180
  allowed_push_host: https://rubygems.org
134
181
  homepage_uri: https://gitlab.com/svdasein/hiddengems