From 15027d6610303d9fa5955c59f3ed04750b1eeb9f Mon Sep 17 00:00:00 2001 From: Charlie Sharpsteen Date: Wed, 24 Jun 2026 05:24:55 -0500 Subject: [PATCH 1/2] Handle nil tags in update_components Rake task Signed-off-by: Charlie Sharpsteen --- tasks/update_components.rake | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tasks/update_components.rake b/tasks/update_components.rake index a396aca0..b74a4b65 100644 --- a/tasks/update_components.rake +++ b/tasks/update_components.rake @@ -26,6 +26,8 @@ end # Normalize a version string by stripping common tag prefixes. def normalize_version(tag) + return nil if tag.nil? + tag.sub(/\Av(?=\d)/, '') .sub(/\Arefs\/tags\/v?/, '') .sub(/\Arelease-/, '') @@ -50,11 +52,12 @@ end # and somme people, like openssl, maintain multiple streams. So the latest tag might not be the highest version # We do some version comparison to find the actual highest version def latest_github_tag(owner, repo) - github_client.tags("#{owner}/#{repo}", per_page: 100) - .map { |tag| [tag.name, try_version(normalize_version(tag.name))] } - .reject { |_, version| version.nil? || version.prerelease? } - .max_by { |_, version| version } - .first + tags = github_client.tags("#{owner}/#{repo}", per_page: 100) + .map { |tag| [tag.name, try_version(normalize_version(tag.name))] } + .reject { |_, version| version.nil? || version.prerelease? } + .max_by { |_, version| version } + + tags.nil? ? tags : tags.first end def current_version(data) From ee313d1b2d20f95c3360868f1b25b00904027d8d Mon Sep 17 00:00:00 2001 From: Charlie Sharpsteen Date: Wed, 24 Jun 2026 05:29:38 -0500 Subject: [PATCH 2/2] Handle curl tags in update_components Rake task Signed-off-by: Charlie Sharpsteen --- tasks/update_components.rake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tasks/update_components.rake b/tasks/update_components.rake index b74a4b65..1a9b56d1 100644 --- a/tasks/update_components.rake +++ b/tasks/update_components.rake @@ -24,7 +24,8 @@ def github_owner_repo(url) [Regexp.last_match(1), Regexp.last_match(2).sub(/\.git$/, '')] end -# Normalize a version string by stripping common tag prefixes. +# Normalize a version string by stripping common tag prefixes and +# replacing underscores with . def normalize_version(tag) return nil if tag.nil? @@ -32,6 +33,8 @@ def normalize_version(tag) .sub(/\Arefs\/tags\/v?/, '') .sub(/\Arelease-/, '') .sub(/\Aopenssl-/, '') + .sub(/\Acurl-/, '') + .gsub('_', '.') end # Try to parse a version from a normalized string, returning nil if unparseable.