kettle-rb 0.1.15 → 0.1.17
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
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +22 -1
- data/README.md +1 -1
- data/lib/kettle/rb/platform_support/data.rb +33 -0
- data/lib/kettle/rb/platform_support/generator.rb +244 -0
- data/lib/kettle/rb/platform_support.rb +115 -0
- data/lib/kettle/rb/version.rb +1 -1
- data/lib/kettle/rb.rb +1 -0
- data.tar.gz.sig +0 -0
- metadata +17 -14
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d3a67dee10c54ea715bd24c351409646fcc8b2f878e3eda3b5187f4380840bf8
|
|
4
|
+
data.tar.gz: 8e8007ca4447fdc5d52020aadf39bb2acc9b15c68a62641575f28652ec39f557
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8e2a12df501f74a1df78cd89fe41c6351c0277277b200aa6d28bd50bca3e6e5a5bb91e784f654f902efd16f6b0d659f87a59980386c01bc9adbfb51f808fb8cf
|
|
7
|
+
data.tar.gz: 183398084b775b5fb1ccc58fd78b5aa549fb052b1dce814fd3f2dcb6187bce242868959d80768baf49c7c1434122b0675e3d9696e1cdae5c890149bfe9d8dbd7
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,25 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [0.1.17] - 2026-10-10
|
|
34
|
+
|
|
35
|
+
- TAG: [v0.1.17][0.1.17t]
|
|
36
|
+
- COVERAGE: 100.00% -- 362/362 lines in 10 files
|
|
37
|
+
- BRANCH COVERAGE: 97.62% -- 41/42 branches in 10 files
|
|
38
|
+
- 61.90% documented
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- [kc] kettle-jem/prepare: updated 19 project files:
|
|
43
|
+
- dependencies (19)
|
|
44
|
+
|
|
45
|
+
- [kc] kettle-jem/template: updated 8 project files:
|
|
46
|
+
- code and tests (2)
|
|
47
|
+
- dependencies (1)
|
|
48
|
+
- documentation (1)
|
|
49
|
+
- other (2)
|
|
50
|
+
- workflows (2)
|
|
51
|
+
|
|
33
52
|
## [0.1.15] - 2026-09-26
|
|
34
53
|
|
|
35
54
|
- TAG: [v0.1.15][0.1.15t]
|
|
@@ -344,7 +363,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
344
363
|
- Add `Kettle::Rb::CompatMatrix` as the shared Ruby, engine, Rails, RuboCop,
|
|
345
364
|
and RuboCop LTS compatibility source of truth for kettle-dev tooling.
|
|
346
365
|
|
|
347
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-rb/compare/v0.1.
|
|
366
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-rb/compare/v0.1.17...HEAD
|
|
367
|
+
[0.1.17]: https://github.com/kettle-dev/kettle-rb/compare/v0.1.15...v0.1.17
|
|
368
|
+
[0.1.17t]: https://github.com/kettle-dev/kettle-rb/releases/tag/v0.1.17
|
|
348
369
|
[0.1.15]: https://github.com/kettle-dev/kettle-rb/compare/v0.1.14...v0.1.15
|
|
349
370
|
[0.1.15t]: https://github.com/kettle-dev/kettle-rb/releases/tag/v0.1.15
|
|
350
371
|
[0.1.14]: https://github.com/kettle-dev/kettle-rb/compare/v0.1.13...v0.1.14
|
data/README.md
CHANGED
|
@@ -551,7 +551,7 @@ Thanks for RTFM. ☺️
|
|
|
551
551
|
[📌gitmoji]: https://gitmoji.dev
|
|
552
552
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
553
553
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
554
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.
|
|
554
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.362-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
555
555
|
[🔐security]: https://github.com/kettle-dev/kettle-rb/blob/main/SECURITY.md
|
|
556
556
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
557
557
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Generated by `rake kettle:rb:platform_support:generate`; do not edit by hand.
|
|
4
|
+
# Sources: GitHub releases API (TruffleRuby), ruby/setup-ruby windows-versions.json,
|
|
5
|
+
# and the documentation citation carried on each row.
|
|
6
|
+
|
|
7
|
+
module Kettle
|
|
8
|
+
module Rb
|
|
9
|
+
module PlatformSupport
|
|
10
|
+
GENERATED_ON = "2026-10-10"
|
|
11
|
+
TRUFFLERUBY_RELEASES_SCANNED = 66
|
|
12
|
+
RUBYINSTALLER_SERIES = ["2.0", "2.1", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7", "3.0", "3.1", "3.2", "3.3", "3.4", "4.0"].freeze
|
|
13
|
+
RUBYINSTALLER_ARM64_SERIES = ["3.4", "4.0"].freeze
|
|
14
|
+
OS_FAMILIES = ["linux", "macos", "windows"].freeze
|
|
15
|
+
RUNNER_ROWS = [
|
|
16
|
+
["linux", "ubuntu-latest", "x86_64", "ARM64 lanes available via ubuntu-22.04-arm / ubuntu-24.04-arm / ubuntu-26.04-arm, free for public repos", "https://github.blog/changelog/2025-08-07-arm64-hosted-runners-for-public-repositories-are-now-generally-available/"],
|
|
17
|
+
["macos", "macos-latest", "arm64", "Floating label; became ARM64 during the Apr-May 2024 macOS 14 migration and resolves to macOS 26 ARM64 since 2026-07-15", "https://github.com/actions/runner-images/issues/14167"],
|
|
18
|
+
["windows", "windows-latest", "x64", "x64 only (Server 2025); ARM64 Windows requires the explicit windows-11-arm label", "https://github.blog/changelog/2025-08-07-arm64-hosted-runners-for-public-repositories-are-now-generally-available/"]
|
|
19
|
+
].freeze
|
|
20
|
+
ENGINE_OS_ROWS = [
|
|
21
|
+
["ruby", "linux", "supported", "All versioned MRI workflows run on Linux; aarch64-linux prebuilts ship in the ruby-builder toolcache from 2.3.5", "https://github.com/ruby/ruby-builder/releases/tag/toolcache"],
|
|
22
|
+
["ruby", "macos", "supported", "macos-latest is ARM64; community prebuilts from 2.6.7 and native arm64-darwin configure.ac support from 2.7.2", "https://github.com/ruby/ruby/commit/23655e6de5ee989feb8c65c7061fe9a71579dc54"],
|
|
23
|
+
["ruby", "windows", "supported", "RubyInstaller x64 since 2.0.0; ARM64 builds recorded in RUBYINSTALLER_ARM64_SERIES (from 3.4); supported series in RUBYINSTALLER_SERIES", "https://github.com/ruby/setup-ruby/blob/master/windows-versions.json"],
|
|
24
|
+
["jruby", "linux", "supported", "Official, including aarch64-Linux jffi from 9.1", "https://www.jruby.org/2021-09-22/jruby-9-3-0-0.html"],
|
|
25
|
+
["jruby", "macos", "supported", "Official from 9.3; arm64 jffi slice binary-verified from 9.2.18.0; requires an aarch64 JDK (Temurin 11+ or Zulu 8)", "https://github.com/jruby/jruby/releases/tag/9.2.18.0"],
|
|
26
|
+
["jruby", "windows", "supported", "Official; CRuby C extensions cannot be built or used, so gems must be pure-Ruby or ship Java extensions", "https://www.jruby.org/2021-09-22/jruby-9-3-0-0.html"],
|
|
27
|
+
["truffleruby", "linux", "supported", "Official; linux-aarch64 since 21.2", "https://github.com/truffleruby/truffleruby/releases"],
|
|
28
|
+
["truffleruby", "macos", "supported", "darwin-aarch64 since 22.2.0; macOS Intel removed in 34.0, so macos-*-intel lanes must exclude TruffleRuby 34+", "https://github.com/truffleruby/truffleruby/releases/tag/graal-34.0.0"],
|
|
29
|
+
["truffleruby", "windows", "unsupported", "Never shipped a Windows build (zero Windows assets across 66 releases scanned 2026-10-10); setup-ruby hard-fails", "https://github.com/ruby/setup-ruby/blob/master/README.md"]
|
|
30
|
+
].freeze
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rubygems"
|
|
4
|
+
|
|
5
|
+
module Kettle
|
|
6
|
+
module Rb
|
|
7
|
+
module PlatformSupport
|
|
8
|
+
# Regenerates +lib/kettle/rb/platform_support/data.rb+ from the GitHub
|
|
9
|
+
# releases API (TruffleRuby) and ruby/setup-ruby's windows-versions.json.
|
|
10
|
+
#
|
|
11
|
+
# This is development tooling. It is loaded by the
|
|
12
|
+
# +kettle:rb:platform_support:generate+ rake task, never by
|
|
13
|
+
# +require "kettle/rb"+.
|
|
14
|
+
#
|
|
15
|
+
# Two claims are re-derived from the network on every run, because they
|
|
16
|
+
# are the ones generation depends on and they can change:
|
|
17
|
+
#
|
|
18
|
+
# - TruffleRuby Windows support: derived by scanning every TruffleRuby
|
|
19
|
+
# release for Windows assets. Zero assets means "unsupported", and a
|
|
20
|
+
# future TruffleRuby Windows build flips the row on regeneration.
|
|
21
|
+
# - The RubyInstaller series available on Windows, recorded as
|
|
22
|
+
# +RUBYINSTALLER_SERIES+ provenance for the ruby/windows claim.
|
|
23
|
+
#
|
|
24
|
+
# Every other claim is documentation-sourced and curated below with its
|
|
25
|
+
# citation, so an unevidenced claim cannot be expressed in the data file.
|
|
26
|
+
class Generator
|
|
27
|
+
TRUFFLERUBY_RELEASES_URL = "https://api.github.com/repos/truffleruby/truffleruby/releases?per_page=100"
|
|
28
|
+
WINDOWS_VERSIONS_URL = "https://raw.githubusercontent.com/ruby/setup-ruby/master/windows-versions.json"
|
|
29
|
+
USER_AGENT = "kettle-rb platform-support generator"
|
|
30
|
+
DATA_PATH = File.expand_path(File.join(File.dirname(__FILE__), "data.rb"))
|
|
31
|
+
|
|
32
|
+
# TruffleRuby assets are named e.g. +truffleruby-24.2.0-linux-amd64.tar.gz+;
|
|
33
|
+
# a Windows build would carry one of these tokens.
|
|
34
|
+
WINDOWS_ASSET_PATTERN = /windows|mingw|mswin|\.exe\z|\.msi\z/i.freeze
|
|
35
|
+
|
|
36
|
+
TRUFFLERUBY_WINDOWS_CITATION = "https://github.com/ruby/setup-ruby/blob/master/README.md"
|
|
37
|
+
|
|
38
|
+
# CI OS families: a fourth platform vocabulary, distinct from Gemfile DSL
|
|
39
|
+
# platform symbols (Ruby implementations), Gem::Platform strings
|
|
40
|
+
# (OS/architecture), and GitHub runner labels (CI hardware). These values
|
|
41
|
+
# select runner labels; they must never reach +bundle lock --add-platform+
|
|
42
|
+
# or a Gemfile +platforms:+ DSL untranslated.
|
|
43
|
+
OS_FAMILIES = ["linux", "macos", "windows"].freeze
|
|
44
|
+
|
|
45
|
+
# Documentation-sourced runner claims:
|
|
46
|
+
# [os_family, runner_label, architecture, note, citation]
|
|
47
|
+
RUNNER_ROWS = [
|
|
48
|
+
["linux", "ubuntu-latest", "x86_64",
|
|
49
|
+
"ARM64 lanes available via ubuntu-22.04-arm / ubuntu-24.04-arm / ubuntu-26.04-arm, free for public repos",
|
|
50
|
+
"https://github.blog/changelog/2025-08-07-arm64-hosted-runners-for-public-repositories-are-now-generally-available/"],
|
|
51
|
+
["macos", "macos-latest", "arm64",
|
|
52
|
+
"Floating label; became ARM64 during the Apr-May 2024 macOS 14 migration and resolves to macOS 26 ARM64 since 2026-07-15",
|
|
53
|
+
"https://github.com/actions/runner-images/issues/14167"],
|
|
54
|
+
["windows", "windows-latest", "x64",
|
|
55
|
+
"x64 only (Server 2025); ARM64 Windows requires the explicit windows-11-arm label",
|
|
56
|
+
"https://github.blog/changelog/2025-08-07-arm64-hosted-runners-for-public-repositories-are-now-generally-available/"]
|
|
57
|
+
].freeze
|
|
58
|
+
|
|
59
|
+
# Documentation-sourced engine support claims:
|
|
60
|
+
# [engine, os_family, support, note, citation]
|
|
61
|
+
# The truffleruby/windows row is deliberately absent: it is derived from
|
|
62
|
+
# the releases scan, not curated.
|
|
63
|
+
ENGINE_OS_ROWS = [
|
|
64
|
+
["ruby", "linux", "supported",
|
|
65
|
+
"All versioned MRI workflows run on Linux; aarch64-linux prebuilts ship in the ruby-builder toolcache from 2.3.5",
|
|
66
|
+
"https://github.com/ruby/ruby-builder/releases/tag/toolcache"],
|
|
67
|
+
["ruby", "macos", "supported",
|
|
68
|
+
"macos-latest is ARM64; community prebuilts from 2.6.7 and native arm64-darwin configure.ac support from 2.7.2",
|
|
69
|
+
"https://github.com/ruby/ruby/commit/23655e6de5ee989feb8c65c7061fe9a71579dc54"],
|
|
70
|
+
["ruby", "windows", "supported",
|
|
71
|
+
"RubyInstaller x64 since 2.0.0; ARM64 builds recorded in RUBYINSTALLER_ARM64_SERIES (from 3.4); supported series in RUBYINSTALLER_SERIES",
|
|
72
|
+
"https://github.com/ruby/setup-ruby/blob/master/windows-versions.json"],
|
|
73
|
+
["jruby", "linux", "supported",
|
|
74
|
+
"Official, including aarch64-Linux jffi from 9.1",
|
|
75
|
+
"https://www.jruby.org/2021-09-22/jruby-9-3-0-0.html"],
|
|
76
|
+
["jruby", "macos", "supported",
|
|
77
|
+
"Official from 9.3; arm64 jffi slice binary-verified from 9.2.18.0; requires an aarch64 JDK (Temurin 11+ or Zulu 8)",
|
|
78
|
+
"https://github.com/jruby/jruby/releases/tag/9.2.18.0"],
|
|
79
|
+
["jruby", "windows", "supported",
|
|
80
|
+
"Official; CRuby C extensions cannot be built or used, so gems must be pure-Ruby or ship Java extensions",
|
|
81
|
+
"https://www.jruby.org/2021-09-22/jruby-9-3-0-0.html"],
|
|
82
|
+
["truffleruby", "linux", "supported",
|
|
83
|
+
"Official; linux-aarch64 since 21.2",
|
|
84
|
+
"https://github.com/truffleruby/truffleruby/releases"],
|
|
85
|
+
["truffleruby", "macos", "supported",
|
|
86
|
+
"darwin-aarch64 since 22.2.0; macOS Intel removed in 34.0, so macos-*-intel lanes must exclude TruffleRuby 34+",
|
|
87
|
+
"https://github.com/truffleruby/truffleruby/releases/tag/graal-34.0.0"]
|
|
88
|
+
].freeze
|
|
89
|
+
|
|
90
|
+
# @return [String] generation date recorded in the data file
|
|
91
|
+
attr_reader :generated_on
|
|
92
|
+
|
|
93
|
+
# @param options [Hash]
|
|
94
|
+
# @option options [#call] :truffleruby_releases_fetcher returns GitHub release hashes
|
|
95
|
+
# @option options [#call] :windows_versions_fetcher returns the parsed windows-versions.json
|
|
96
|
+
# @option options [String] :generated_on date to record
|
|
97
|
+
def initialize(options = {})
|
|
98
|
+
@truffleruby_releases_fetcher = options[:truffleruby_releases_fetcher] || method(:fetch_truffleruby_releases)
|
|
99
|
+
@windows_versions_fetcher = options[:windows_versions_fetcher] || method(:fetch_windows_versions)
|
|
100
|
+
@generated_on = options[:generated_on] || Time.now.utc.strftime("%Y-%m-%d")
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# @return [Integer] TruffleRuby releases examined for Windows assets
|
|
104
|
+
def truffleruby_releases_scanned
|
|
105
|
+
truffleruby_releases.length
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# @return [Integer] Windows assets found across all TruffleRuby releases
|
|
109
|
+
def truffleruby_windows_asset_count
|
|
110
|
+
truffleruby_releases.inject(0) do |count, release|
|
|
111
|
+
count + windows_asset_names(release).length
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# @return [String] "supported" or "unsupported", derived from the scan
|
|
116
|
+
def truffleruby_windows_support
|
|
117
|
+
truffleruby_windows_asset_count.zero? ? "unsupported" : "supported"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# @return [Array<String>] minor series setup-ruby can install on Windows
|
|
121
|
+
def rubyinstaller_series
|
|
122
|
+
series_matching { true }
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# @return [Array<String>] minor series with an ARM64 RubyInstaller build,
|
|
126
|
+
# derived from the arch keys rather than curated
|
|
127
|
+
def rubyinstaller_arm64_series
|
|
128
|
+
versions = windows_versions
|
|
129
|
+
series_matching do |key|
|
|
130
|
+
archs = versions[key]
|
|
131
|
+
archs.is_a?(Hash) && archs.key?("arm64")
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# @return [Array<Array>] engine support rows, curated rows plus the
|
|
136
|
+
# derived truffleruby/windows row
|
|
137
|
+
def engine_os_rows
|
|
138
|
+
ENGINE_OS_ROWS.map(&:dup) << truffleruby_windows_row
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# @return [String] Ruby source for +data.rb+
|
|
142
|
+
def render
|
|
143
|
+
lines = [
|
|
144
|
+
"# frozen_string_literal: true",
|
|
145
|
+
"",
|
|
146
|
+
"# Generated by `rake kettle:rb:platform_support:generate`; do not edit by hand.",
|
|
147
|
+
"# Sources: GitHub releases API (TruffleRuby), ruby/setup-ruby windows-versions.json,",
|
|
148
|
+
"# and the documentation citation carried on each row.",
|
|
149
|
+
"",
|
|
150
|
+
"module Kettle",
|
|
151
|
+
" module Rb",
|
|
152
|
+
" module PlatformSupport",
|
|
153
|
+
" GENERATED_ON = #{generated_on.inspect}",
|
|
154
|
+
" TRUFFLERUBY_RELEASES_SCANNED = #{truffleruby_releases_scanned.inspect}",
|
|
155
|
+
" RUBYINSTALLER_SERIES = #{rubyinstaller_series.inspect}.freeze",
|
|
156
|
+
" RUBYINSTALLER_ARM64_SERIES = #{rubyinstaller_arm64_series.inspect}.freeze",
|
|
157
|
+
" OS_FAMILIES = #{OS_FAMILIES.inspect}.freeze",
|
|
158
|
+
" RUNNER_ROWS = [",
|
|
159
|
+
RUNNER_ROWS.map { |row| " #{row.inspect}" }.join(",\n"),
|
|
160
|
+
" ].freeze",
|
|
161
|
+
" ENGINE_OS_ROWS = [",
|
|
162
|
+
engine_os_rows.map { |row| " #{row.inspect}" }.join(",\n"),
|
|
163
|
+
" ].freeze",
|
|
164
|
+
" end",
|
|
165
|
+
" end",
|
|
166
|
+
"end",
|
|
167
|
+
""
|
|
168
|
+
]
|
|
169
|
+
lines.join("\n")
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Writes the rendered data file.
|
|
173
|
+
#
|
|
174
|
+
# @param path [String]
|
|
175
|
+
# @return [String] the written path
|
|
176
|
+
def write(path = DATA_PATH)
|
|
177
|
+
File.open(path, "w") { |file| file.write(render) }
|
|
178
|
+
path
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
private
|
|
182
|
+
|
|
183
|
+
def truffleruby_releases
|
|
184
|
+
@truffleruby_releases ||= @truffleruby_releases_fetcher.call
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def windows_versions
|
|
188
|
+
@windows_versions ||= @windows_versions_fetcher.call
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def series_matching(&block)
|
|
192
|
+
windows_versions.keys
|
|
193
|
+
.select { |key| key.to_s =~ /\A\d+\.\d+\.\d+\z/ && block.call(key) }
|
|
194
|
+
.map { |key| key.to_s[/\A\d+\.\d+/] }
|
|
195
|
+
.uniq
|
|
196
|
+
.sort_by { |series| Gem::Version.new(series) }
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
def windows_asset_names(release)
|
|
200
|
+
(release["assets"] || []).map { |asset| asset["name"].to_s }.select do |name|
|
|
201
|
+
name =~ WINDOWS_ASSET_PATTERN
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def truffleruby_windows_row
|
|
206
|
+
scanned = truffleruby_releases_scanned
|
|
207
|
+
count = truffleruby_windows_asset_count
|
|
208
|
+
if count.zero?
|
|
209
|
+
["truffleruby", "windows", "unsupported",
|
|
210
|
+
"Never shipped a Windows build (zero Windows assets across #{scanned} releases scanned #{generated_on}); setup-ruby hard-fails",
|
|
211
|
+
TRUFFLERUBY_WINDOWS_CITATION]
|
|
212
|
+
else
|
|
213
|
+
["truffleruby", "windows", "supported",
|
|
214
|
+
"#{count} Windows assets across #{scanned} releases scanned #{generated_on}",
|
|
215
|
+
TRUFFLERUBY_WINDOWS_CITATION]
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def fetch_truffleruby_releases
|
|
220
|
+
require "json"
|
|
221
|
+
require "net/http"
|
|
222
|
+
require "uri"
|
|
223
|
+
|
|
224
|
+
uri = URI.parse(TRUFFLERUBY_RELEASES_URL)
|
|
225
|
+
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
|
|
226
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
|
227
|
+
request["Accept"] = "application/vnd.github+json"
|
|
228
|
+
request["User-Agent"] = USER_AGENT
|
|
229
|
+
http.request(request)
|
|
230
|
+
end
|
|
231
|
+
JSON.parse(response.body)
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def fetch_windows_versions
|
|
235
|
+
require "json"
|
|
236
|
+
require "net/http"
|
|
237
|
+
require "uri"
|
|
238
|
+
|
|
239
|
+
JSON.parse(Net::HTTP.get(URI.parse(WINDOWS_VERSIONS_URL)))
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rubygems"
|
|
4
|
+
require_relative "platform_support/data"
|
|
5
|
+
|
|
6
|
+
module Kettle
|
|
7
|
+
module Rb
|
|
8
|
+
# OS-platform support evidence for CI matrix generation, one entry per
|
|
9
|
+
# engine / OS-family pair.
|
|
10
|
+
#
|
|
11
|
+
# The +linux+ / +macos+ / +windows+ vocabulary names CI OS *families*: a
|
|
12
|
+
# fourth platform vocabulary, distinct from Gemfile DSL platform symbols
|
|
13
|
+
# (Ruby implementations), +Gem::Platform+ strings (OS/architecture), and
|
|
14
|
+
# GitHub runner labels (CI hardware). These values select runner labels;
|
|
15
|
+
# they must never be passed to +bundle lock --add-platform+ or a Gemfile
|
|
16
|
+
# +platforms:+ DSL without translation.
|
|
17
|
+
#
|
|
18
|
+
# The data lives in +platform_support/data.rb+ and is regenerated from the
|
|
19
|
+
# GitHub releases API and ruby/setup-ruby by
|
|
20
|
+
# +rake kettle:rb:platform_support:generate+ (see
|
|
21
|
+
# {PlatformSupport::Generator}). Every claim carries a citation, so an
|
|
22
|
+
# unevidenced claim cannot be expressed.
|
|
23
|
+
module PlatformSupport
|
|
24
|
+
RunnerEntry = Struct.new(
|
|
25
|
+
:os_family,
|
|
26
|
+
:runner_label,
|
|
27
|
+
:architecture,
|
|
28
|
+
:note,
|
|
29
|
+
:citation
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
EngineOsEntry = Struct.new(
|
|
33
|
+
:engine,
|
|
34
|
+
:os_family,
|
|
35
|
+
:support,
|
|
36
|
+
:note,
|
|
37
|
+
:citation
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
RUNNERS = begin
|
|
41
|
+
entries = {}
|
|
42
|
+
RUNNER_ROWS.each do |row|
|
|
43
|
+
entry = RunnerEntry.new(*row)
|
|
44
|
+
entry.freeze
|
|
45
|
+
entries[entry.os_family] = entry
|
|
46
|
+
end
|
|
47
|
+
entries.freeze
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
ENGINE_OS = begin
|
|
51
|
+
entries = {}
|
|
52
|
+
ENGINE_OS_ROWS.each do |row|
|
|
53
|
+
entry = EngineOsEntry.new(*row)
|
|
54
|
+
entry.freeze
|
|
55
|
+
entries[[entry.engine, entry.os_family]] = entry
|
|
56
|
+
end
|
|
57
|
+
entries.freeze
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
class << self
|
|
61
|
+
# @param value [Object]
|
|
62
|
+
# @return [Boolean] whether +value+ is a known CI OS family
|
|
63
|
+
def os_family?(value)
|
|
64
|
+
OS_FAMILIES.include?(value.to_s)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# @param os_family [String]
|
|
68
|
+
# @return [RunnerEntry, nil]
|
|
69
|
+
def runner_entry(os_family)
|
|
70
|
+
RUNNERS[os_family.to_s]
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# @param os_family [String]
|
|
74
|
+
# @return [String, nil] the GitHub runner label for the OS family
|
|
75
|
+
def runner_label(os_family)
|
|
76
|
+
found = runner_entry(os_family)
|
|
77
|
+
found && found.runner_label
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# @param engine [String]
|
|
81
|
+
# @param os_family [String]
|
|
82
|
+
# @return [EngineOsEntry, nil]
|
|
83
|
+
def engine_os_entry(engine, os_family)
|
|
84
|
+
ENGINE_OS[[engine.to_s, os_family.to_s]]
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# @param engine [String]
|
|
88
|
+
# @param os_family [String]
|
|
89
|
+
# @return [Boolean] whether the engine is supported on the OS family.
|
|
90
|
+
# An unknown pair is treated as unsupported rather than supported, so
|
|
91
|
+
# a missing claim can only hide CI coverage, never invent it.
|
|
92
|
+
def engine_supports_os?(engine, os_family)
|
|
93
|
+
found = engine_os_entry(engine, os_family)
|
|
94
|
+
!found.nil? && found.support == "supported"
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# @param engine [String]
|
|
98
|
+
# @return [Array<String>] OS families the engine is supported on
|
|
99
|
+
def supported_os_families(engine)
|
|
100
|
+
ENGINE_OS.values
|
|
101
|
+
.select { |entry| entry.engine == engine.to_s && entry.support == "supported" }
|
|
102
|
+
.map { |entry| entry.os_family }
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# @param os_family [String]
|
|
106
|
+
# @return [Array<String>] engines supported on the OS family
|
|
107
|
+
def supported_engines(os_family)
|
|
108
|
+
ENGINE_OS.values
|
|
109
|
+
.select { |entry| entry.os_family == os_family.to_s && entry.support == "supported" }
|
|
110
|
+
.map { |entry| entry.engine }
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
data/lib/kettle/rb/version.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Kettle
|
|
|
5
5
|
# Version namespace for this gem.
|
|
6
6
|
module Version
|
|
7
7
|
# Current gem version.
|
|
8
|
-
VERSION = "0.1.
|
|
8
|
+
VERSION = "0.1.17"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
data/lib/kettle/rb.rb
CHANGED
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kettle-rb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.17
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -46,7 +46,7 @@ dependencies:
|
|
|
46
46
|
version: '3.1'
|
|
47
47
|
- - ">="
|
|
48
48
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: 3.1.
|
|
49
|
+
version: 3.1.9
|
|
50
50
|
type: :development
|
|
51
51
|
prerelease: false
|
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -56,7 +56,7 @@ dependencies:
|
|
|
56
56
|
version: '3.1'
|
|
57
57
|
- - ">="
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: 3.1.
|
|
59
|
+
version: 3.1.9
|
|
60
60
|
- !ruby/object:Gem::Dependency
|
|
61
61
|
name: bundler-audit
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -134,7 +134,7 @@ dependencies:
|
|
|
134
134
|
version: '3.2'
|
|
135
135
|
- - ">="
|
|
136
136
|
- !ruby/object:Gem::Version
|
|
137
|
-
version: 3.2.
|
|
137
|
+
version: 3.2.5
|
|
138
138
|
type: :development
|
|
139
139
|
prerelease: false
|
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -144,7 +144,7 @@ dependencies:
|
|
|
144
144
|
version: '3.2'
|
|
145
145
|
- - ">="
|
|
146
146
|
- !ruby/object:Gem::Version
|
|
147
|
-
version: 3.2.
|
|
147
|
+
version: 3.2.5
|
|
148
148
|
- !ruby/object:Gem::Dependency
|
|
149
149
|
name: kettle-test
|
|
150
150
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -154,7 +154,7 @@ dependencies:
|
|
|
154
154
|
version: '2.0'
|
|
155
155
|
- - ">="
|
|
156
156
|
- !ruby/object:Gem::Version
|
|
157
|
-
version: 2.0.
|
|
157
|
+
version: 2.0.23
|
|
158
158
|
type: :development
|
|
159
159
|
prerelease: false
|
|
160
160
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -164,7 +164,7 @@ dependencies:
|
|
|
164
164
|
version: '2.0'
|
|
165
165
|
- - ">="
|
|
166
166
|
- !ruby/object:Gem::Version
|
|
167
|
-
version: 2.0.
|
|
167
|
+
version: 2.0.23
|
|
168
168
|
- !ruby/object:Gem::Dependency
|
|
169
169
|
name: turbo_tests2
|
|
170
170
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -174,7 +174,7 @@ dependencies:
|
|
|
174
174
|
version: '3.2'
|
|
175
175
|
- - ">="
|
|
176
176
|
- !ruby/object:Gem::Version
|
|
177
|
-
version: 3.2.
|
|
177
|
+
version: 3.2.14
|
|
178
178
|
type: :development
|
|
179
179
|
prerelease: false
|
|
180
180
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -184,7 +184,7 @@ dependencies:
|
|
|
184
184
|
version: '3.2'
|
|
185
185
|
- - ">="
|
|
186
186
|
- !ruby/object:Gem::Version
|
|
187
|
-
version: 3.2.
|
|
187
|
+
version: 3.2.14
|
|
188
188
|
- !ruby/object:Gem::Dependency
|
|
189
189
|
name: ruby-progressbar
|
|
190
190
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -228,7 +228,7 @@ dependencies:
|
|
|
228
228
|
version: '2.0'
|
|
229
229
|
- - ">="
|
|
230
230
|
- !ruby/object:Gem::Version
|
|
231
|
-
version: 2.0.
|
|
231
|
+
version: 2.0.15
|
|
232
232
|
type: :development
|
|
233
233
|
prerelease: false
|
|
234
234
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -238,7 +238,7 @@ dependencies:
|
|
|
238
238
|
version: '2.0'
|
|
239
239
|
- - ">="
|
|
240
240
|
- !ruby/object:Gem::Version
|
|
241
|
-
version: 2.0.
|
|
241
|
+
version: 2.0.15
|
|
242
242
|
description: "\U0001F4CF Provides the shared Ruby, engine, Rails, RuboCop, and RuboCop
|
|
243
243
|
LTS compatibility matrix used by Kettle-managed gems."
|
|
244
244
|
email:
|
|
@@ -256,6 +256,9 @@ files:
|
|
|
256
256
|
- lib/kettle/rb/gem_floors.rb
|
|
257
257
|
- lib/kettle/rb/gem_floors/data.rb
|
|
258
258
|
- lib/kettle/rb/gem_floors/generator.rb
|
|
259
|
+
- lib/kettle/rb/platform_support.rb
|
|
260
|
+
- lib/kettle/rb/platform_support/data.rb
|
|
261
|
+
- lib/kettle/rb/platform_support/generator.rb
|
|
259
262
|
- lib/kettle/rb/version.rb
|
|
260
263
|
- sig/kettle/rb.rbs
|
|
261
264
|
homepage: https://github.com/kettle-dev/kettle-rb
|
|
@@ -263,10 +266,10 @@ licenses:
|
|
|
263
266
|
- MIT
|
|
264
267
|
metadata:
|
|
265
268
|
homepage_uri: https://kettle-rb.galtzo.com
|
|
266
|
-
source_code_uri: https://github.com/kettle-dev/kettle-rb/tree/v0.1.
|
|
267
|
-
changelog_uri: https://github.com/kettle-dev/kettle-rb/blob/v0.1.
|
|
269
|
+
source_code_uri: https://github.com/kettle-dev/kettle-rb/tree/v0.1.17
|
|
270
|
+
changelog_uri: https://github.com/kettle-dev/kettle-rb/blob/v0.1.17/CHANGELOG.md
|
|
268
271
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-rb/issues
|
|
269
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-rb/0.1.
|
|
272
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-rb/0.1.17
|
|
270
273
|
funding_uri: https://github.com/sponsors/pboling
|
|
271
274
|
wiki_uri: https://github.com/kettle-dev/kettle-rb/wiki
|
|
272
275
|
news_uri: https://www.railsbling.com/tags/kettle-rb
|
metadata.gz.sig
CHANGED
|
Binary file
|