getv 1.3.1 → 1.6.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/README.md +5 -5
- data/exe/getv +25 -16
- data/lib/getv/package.rb +45 -30
- data/lib/getv/version.rb +1 -1
- metadata +26 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98a04bab50075d670df75705579e743dcfa11f8348333ff05071294355303860
|
4
|
+
data.tar.gz: e55cc07d8d7167176f3557a1eecf8f99f9c6f6908922fbf4901d97dd10951d70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b93e911ecd136a22555e97fcd0c62986a862adc4809b37a5c1cd1d047a8bdfd1f663fb7159548b2d4bb3f9558fcd9643831e4b91791b696a90313aa81af8388
|
7
|
+
data.tar.gz: 0a3a86b63ff5250f3b07bd419d5ecbafca05fe0f63384e12178675411d9ab0fb25f4c56a614d39cb34058d967b09b4b6414ef277a05e565930cc36e7f0bc440a
|
data/README.md
CHANGED
@@ -39,7 +39,7 @@ SYNOPSIS
|
|
39
39
|
|
40
40
|
|
41
41
|
VERSION
|
42
|
-
1.
|
42
|
+
1.5.0
|
43
43
|
|
44
44
|
|
45
45
|
|
@@ -55,9 +55,9 @@ COMMANDS
|
|
55
55
|
docker - Get package versions from a Docker or OCI container image registry
|
56
56
|
gem - Get package versions from RubyGems.org
|
57
57
|
get - Get package versions from text file URL
|
58
|
-
github_commit - Get package versions from GitHub commits
|
59
|
-
github_release - Get package versions from GitHub releases
|
60
|
-
github_tag - Get package versions from GitHub tags
|
58
|
+
github_commit - Get package versions from GitHub commits
|
59
|
+
github_release - Get package versions from GitHub releases
|
60
|
+
github_tag - Get package versions from GitHub tags
|
61
61
|
help - Shows a list of commands or help for one command
|
62
62
|
index - Get package versions from web page of links
|
63
63
|
npm - Get package versions from npm at registry.npmjs.org
|
@@ -70,7 +70,7 @@ Show the latest available version of the `getv` gem:
|
|
70
70
|
|
71
71
|
```console
|
72
72
|
$ getv --latest gem getv
|
73
|
-
1.
|
73
|
+
1.5.0
|
74
74
|
```
|
75
75
|
|
76
76
|
Show all `dep` GitHub release versions in JSON:
|
data/exe/getv
CHANGED
@@ -34,10 +34,11 @@ class App # rubocop:disable Metrics/ClassLength
|
|
34
34
|
|
35
35
|
switch %i[l latest], desc: 'Latest version', negatable: false
|
36
36
|
switch %i[j json], desc: 'Output in json', negatable: false
|
37
|
+
flag %i[p proxy], desc: 'Web proxy', default_value: nil
|
37
38
|
|
38
39
|
desc 'Get package versions from a Docker or OCI container image registry'
|
39
40
|
arg_name 'package_name'
|
40
|
-
command :docker do |c|
|
41
|
+
command :docker do |c| # rubocop:disable Metrics/BlockLength
|
41
42
|
defaults = (Getv::Package.new 'name', type: c.name.to_s).opts
|
42
43
|
c.flag %i[select_search], desc: 'Regex version selection search', default_value: defaults[:select_search]
|
43
44
|
c.flag %i[select_replace], desc: 'Regex version selection replace', default_value: defaults[:select_replace]
|
@@ -46,16 +47,19 @@ class App # rubocop:disable Metrics/ClassLength
|
|
46
47
|
c.flag %i[semantic_select], desc: 'Semantic version selection (comma delimited)',
|
47
48
|
default_value: defaults[:semantic_select]
|
48
49
|
c.flag %i[owner], desc: 'Repository owner',
|
49
|
-
default_value: "'<owner>' if package_name is in format '<owner>/<repo>', otherwise just package_name" # rubocop:disable Layout/LineLength
|
50
|
+
default_value: "'<owner>' if package_name is in format '<registry>/<owner>/<repo>' or '<owner>/<repo>', otherwise just package_name" # rubocop:disable Layout/LineLength
|
50
51
|
c.flag %i[repo], desc: 'Repository name',
|
51
|
-
default_value: "'<repo>' if package_name is in format '<owner>/<repo>'
|
52
|
-
c.flag %i[url], desc: 'URL',
|
52
|
+
default_value: "'<repo>' if package_name is in format '<registry>/<owner>/<repo>' or <owner>/<repo>, otherwise just package_name" # rubocop:disable Layout/LineLength
|
53
|
+
c.flag %i[url], desc: 'URL',
|
54
|
+
default_value: "'https://<registry>' if package_name is in format '<registry>/<owner>/<repo>', otherwise #{defaults[:url]}" # rubocop:disable Layout/LineLength
|
55
|
+
c.flag %i[user], desc: 'Username', default_value: defaults[:user]
|
56
|
+
c.flag %i[password], desc: 'Password', default_value: defaults[:password]
|
53
57
|
c.action do |global_options, options, args|
|
54
58
|
help_now! unless args.size == 1
|
55
59
|
|
56
60
|
opts = global_options.merge(options)
|
57
61
|
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :owner, :repo,
|
58
|
-
:url
|
62
|
+
:url, :user, :password, :proxy
|
59
63
|
opts = opts.delete_if { |k, v| v.nil? || v == c.flags[k].default_value }
|
60
64
|
opts[:semantic_only] = !options[:invalid_versions]
|
61
65
|
opts[:semantic_select] = opts[:semantic_select].split(',') unless opts.fetch(:semantic_select, nil).nil?
|
@@ -78,7 +82,7 @@ class App # rubocop:disable Metrics/ClassLength
|
|
78
82
|
help_now! unless args.size == 1
|
79
83
|
|
80
84
|
opts = global_options.merge(options)
|
81
|
-
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select
|
85
|
+
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :proxy
|
82
86
|
opts = opts.delete_if { |k, v| v.nil? || v == c.flags[k].default_value }
|
83
87
|
opts[:semantic_only] = !options[:invalid_versions]
|
84
88
|
opts[:semantic_select] = opts[:semantic_select].split(',') unless opts.fetch(:semantic_select, nil).nil?
|
@@ -101,7 +105,7 @@ class App # rubocop:disable Metrics/ClassLength
|
|
101
105
|
c.action do |global_options, options, args|
|
102
106
|
help_now! unless args.size == 1
|
103
107
|
|
104
|
-
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :url
|
108
|
+
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :url, :proxy
|
105
109
|
opts = opts.delete_if { |k, v| v.nil? || v == c.flags[k].default_value }
|
106
110
|
opts[:semantic_only] = !options[:invalid_versions]
|
107
111
|
opts[:semantic_select] = opts[:semantic_select].split(',') unless opts.fetch(:semantic_select, nil).nil?
|
@@ -110,7 +114,7 @@ class App # rubocop:disable Metrics/ClassLength
|
|
110
114
|
end
|
111
115
|
end
|
112
116
|
|
113
|
-
desc 'Get package versions from GitHub commits
|
117
|
+
desc 'Get package versions from GitHub commits'
|
114
118
|
arg_name 'package_name'
|
115
119
|
command :github_commit do |c|
|
116
120
|
defaults = (Getv::Package.new 'name', type: c.name.to_s).opts
|
@@ -122,18 +126,19 @@ class App # rubocop:disable Metrics/ClassLength
|
|
122
126
|
c.flag %i[repo], desc: 'Repository name',
|
123
127
|
default_value: "'<repo>' if package_name is in format '<owner>/<repo>', otherwise just package_name" # rubocop:disable Layout/LineLength
|
124
128
|
c.flag %i[branch], desc: 'Repository branch', default_value: defaults[:branch]
|
129
|
+
c.flag %i[token], desc: 'Token', default_value: defaults[:token]
|
125
130
|
c.action do |global_options, options, args|
|
126
131
|
help_now! unless args.size == 1
|
127
132
|
|
128
133
|
opts = global_options.merge(options)
|
129
|
-
opts = opts.slice :select_search, :select_replace, :reject, :owner, :repo, :branch
|
134
|
+
opts = opts.slice :select_search, :select_replace, :reject, :owner, :repo, :branch, :token, :proxy
|
130
135
|
opts = opts.delete_if { |k, v| v.nil? || v == c.flags[k].default_value }
|
131
136
|
package = Getv::Package.new args[0], { type: c.name.to_s }.merge(opts)
|
132
137
|
Getv::Cli.output(package, latest: global_options[:latest], json: global_options[:json])
|
133
138
|
end
|
134
139
|
end
|
135
140
|
|
136
|
-
desc 'Get package versions from GitHub releases
|
141
|
+
desc 'Get package versions from GitHub releases'
|
137
142
|
arg_name 'package_name'
|
138
143
|
command :github_release do |c|
|
139
144
|
defaults = (Getv::Package.new 'name', type: c.name.to_s).opts
|
@@ -147,11 +152,13 @@ class App # rubocop:disable Metrics/ClassLength
|
|
147
152
|
default_value: "'<owner>' if package_name is in format '<owner>/<repo>', otherwise just package_name" # rubocop:disable Layout/LineLength
|
148
153
|
c.flag %i[repo], desc: 'Repository name',
|
149
154
|
default_value: "'<repo>' if package_name is in format '<owner>/<repo>', otherwise just package_name" # rubocop:disable Layout/LineLength
|
155
|
+
c.flag %i[token], desc: 'Token', default_value: defaults[:token]
|
150
156
|
c.action do |global_options, options, args|
|
151
157
|
help_now! unless args.size == 1
|
152
158
|
|
153
159
|
opts = global_options.merge(options)
|
154
|
-
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :owner, :repo
|
160
|
+
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :owner, :repo,
|
161
|
+
:token, :proxy
|
155
162
|
opts = opts.delete_if { |k, v| v.nil? || v == c.flags[k].default_value }
|
156
163
|
opts[:semantic_only] = !options[:invalid_versions]
|
157
164
|
opts[:semantic_select] = opts[:semantic_select].split(',') unless opts.fetch(:semantic_select, nil).nil?
|
@@ -160,7 +167,7 @@ class App # rubocop:disable Metrics/ClassLength
|
|
160
167
|
end
|
161
168
|
end
|
162
169
|
|
163
|
-
desc 'Get package versions from GitHub tags
|
170
|
+
desc 'Get package versions from GitHub tags'
|
164
171
|
arg_name 'package_name'
|
165
172
|
command :github_tag do |c|
|
166
173
|
defaults = (Getv::Package.new 'name', type: c.name.to_s).opts
|
@@ -174,11 +181,13 @@ class App # rubocop:disable Metrics/ClassLength
|
|
174
181
|
default_value: "'<owner>' if package_name is in format '<owner>/<repo>', otherwise just package_name" # rubocop:disable Layout/LineLength
|
175
182
|
c.flag %i[repo], desc: 'Repository name',
|
176
183
|
default_value: "'<repo>' if package_name is in format '<owner>/<repo>', otherwise just package_name" # rubocop:disable Layout/LineLength
|
184
|
+
c.flag %i[token], desc: 'Token', default_value: defaults[:token]
|
177
185
|
c.action do |global_options, options, args|
|
178
186
|
help_now! unless args.size == 1
|
179
187
|
|
180
188
|
opts = global_options.merge(options)
|
181
|
-
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :owner, :repo
|
189
|
+
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :owner, :repo,
|
190
|
+
:token, :proxy
|
182
191
|
opts = opts.delete_if { |k, v| v.nil? || v == c.flags[k].default_value }
|
183
192
|
opts[:semantic_only] = !options[:invalid_versions]
|
184
193
|
opts[:semantic_select] = opts[:semantic_select].split(',') unless opts.fetch(:semantic_select, nil).nil?
|
@@ -204,7 +213,7 @@ class App # rubocop:disable Metrics/ClassLength
|
|
204
213
|
help_now! unless args.size == 1
|
205
214
|
|
206
215
|
opts = global_options.merge(options)
|
207
|
-
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :url
|
216
|
+
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :url, :proxy
|
208
217
|
opts = opts.delete_if { |k, v| v.nil? || v == c.flags[k].default_value }
|
209
218
|
opts[:link] == 'value' if options[:link_value]
|
210
219
|
opts[:semantic_only] = !options[:invalid_versions]
|
@@ -228,7 +237,7 @@ class App # rubocop:disable Metrics/ClassLength
|
|
228
237
|
help_now! unless args.size == 1
|
229
238
|
|
230
239
|
opts = global_options.merge(options)
|
231
|
-
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select
|
240
|
+
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :proxy
|
232
241
|
opts = opts.delete_if { |k, v| v.nil? || v == c.flags[k].default_value }
|
233
242
|
opts[:semantic_only] = !options[:invalid_versions]
|
234
243
|
opts[:semantic_select] = opts[:semantic_select].split(',') unless opts.fetch(:semantic_select, nil).nil?
|
@@ -251,7 +260,7 @@ class App # rubocop:disable Metrics/ClassLength
|
|
251
260
|
help_now! unless args.size == 1
|
252
261
|
|
253
262
|
opts = global_options.merge(options)
|
254
|
-
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select
|
263
|
+
opts = opts.slice :select_search, :select_replace, :reject, :semantic_only, :semantic_select, :proxy
|
255
264
|
opts = opts.delete_if { |k, v| v.nil? || v == c.flags[k].default_value }
|
256
265
|
opts[:semantic_only] = !options[:invalid_versions]
|
257
266
|
opts[:semantic_select] = opts[:semantic_select].split(',') unless opts.fetch(:semantic_select, nil).nil?
|
data/lib/getv/package.rb
CHANGED
@@ -9,11 +9,11 @@ module Getv
|
|
9
9
|
@name = name
|
10
10
|
case name
|
11
11
|
when /rubygem-.*/
|
12
|
-
opts = {
|
12
|
+
opts = { type: 'gem' }.merge(opts)
|
13
13
|
when /nodejs-.*/
|
14
|
-
opts = {
|
14
|
+
opts = { type: 'npm' }.merge(opts)
|
15
15
|
when /python.*-.*/
|
16
|
-
opts = {
|
16
|
+
opts = { type: 'pypi' }.merge(opts)
|
17
17
|
end
|
18
18
|
if opts[:type] == 'github_commit'
|
19
19
|
opts = {
|
@@ -29,25 +29,39 @@ module Getv
|
|
29
29
|
reject: nil,
|
30
30
|
semantic_only: true,
|
31
31
|
semantic_select: ['*'],
|
32
|
+
proxy: nil,
|
32
33
|
versions: nil,
|
33
34
|
latest_version: nil
|
34
35
|
}.merge(opts)
|
35
|
-
if (opts[:type] == 'docker' || opts[:type] =~ /github.*/) && (name.count('/') == 1)
|
36
|
-
opts = { owner: name.split('/')[0], repo: name.split('/')[1] }.merge(opts)
|
37
|
-
end
|
38
36
|
case opts[:type]
|
39
37
|
when 'docker'
|
40
|
-
opts = {
|
38
|
+
opts = { user: nil, password: nil }.merge(opts)
|
39
|
+
opts = case name.count('/')
|
40
|
+
when 0
|
41
|
+
{ owner: 'library', repo: name, url: 'https://registry.hub.docker.com' }.merge(opts)
|
42
|
+
when 1
|
43
|
+
{ owner: name.split('/')[0], repo: name.split('/')[1],
|
44
|
+
url: 'https://registry.hub.docker.com' }.merge(opts)
|
45
|
+
else
|
46
|
+
{ owner: name.split('/')[1], repo: name.split('/')[2..-1].join('/'),
|
47
|
+
url: "https://#{name.split('/')[0]}" }.merge(opts)
|
48
|
+
end
|
41
49
|
when 'gem'
|
42
50
|
opts = { gem: name[/rubygem-(.*)/, 1] || name }.merge(opts)
|
43
51
|
when /github.*/
|
44
|
-
opts = {
|
52
|
+
opts = { token: nil }.merge(opts)
|
53
|
+
opts = case name.count('/')
|
54
|
+
when 1
|
55
|
+
{ owner: name.split('/')[0], repo: name.split('/')[1] }.merge(opts)
|
56
|
+
else
|
57
|
+
{ owner: name, repo: name }.merge(opts)
|
58
|
+
end
|
45
59
|
when 'index'
|
46
60
|
opts = { link: 'content' }.merge(opts)
|
47
61
|
when 'npm'
|
48
62
|
opts = { npm: name[/nodejs-(.*)/, 1] || name }.merge(opts)
|
49
63
|
when 'pypi'
|
50
|
-
opts = {
|
64
|
+
opts = { pypi: name[/python.*-(.*)/, 1] || name }.merge(opts)
|
51
65
|
end
|
52
66
|
@opts = opts
|
53
67
|
end
|
@@ -89,37 +103,45 @@ module Getv
|
|
89
103
|
|
90
104
|
private
|
91
105
|
|
92
|
-
def
|
106
|
+
def get(url)
|
107
|
+
require 'rest-client'
|
108
|
+
RestClient::Request.execute(method: :get, url: url, proxy: opts[:proxy]).body
|
109
|
+
end
|
110
|
+
|
111
|
+
def versions_using_docker # rubocop:disable Metrics/AbcSize
|
93
112
|
require 'docker_registry2'
|
94
|
-
|
113
|
+
docker_opts = {}
|
114
|
+
docker_opts[:http_options] = { proxy: opts[:proxy] } unless opts[:proxy].nil?
|
115
|
+
if opts[:user] && opts[:password]
|
116
|
+
docker_opts[:user] = opts[:user]
|
117
|
+
docker_opts[:password] = opts[:password]
|
118
|
+
end
|
119
|
+
docker = DockerRegistry2.connect(opts[:url], docker_opts)
|
95
120
|
docker.tags("#{opts[:owner]}/#{opts[:repo]}")['tags']
|
96
121
|
end
|
97
122
|
|
98
123
|
def versions_using_gem
|
99
124
|
require 'json'
|
100
|
-
|
101
|
-
require 'net/http'
|
102
|
-
JSON.parse(Net::HTTP.get(URI("https://rubygems.org/api/v1/versions/#{opts[:gem]}.json"))).map do |v|
|
125
|
+
JSON.parse(get("https://rubygems.org/api/v1/versions/#{opts[:gem]}.json")).map do |v|
|
103
126
|
v['number']
|
104
127
|
end
|
105
128
|
end
|
106
129
|
|
107
130
|
def versions_using_get
|
108
|
-
|
109
|
-
require 'net/http'
|
110
|
-
Net::HTTP.get(URI(opts[:url])).split("\n")
|
131
|
+
get(opts[:url]).split("\n")
|
111
132
|
end
|
112
133
|
|
113
|
-
def github
|
134
|
+
def github # rubocop:disable Metrics/MethodLength
|
114
135
|
require 'octokit'
|
115
|
-
if
|
116
|
-
github = Octokit::Client.new(access_token:
|
136
|
+
if opts[:token]
|
137
|
+
github = Octokit::Client.new(access_token: opts[:token])
|
117
138
|
user = github.user
|
118
139
|
user.login
|
119
140
|
else
|
120
141
|
github = Octokit::Client.new
|
121
142
|
end
|
122
143
|
github.auto_paginate = true
|
144
|
+
github.proxy = opts[:proxy]
|
123
145
|
github
|
124
146
|
end
|
125
147
|
|
@@ -137,11 +159,8 @@ module Getv
|
|
137
159
|
end
|
138
160
|
|
139
161
|
def versions_using_index
|
140
|
-
require 'open-uri'
|
141
|
-
require 'net/http'
|
142
162
|
require 'nokogiri'
|
143
|
-
|
144
|
-
Nokogiri::HTML(URI.open(opts[:url])).css('a').map do |a| # rubocop:disable Security/Open
|
163
|
+
Nokogiri::HTML(get(opts[:url])).css('a').map do |a|
|
145
164
|
if opts[:link] == 'value'
|
146
165
|
a.values[0]
|
147
166
|
else
|
@@ -152,16 +171,12 @@ module Getv
|
|
152
171
|
|
153
172
|
def versions_using_npm
|
154
173
|
require 'json'
|
155
|
-
|
156
|
-
require 'net/http'
|
157
|
-
JSON.parse(Net::HTTP.get(URI("https://registry.npmjs.org/#{opts[:npm]}")))['versions'].keys
|
174
|
+
JSON.parse(get("https://registry.npmjs.org/#{opts[:npm]}"))['versions'].keys
|
158
175
|
end
|
159
176
|
|
160
177
|
def versions_using_pypi
|
161
178
|
require 'json'
|
162
|
-
|
163
|
-
require 'net/http'
|
164
|
-
JSON.parse(Net::HTTP.get(URI("https://pypi.org/pypi/#{opts[:pypi]}/json")))['releases'].keys
|
179
|
+
JSON.parse(get("https://pypi.org/pypi/#{opts[:pypi]}/json"))['releases'].keys
|
165
180
|
end
|
166
181
|
end
|
167
182
|
end
|
data/lib/getv/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: getv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- harbottle
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gli
|
@@ -90,6 +90,26 @@ dependencies:
|
|
90
90
|
- - "<"
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: 5.0.0
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: rest-client
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 2.1.0
|
100
|
+
- - "<"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 3.0.0
|
103
|
+
type: :runtime
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.1.0
|
110
|
+
- - "<"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 3.0.0
|
93
113
|
- !ruby/object:Gem::Dependency
|
94
114
|
name: semantic
|
95
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,7 +151,7 @@ metadata:
|
|
131
151
|
homepage_uri: https://github.com/liger1978/getv
|
132
152
|
source_code_uri: https://github.com/liger1978/getv
|
133
153
|
changelog_uri: https://github.com/liger1978/getv
|
134
|
-
post_install_message:
|
154
|
+
post_install_message:
|
135
155
|
rdoc_options: []
|
136
156
|
require_paths:
|
137
157
|
- lib
|
@@ -146,8 +166,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
166
|
- !ruby/object:Gem::Version
|
147
167
|
version: '0'
|
148
168
|
requirements: []
|
149
|
-
rubygems_version: 3.
|
150
|
-
signing_key:
|
169
|
+
rubygems_version: 3.2.22
|
170
|
+
signing_key:
|
151
171
|
specification_version: 4
|
152
172
|
summary: Pull package version numbers from the web in various ways.
|
153
173
|
test_files: []
|