setdevenv 0.2.0 → 0.3.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 +0 -1
- data/Rakefile +6 -1
- data/lib/set_dev_env/generator/dockerfile.rb +0 -1
- data/lib/set_dev_env/version.rb +1 -1
- data/lib/set_dev_env/version_fetcher.rb +43 -48
- data/lib/set_dev_env.rb +0 -3
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e136e0c06de106df3ee5fb5eb14e7b9fc13dde0130d00f748b737bd586bce87
|
4
|
+
data.tar.gz: e3b404127200fd7d584011380ca0f9e984887d9cc77ff20c835fc250e2e9753d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 802ade39ae04da7beca32e0597cc3bf57d004cd45b8259489667d3806882b38db8a0e7f53c7c3bf50f788e6630efbb850b3fa47ab5c2f3ca32880cb68a104485
|
7
|
+
data.tar.gz: b2d3d8586ef1a413a8893a20b85bd3b4adeff07bcfc387fec26026b6c9cb031316e0dbd728c9676f4b817430da76d1b468dae2b24a40ffdb30447d6d5f78d853
|
data/README.md
CHANGED
@@ -20,7 +20,6 @@ This command will generate 3 files (***more to comming eventually***) within a f
|
|
20
20
|
|
21
21
|
## TODO
|
22
22
|
|
23
|
-
- [ ] Retrieve ruby/alpine latests version from somewhere (and cache it)
|
24
23
|
- [ ] Accept those versions as arguments from cli
|
25
24
|
- [ ] Accept an argument in cli to use rails when setuping the new environment
|
26
25
|
- [ ] Accept an argument `--service` to create a custom service within docker-compose
|
data/Rakefile
CHANGED
@@ -10,7 +10,6 @@ module SetDevEnv
|
|
10
10
|
argument :ruby_version, type: :string, default: nil, optional: true
|
11
11
|
|
12
12
|
def copy_dockerfile
|
13
|
-
# TODO: retrieve those values from somewhere to take latest ruby/alpine versions
|
14
13
|
self.alpine_version ||= VersionFetcher.call(resource: :alpine)
|
15
14
|
self.ruby_version ||= VersionFetcher.call(resource: :ruby)
|
16
15
|
|
data/lib/set_dev_env/version.rb
CHANGED
@@ -7,70 +7,65 @@ require 'uri'
|
|
7
7
|
|
8
8
|
module SetDevEnv
|
9
9
|
module VersionFetcher
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
10
|
+
extend self
|
11
|
+
|
12
|
+
ALPINE_LATEST_VERSION = '3.21'
|
13
|
+
RUBY_LATEST_VERSION = '3.4.2'
|
14
|
+
URLS = {
|
15
|
+
alpine: 'https://alpinelinux.org/releases/',
|
16
|
+
ruby: 'https://www.ruby-lang.org/en/downloads/releases/'
|
17
|
+
}.freeze
|
18
|
+
|
19
|
+
def call(resource:)
|
20
|
+
case resource
|
21
|
+
in :alpine then retrieve_alpine_version
|
22
|
+
in :ruby then retrieve_ruby_version
|
20
23
|
end
|
24
|
+
end
|
21
25
|
|
22
|
-
|
23
|
-
|
24
|
-
def alpine = '3.21'
|
26
|
+
private
|
25
27
|
|
26
|
-
|
27
|
-
|
28
|
-
end
|
28
|
+
def retrieve_alpine_version
|
29
|
+
response = make_request(:alpine)
|
29
30
|
|
30
|
-
|
31
|
-
cache_file_path = "#{CACHE_FOLDER_PATH}/cache.json"
|
31
|
+
return ALPINE_LATEST_VERSION unless response in Net::HTTPOK
|
32
32
|
|
33
|
-
|
33
|
+
document = Nokogiri::HTML5(response.body)
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
cache[resource]&.fetch(:latest_version)
|
38
|
-
end
|
35
|
+
versions = document.css('table.pure-table tbody tr td:first-child').map do |td|
|
36
|
+
res = td.text.gsub(/\D/, '').chars
|
39
37
|
|
40
|
-
|
41
|
-
response = Net::HTTP.get_response(URI(RUBY_RELEASES_ENDPOINT))
|
38
|
+
next if res.empty?
|
42
39
|
|
43
|
-
|
40
|
+
res[1, 0] = '.'
|
44
41
|
|
45
|
-
|
42
|
+
res * ''
|
43
|
+
end.uniq.compact
|
46
44
|
|
47
|
-
|
48
|
-
|
49
|
-
|
45
|
+
find_higher_version(versions)
|
46
|
+
rescue StandardError => _e
|
47
|
+
ALPINE_LATEST_VERSION
|
48
|
+
end
|
50
49
|
|
51
|
-
|
52
|
-
|
50
|
+
def retrieve_ruby_version
|
51
|
+
response = make_request(:ruby)
|
53
52
|
|
54
|
-
|
55
|
-
rescue StandardError => _e
|
56
|
-
RUBY_LATEST_VERSION
|
57
|
-
end
|
53
|
+
return RUBY_LATEST_VERSION unless response in Net::HTTPOK
|
58
54
|
|
59
|
-
|
60
|
-
versions.map { Gem::Version.new(it) }.max.to_s
|
61
|
-
end
|
55
|
+
document = Nokogiri::HTML5(response.body)
|
62
56
|
|
63
|
-
|
64
|
-
|
57
|
+
versions = document.css('table.release-list tbody tr td:first-child').map do |td|
|
58
|
+
td.text.gsub(/\D/, '')[0..2].chars * '.'
|
59
|
+
end.uniq
|
65
60
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
JSON.pretty_generate({ ruby: { latest_version: version } })
|
70
|
-
)
|
71
|
-
end
|
61
|
+
find_higher_version(versions)
|
62
|
+
rescue StandardError => _e
|
63
|
+
RUBY_LATEST_VERSION
|
72
64
|
end
|
73
65
|
|
74
|
-
|
66
|
+
def find_higher_version(versions) = versions.map { Gem::Version.new(it) }.max.to_s
|
67
|
+
def make_request(resource) = Net::HTTP.get_response(URI(URLS[resource]))
|
68
|
+
|
69
|
+
private_constant :ALPINE_LATEST_VERSION, :RUBY_LATEST_VERSION, :URLS
|
75
70
|
end
|
76
71
|
end
|
data/lib/set_dev_env.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: setdevenv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Júnior
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-04-26 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: nokogiri
|
@@ -93,6 +93,20 @@ dependencies:
|
|
93
93
|
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: webmock
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
96
110
|
email:
|
97
111
|
- b.sep@live.com
|
98
112
|
executables:
|