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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 036d7166efb316e1d0c3da0386416487354eb70e37d7594685695a1f40c86d07
4
- data.tar.gz: 8adecb3566409a5da7a7fec22b1d3ab35422c67c0f30a536340a88aa6f06db21
3
+ metadata.gz: 2e136e0c06de106df3ee5fb5eb14e7b9fc13dde0130d00f748b737bd586bce87
4
+ data.tar.gz: e3b404127200fd7d584011380ca0f9e984887d9cc77ff20c835fc250e2e9753d
5
5
  SHA512:
6
- metadata.gz: ac90cc46fa5723f631af66b633998bb11fc7b0b15292411a5fe19f4fea2b42ff82264f6805561bab2f709800635d21654536cc92f27fb3a8057982d699b49806
7
- data.tar.gz: 90ac5d92b13af5f9c34a90d26da6b2c09b85eaef020ef810b9404fd2cd1da51debdc5c8f4ab88519f7711f256ffdae3b11126ac28a0641d2671fbd7ecdffbb13
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
@@ -5,4 +5,9 @@ require 'minitest/test_task'
5
5
 
6
6
  Minitest::TestTask.create
7
7
 
8
- task default: :test
8
+ task default: %i[test cucumber]
9
+
10
+ desc 'run cucumber features'
11
+ task :cucumber do
12
+ sh 'bundle exec cucumber'
13
+ end
@@ -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
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SetDevEnv
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
@@ -7,70 +7,65 @@ require 'uri'
7
7
 
8
8
  module SetDevEnv
9
9
  module VersionFetcher
10
- CACHE_FOLDER_PATH = "#{File.dirname(__FILE__, 3)}/.cache".freeze
11
- RUBY_LATEST_VERSION = '3.4.2'
12
- RUBY_RELEASES_ENDPOINT = 'https://www.ruby-lang.org/en/downloads/releases/'
13
-
14
- class << self
15
- def call(resource:)
16
- case resource
17
- in :alpine then alpine
18
- in :ruby then ruby(resource:)
19
- end
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
- private
23
-
24
- def alpine = '3.21'
26
+ private
25
27
 
26
- def ruby(resource:)
27
- retrieve_version_from_cache(resource) || retrieve_version_from_web
28
- end
28
+ def retrieve_alpine_version
29
+ response = make_request(:alpine)
29
30
 
30
- def retrieve_version_from_cache(resource)
31
- cache_file_path = "#{CACHE_FOLDER_PATH}/cache.json"
31
+ return ALPINE_LATEST_VERSION unless response in Net::HTTPOK
32
32
 
33
- return unless File.readable?(cache_file_path)
33
+ document = Nokogiri::HTML5(response.body)
34
34
 
35
- cache = JSON.parse(File.read(cache_file_path), symbolize_names: true)
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
- def retrieve_version_from_web
41
- response = Net::HTTP.get_response(URI(RUBY_RELEASES_ENDPOINT))
38
+ next if res.empty?
42
39
 
43
- return RUBY_LATEST_VERSION unless response.instance_of?(Net::HTTPOK)
40
+ res[1, 0] = '.'
44
41
 
45
- document = Nokogiri::HTML5(response.body)
42
+ res * ''
43
+ end.uniq.compact
46
44
 
47
- versions = document.css('table.release-list tr td:first-child').map do |td|
48
- td.text.gsub(/\D/, '')[0..2].chars * '.'
49
- end.uniq
45
+ find_higher_version(versions)
46
+ rescue StandardError => _e
47
+ ALPINE_LATEST_VERSION
48
+ end
50
49
 
51
- higher_version = find_higher_version(versions)
52
- cache(higher_version)
50
+ def retrieve_ruby_version
51
+ response = make_request(:ruby)
53
52
 
54
- higher_version
55
- rescue StandardError => _e
56
- RUBY_LATEST_VERSION
57
- end
53
+ return RUBY_LATEST_VERSION unless response in Net::HTTPOK
58
54
 
59
- def find_higher_version(versions)
60
- versions.map { Gem::Version.new(it) }.max.to_s
61
- end
55
+ document = Nokogiri::HTML5(response.body)
62
56
 
63
- def cache(version)
64
- FileUtils.mkdir_p(CACHE_FOLDER_PATH)
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
- # TODO: prevent overwrite file if file exists (in case im caching alpine/ruby versions
67
- File.write(
68
- '../../.cache/cache.json',
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
- private_constant :CACHE_FOLDER_PATH, :RUBY_LATEST_VERSION, :RUBY_RELEASES_ENDPOINT
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
@@ -4,7 +4,4 @@ require_relative 'set_dev_env/setup'
4
4
  require_relative 'set_dev_env/version'
5
5
 
6
6
  module SetDevEnv
7
- def self.create(name)
8
- Setup.new(name).build
9
- end
10
7
  end
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.2.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-03-05 00:00:00.000000000 Z
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: