setdevenv 0.1.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/.rubocop.yml +6 -0
- data/README.md +3 -4
- data/Rakefile +6 -1
- data/lib/set_dev_env/generator/base.rb +1 -3
- data/lib/set_dev_env/generator/dockerfile.rb +4 -3
- data/lib/set_dev_env/version.rb +1 -1
- data/lib/set_dev_env/version_fetcher.rb +71 -0
- data/lib/set_dev_env.rb +0 -3
- metadata +35 -5
- /data/{lib/set_dev_env/generator/templates → templates}/Dockerfile.tt +0 -0
- /data/{lib/set_dev_env/generator/templates → templates}/Makefile.tt +0 -0
- /data/{lib/set_dev_env/generator/templates → templates}/docker-compose.tt +0 -0
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/.rubocop.yml
ADDED
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
|
-
-
|
24
|
-
- Accept
|
25
|
-
- Accept an argument
|
26
|
-
- Accept an argument `--service` to create a custom service within docker-compose
|
23
|
+
- [ ] Accept those versions as arguments from cli
|
24
|
+
- [ ] Accept an argument in cli to use rails when setuping the new environment
|
25
|
+
- [ ] Accept an argument `--service` to create a custom service within docker-compose
|
data/Rakefile
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative '../version_fetcher'
|
4
|
+
|
3
5
|
module SetDevEnv
|
4
6
|
module Setup::Generator
|
5
7
|
class Dockerfile < Base
|
@@ -8,9 +10,8 @@ module SetDevEnv
|
|
8
10
|
argument :ruby_version, type: :string, default: nil, optional: true
|
9
11
|
|
10
12
|
def copy_dockerfile
|
11
|
-
|
12
|
-
self.
|
13
|
-
self.ruby_version ||= '3.4.1'
|
13
|
+
self.alpine_version ||= VersionFetcher.call(resource: :alpine)
|
14
|
+
self.ruby_version ||= VersionFetcher.call(resource: :ruby)
|
14
15
|
|
15
16
|
template('Dockerfile.tt', "#{name}/Dockerfile.dev")
|
16
17
|
end
|
data/lib/set_dev_env/version.rb
CHANGED
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'net/http'
|
5
|
+
require 'nokogiri'
|
6
|
+
require 'uri'
|
7
|
+
|
8
|
+
module SetDevEnv
|
9
|
+
module VersionFetcher
|
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
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def retrieve_alpine_version
|
29
|
+
response = make_request(:alpine)
|
30
|
+
|
31
|
+
return ALPINE_LATEST_VERSION unless response in Net::HTTPOK
|
32
|
+
|
33
|
+
document = Nokogiri::HTML5(response.body)
|
34
|
+
|
35
|
+
versions = document.css('table.pure-table tbody tr td:first-child').map do |td|
|
36
|
+
res = td.text.gsub(/\D/, '').chars
|
37
|
+
|
38
|
+
next if res.empty?
|
39
|
+
|
40
|
+
res[1, 0] = '.'
|
41
|
+
|
42
|
+
res * ''
|
43
|
+
end.uniq.compact
|
44
|
+
|
45
|
+
find_higher_version(versions)
|
46
|
+
rescue StandardError => _e
|
47
|
+
ALPINE_LATEST_VERSION
|
48
|
+
end
|
49
|
+
|
50
|
+
def retrieve_ruby_version
|
51
|
+
response = make_request(:ruby)
|
52
|
+
|
53
|
+
return RUBY_LATEST_VERSION unless response in Net::HTTPOK
|
54
|
+
|
55
|
+
document = Nokogiri::HTML5(response.body)
|
56
|
+
|
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
|
60
|
+
|
61
|
+
find_higher_version(versions)
|
62
|
+
rescue StandardError => _e
|
63
|
+
RUBY_LATEST_VERSION
|
64
|
+
end
|
65
|
+
|
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
|
70
|
+
end
|
71
|
+
end
|
data/lib/set_dev_env.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,28 @@
|
|
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
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: nokogiri
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '1.18'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '1.18'
|
12
26
|
- !ruby/object:Gem::Dependency
|
13
27
|
name: thor
|
14
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -79,6 +93,20 @@ dependencies:
|
|
79
93
|
- - ">="
|
80
94
|
- !ruby/object:Gem::Version
|
81
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'
|
82
110
|
email:
|
83
111
|
- b.sep@live.com
|
84
112
|
executables:
|
@@ -86,6 +114,7 @@ executables:
|
|
86
114
|
extensions: []
|
87
115
|
extra_rdoc_files: []
|
88
116
|
files:
|
117
|
+
- ".rubocop.yml"
|
89
118
|
- CHANGELOG.md
|
90
119
|
- CODE_OF_CONDUCT.md
|
91
120
|
- LICENSE.txt
|
@@ -100,12 +129,13 @@ files:
|
|
100
129
|
- lib/set_dev_env/generator/folder.rb
|
101
130
|
- lib/set_dev_env/generator/generator.rb
|
102
131
|
- lib/set_dev_env/generator/makefile.rb
|
103
|
-
- lib/set_dev_env/generator/templates/Dockerfile.tt
|
104
|
-
- lib/set_dev_env/generator/templates/Makefile.tt
|
105
|
-
- lib/set_dev_env/generator/templates/docker-compose.tt
|
106
132
|
- lib/set_dev_env/setup.rb
|
107
133
|
- lib/set_dev_env/version.rb
|
134
|
+
- lib/set_dev_env/version_fetcher.rb
|
108
135
|
- sig/set_dev_env.rbs
|
136
|
+
- templates/Dockerfile.tt
|
137
|
+
- templates/Makefile.tt
|
138
|
+
- templates/docker-compose.tt
|
109
139
|
homepage: https://github.com/b-sep/setdevenv
|
110
140
|
licenses:
|
111
141
|
- MIT
|
File without changes
|
File without changes
|
File without changes
|