@@ -12,9 +12,8 @@ module PuppetReferences
1212 # drive the table and resolves one row per stable release from authoritative,
1313 # structured metadata, so the tables are never hand-maintained. The shared
1414 # GitHub releases/contents plumbing lives here so the per-table classes stay
15- # small. Agent and OpenBolt rows come from openvox-sbom-tools SBOMs (see
16- # SbomReleaseTable); server and OpenVoxDB rows are still resolved from upstream
17- # pins until their SBOMs land.
15+ # small. Every table now sources its bundled-component columns from
16+ # openvox-sbom-tools SBOMs (see SbomReleaseTable).
1817 #
1918 # Authenticates with ENV GITHUB_TOKEN/GH_TOKEN, falling back to `gh auth token`
2019 # for local runs. A release whose components can't be resolved (e.g. a tag that
@@ -210,52 +209,45 @@ def columns
210209 end
211210 end
212211
213- # openvox-server: bundled JRuby, resolved through the server's pinned
214- # jruby-utils -> jruby-deps "9.4.12.1-3" (the trailing "-N" packaging suffix is
215- # stripped). Java is a supported requirement, not a pin, so it is hand-maintained
216- # on the docs page rather than resolved here. Stays on the upstream-pin scraper
217- # until an openvox-server SBOM is published.
218- class ServerReleaseTable < ReleaseTable
219- SERVER_REPO = 'OpenVoxProject/openvox-server'
220- JRUBY_UTILS_REPO = 'OpenVoxProject/jruby-utils '
212+ # openvox-server: bundled JRuby, read from the openvox- server SBOM 's `jruby-base`
213+ # component (the resolved JRuby version). This replaces the previous resolution
214+ # through the server's pinned jruby-utils -> jruby-deps in project.clj, which
215+ # required stripping a "-N" packaging suffix; `jruby-base` is already clean. Java
216+ # is a supported requirement, not a pin, so it is hand-maintained on the docs
217+ # page rather than resolved here.
218+ class ServerReleaseTable < SbomReleaseTable
219+ REPO = 'OpenVoxProject/openvox-server '
221220
222221 def repo
223- SERVER_REPO
224- end
225-
226- def row_for ( tag , cache )
227- jruby_utils = pin_in_project_clj ( SERVER_REPO , tag , 'jruby-utils' )
228- { 'release' => tag , 'jruby' => ( cache [ jruby_utils ] ||= jruby_from_utils ( jruby_utils ) ) }
222+ REPO
229223 end
230224
231- private
232-
233- def jruby_from_utils ( jruby_utils_ver )
234- deps = pin_in_project_clj ( JRUBY_UTILS_REPO , jruby_utils_ver , 'jruby-deps' )
235- deps . sub ( /-\d +\z / , '' )
225+ def sbom_package
226+ 'openvox-server'
236227 end
237228
238- # Version of an org.openvoxproject/<name> dependency pinned in a repo's project.clj.
239- def pin_in_project_clj ( repo , ref , name )
240- clj = raw ( repo , 'project.clj' , ref )
241- version = clj [ %r{org\. openvoxproject/#{ Regexp . escape ( name ) } \s +"([^"]+)"} , 1 ]
242- raise NotFound , "#{ name } pin in #{ repo } @#{ ref } " unless version
243-
244- version
229+ def columns
230+ { 'jruby' => 'jruby-base' }
245231 end
246232 end
247233
248- # OpenVoxDB ships on its own independent version line; the table is just its
249- # stable release tags. PostgreSQL is a supported requirement (the openvoxdb
250- # module only declares a postgresql dependency range, not a bundled version),
251- # so it is hand-maintained on the docs page.
252- class OpenvoxdbReleaseTable < ReleaseTable
234+ # OpenVoxDB ships on its own independent version line. It is a Clojure/JVM
235+ # service (no bundled JRuby), so the one bundled component worth surfacing is the
236+ # embedded Jetty HTTP server, read from its per-release SBOM. Java and PostgreSQL
237+ # are supported requirements (the openvoxdb module only declares a postgresql
238+ # dependency range, not a bundled version), so those columns stay hand-maintained
239+ # on the docs page.
240+ class OpenvoxdbReleaseTable < SbomReleaseTable
253241 def repo
254242 'OpenVoxProject/openvoxdb'
255243 end
256244
257- def row_for ( tag , _cache )
258- { 'release' => tag }
245+ def sbom_package
246+ 'openvoxdb'
247+ end
248+
249+ def columns
250+ { 'jetty' => 'jetty-server' }
259251 end
260252 end
261253end
0 commit comments