rb_version 0.1.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 +7 -0
- data/src/rb_version.rb +6 -0
- data/src/version/local_gemspec_version.rb +13 -0
- data/src/version/remote_gemspec_version.rb +23 -0
- data/src/version/semver.rb +62 -0
- data/src/version/unreachable_error.rb +4 -0
- metadata +61 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 0d63b36323f84fd69ebb8d8b778d257fe8829662
|
|
4
|
+
data.tar.gz: 6ea1ee76b26f83c99096da22546c103c739841ca
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: '08f6210c8dde41f2146ca7d463691341893e732670cd89f033d276d1085bced44f35dc10ed69b23b175c87f1478982246c7e2605137ec392679850bd237bc8cb'
|
|
7
|
+
data.tar.gz: 011f361ee616aea6d9b57c2f5a0239d191a0c4b1ce44b5f720c5a50131c30e953ad5560ef06aaa6f096fde36866701a0db170dd3b19d72ae56ce17e05d0ff499
|
data/src/rb_version.rb
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require "open-uri"
|
|
2
|
+
require "socket"
|
|
3
|
+
|
|
4
|
+
module Version
|
|
5
|
+
class RemoteGemspecVersion
|
|
6
|
+
# @param url [String]
|
|
7
|
+
def initialize(url)
|
|
8
|
+
@url = url
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# @return [String]
|
|
12
|
+
def extract
|
|
13
|
+
# `mode` and `perm` options are not used, but we need to set them in order to set
|
|
14
|
+
# options...
|
|
15
|
+
contents = URI.parse(@url).open("r", 0666, open_timeout: 1, read_timeout: 1).read
|
|
16
|
+
matches = /^\s*s.version\s*=\s*"(.+?)"\s*$/.match(contents)
|
|
17
|
+
raise UnreachableError.new if matches.nil?
|
|
18
|
+
matches[1]
|
|
19
|
+
rescue SocketError, Net::OpenTimeout
|
|
20
|
+
raise UnreachableError.new
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
module Version
|
|
2
|
+
class Semver
|
|
3
|
+
# @return [String]
|
|
4
|
+
def initialize(version)
|
|
5
|
+
match = /^(\d+)\.(\d+)\.(\d+)$/.match(version)
|
|
6
|
+
raise ArgumentError.new("Invalid SEMVER number") if match.nil?
|
|
7
|
+
|
|
8
|
+
@major = match[1].to_i
|
|
9
|
+
@minor = match[2].to_i
|
|
10
|
+
@patch = match[3].to_i
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# @return [Integer]
|
|
14
|
+
def major
|
|
15
|
+
@major
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# @return [Integer]
|
|
19
|
+
def minor
|
|
20
|
+
@minor
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# @return [Integer]
|
|
24
|
+
def patch
|
|
25
|
+
@patch
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @return [Boolean]
|
|
29
|
+
def <(semver)
|
|
30
|
+
is_a_semver?(semver)
|
|
31
|
+
|
|
32
|
+
@major < semver.major ||
|
|
33
|
+
(@major == semver.major && @minor < semver.minor) ||
|
|
34
|
+
(@major == semver.major && @minor == semver.minor && @patch < semver.patch)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @return [Boolean]
|
|
38
|
+
def >(semver)
|
|
39
|
+
is_a_semver?(semver)
|
|
40
|
+
|
|
41
|
+
@major > semver.major ||
|
|
42
|
+
(@major == semver.major && @minor > semver.minor) ||
|
|
43
|
+
(@major == semver.major && @minor == semver.minor && @patch > semver.patch)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# @return [Boolean]
|
|
47
|
+
def ==(semver)
|
|
48
|
+
is_a_semver?(semver)
|
|
49
|
+
|
|
50
|
+
@major == semver.major && @minor == semver.minor && @patch == semver.patch
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
# @return [Boolean]
|
|
56
|
+
def is_a_semver?(semver)
|
|
57
|
+
if !semver.respond_to?(:major) || !semver.respond_to?(:minor) || !semver.respond_to?(:patch)
|
|
58
|
+
raise ArgumentError.new("SemVer compatible object expected")
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: rb_version
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Aurélien Delogu
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2026-01-06 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: rb_gemspec
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 0.1.0
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 0.1.0
|
|
27
|
+
description:
|
|
28
|
+
email: aurelien.delogu@gmail.com
|
|
29
|
+
executables: []
|
|
30
|
+
extensions: []
|
|
31
|
+
extra_rdoc_files: []
|
|
32
|
+
files:
|
|
33
|
+
- src/rb_version.rb
|
|
34
|
+
- src/version/local_gemspec_version.rb
|
|
35
|
+
- src/version/remote_gemspec_version.rb
|
|
36
|
+
- src/version/semver.rb
|
|
37
|
+
- src/version/unreachable_error.rb
|
|
38
|
+
homepage:
|
|
39
|
+
licenses: []
|
|
40
|
+
metadata: {}
|
|
41
|
+
post_install_message:
|
|
42
|
+
rdoc_options: []
|
|
43
|
+
require_paths:
|
|
44
|
+
- src
|
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
46
|
+
requirements:
|
|
47
|
+
- - ">="
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: '0'
|
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
requirements: []
|
|
56
|
+
rubyforge_project:
|
|
57
|
+
rubygems_version: 2.6.14.4
|
|
58
|
+
signing_key:
|
|
59
|
+
specification_version: 4
|
|
60
|
+
summary: Gemspec version management utility
|
|
61
|
+
test_files: []
|