latest_version 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +25 -0
- data/README.md +2 -0
- data/lib/latest_version.rb +18 -8
- data/lib/latest_version/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dda6fe0f325a80126ace0f9e2b262e125caac6757562cc70a466b019aec8e587
|
4
|
+
data.tar.gz: f56342dfa1ea4ae6cfae2f70ee8602e4779858aae69da26656a74964425a8737
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc5ad872e920e2397f326c61c116fd67bbf46023d349f93ab5bc6e54c979455a1ee4e33026ef9da166d06f9a05cf15b3042ac695673683307ff84adc283ad7a2
|
7
|
+
data.tar.gz: a62c72144017fcaa275d2242945b3add658c38989dc48df7731588741a5050efbd7cab3b40118d977e650197c8bcf39433c2b1e1d02012c43c27312695c66f0c
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
|
+
|
8
|
+
## [Unreleased]
|
9
|
+
|
10
|
+
## [0.1.1] - 2020-02-15
|
11
|
+
|
12
|
+
### Added
|
13
|
+
|
14
|
+
- Support for elixir and rust.
|
15
|
+
- Where possible, use Github API instead of page scraping.
|
16
|
+
|
17
|
+
## [0.1.0] - 2019-02-15
|
18
|
+
|
19
|
+
### Added
|
20
|
+
|
21
|
+
- Support for ruby, rails and python.
|
22
|
+
|
23
|
+
[unreleased]: https://github.com/zubin/latest_version/compare/v0.1.1...HEAD
|
24
|
+
[0.1.1]: https://github.com/zubin/latest_version/compare/v0.1.0...v0.1.1
|
25
|
+
[0.1.0]: https://github.com/zubin/latest_version/releases/tag/v0.1.0
|
data/README.md
CHANGED
@@ -15,10 +15,12 @@ $ gem install latest_version
|
|
15
15
|
```sh
|
16
16
|
$ latest_version --help
|
17
17
|
Commands:
|
18
|
+
latest_version elixir # Returns latest version of elixir
|
18
19
|
latest_version help [COMMAND] # Describe available commands or one specific command
|
19
20
|
latest_version python # Returns latest version of python
|
20
21
|
latest_version rails # Returns latest version of rails
|
21
22
|
latest_version ruby # Returns latest version of ruby
|
23
|
+
latest_version rust # Returns latest version of rust
|
22
24
|
```
|
23
25
|
|
24
26
|
## Contributing
|
data/lib/latest_version.rb
CHANGED
@@ -1,22 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'json'
|
3
4
|
require 'net/http'
|
4
5
|
require 'uri'
|
5
6
|
|
6
7
|
module LatestVersion
|
7
8
|
LIBRARIES = {
|
9
|
+
elixir: -> { latest_github_release(repo: 'elixir-lang/elixir') },
|
8
10
|
python: lambda {
|
9
|
-
|
11
|
+
find_text(
|
10
12
|
url: 'https://www.python.org/',
|
11
13
|
regex: %r{<p>Latest: <a href="/downloads/release/python-\d+/">Python (\d+\.\d+\.\d+)</a></p>},
|
12
14
|
)
|
13
15
|
},
|
14
|
-
rails:
|
15
|
-
|
16
|
-
},
|
17
|
-
ruby: lambda {
|
18
|
-
find(url: 'https://www.ruby-lang.org/en/downloads/', regex: /current stable version is (\d+\.\d+\.\d+)\./)
|
19
|
-
},
|
16
|
+
rails: -> { latest_github_release(repo: 'rails/rails') },
|
17
|
+
ruby: -> { latest_github_tag(repo: 'ruby/ruby').gsub('_', '.') },
|
18
|
+
rust: -> { latest_github_tag(repo: 'rust-lang/rust') },
|
20
19
|
}.freeze
|
21
20
|
UnknownLibraryError = Class.new(StandardError)
|
22
21
|
private_constant :LIBRARIES
|
@@ -29,7 +28,18 @@ module LatestVersion
|
|
29
28
|
LIBRARIES.keys.sort
|
30
29
|
end
|
31
30
|
|
32
|
-
private_class_method def self.
|
31
|
+
private_class_method def self.find_text(url:, regex:)
|
33
32
|
Net::HTTP.get(URI.parse(url))[regex, 1]
|
34
33
|
end
|
34
|
+
|
35
|
+
private_class_method def self.latest_github_release(repo:)
|
36
|
+
json = Net::HTTP.get(URI("https://api.github.com/repos/#{repo}/releases/latest"))
|
37
|
+
JSON.parse(json, symbolize_names: true).fetch(:tag_name).gsub(/^v/, '')
|
38
|
+
end
|
39
|
+
|
40
|
+
private_class_method def self.latest_github_tag(repo:)
|
41
|
+
json = Net::HTTP.get(URI("https://api.github.com/repos/#{repo}/tags"))
|
42
|
+
tags = JSON.parse(json, symbolize_names: true)
|
43
|
+
tags.map { |tag| tag.fetch(:name).gsub(/^v/, '') }.reject { |name| name[/[a-z]/i] }.max
|
44
|
+
end
|
35
45
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: latest_version
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zubin Henner
|
@@ -120,6 +120,7 @@ files:
|
|
120
120
|
- ".rspec"
|
121
121
|
- ".rubocop.yml"
|
122
122
|
- ".travis.yml"
|
123
|
+
- CHANGELOG.md
|
123
124
|
- Gemfile
|
124
125
|
- LICENSE
|
125
126
|
- README.md
|