From 629dbb7c593f97538d59691173add17d47657939 Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Fri, 1 Oct 2021 13:42:05 +0100 Subject: [PATCH] rubocops/urls: allow plain HTTP mirrors --- Library/Homebrew/rubocops/extend/formula.rb | 4 ++-- Library/Homebrew/rubocops/urls.rb | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/rubocops/extend/formula.rb b/Library/Homebrew/rubocops/extend/formula.rb index 5ea158f256..e6cc658350 100644 --- a/Library/Homebrew/rubocops/extend/formula.rb +++ b/Library/Homebrew/rubocops/extend/formula.rb @@ -35,14 +35,14 @@ module RuboCop # @param urls [Array] url/mirror method call nodes # @param regex [Regexp] pattern to match URLs def audit_urls(urls, regex) - urls.each do |url_node| + urls.each_with_index do |url_node, index| url_string_node = parameters(url_node).first url_string = string_content(url_string_node) match_object = regex_match_group(url_string_node, regex) next unless match_object offending_node(url_string_node.parent) - yield match_object, url_string + yield match_object, url_string, index end end diff --git a/Library/Homebrew/rubocops/urls.rb b/Library/Homebrew/rubocops/urls.rb index 67aa7d29c2..963dc1980f 100644 --- a/Library/Homebrew/rubocops/urls.rb +++ b/Library/Homebrew/rubocops/urls.rb @@ -83,8 +83,14 @@ module RuboCop %r{^http://(?:[^/]*\.)?archive\.org}, %r{^http://(?:[^/]*\.)?freedesktop\.org}, %r{^http://(?:[^/]*\.)?mirrorservice\.org/}]) - audit_urls(urls, http_to_https_patterns) do |_, url| - problem "Please use https:// for #{url}" + audit_urls(urls, http_to_https_patterns) do |_, url, index| + # It's fine to have a plain HTTP mirror further down the mirror list. + https_url = url.dup.insert(4, "s") + https_index = nil + audit_urls(urls, https_url) do |_, _, found_https_index| + https_index = found_https_index + end + problem "Please use https:// for #{url}" if !https_index || https_index > index end apache_mirror_pattern = %r{^https?://(?:[^/]*\.)?apache\.org/dyn/closer\.(?:cgi|lua)\?path=/?(.*)}i