Class: Homebrew::ResourceAuditor Private
- Inherits:
-
Object
- Object
- Homebrew::ResourceAuditor
- Defined in:
- resource_auditor.rb
Overview
This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.
Auditor for checking common violations in Resources.
Instance Attribute Summary collapse
-
#checksum ⇒ Object
readonly
private
-
#mirrors ⇒ Object
readonly
private
-
#name ⇒ Object
readonly
private
-
#owner ⇒ Object
readonly
private
-
#problems ⇒ Object
readonly
private
-
#spec_name ⇒ Object
readonly
private
-
#specs ⇒ Object
readonly
private
-
#url ⇒ Object
readonly
private
-
#using ⇒ Object
readonly
private
-
#version ⇒ Object
readonly
private
Class Method Summary collapse
-
.curl_openssl_and_deps ⇒ Object
private
Instance Method Summary collapse
-
#audit ⇒ Object
private
-
#audit_checksum ⇒ Object
private
-
#audit_download_strategy ⇒ Object
private
-
#audit_urls ⇒ Object
private
-
#audit_version ⇒ Object
private
-
#initialize(resource, spec_name, options = {}) ⇒ ResourceAuditor
constructor
private
A new instance of ResourceAuditor.
-
#problem(text) ⇒ Object
private
Constructor Details
#initialize(resource, spec_name, options = {}) ⇒ ResourceAuditor
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Returns a new instance of ResourceAuditor.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'resource_auditor.rb', line 11 def initialize(resource, spec_name, = {}) @name = resource.name @version = resource.version @checksum = resource.checksum @url = resource.url @mirrors = resource.mirrors @using = resource.using @specs = resource.specs @owner = resource.owner @spec_name = spec_name @online = [:online] @strict = [:strict] @problems = [] end |
Instance Attribute Details
#checksum ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
9 10 11 |
# File 'resource_auditor.rb', line 9 def checksum @checksum end |
#mirrors ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
9 10 11 |
# File 'resource_auditor.rb', line 9 def mirrors @mirrors end |
#name ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
9 10 11 |
# File 'resource_auditor.rb', line 9 def name @name end |
#owner ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
9 10 11 |
# File 'resource_auditor.rb', line 9 def owner @owner end |
#problems ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
9 10 11 |
# File 'resource_auditor.rb', line 9 def problems @problems end |
#spec_name ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
9 10 11 |
# File 'resource_auditor.rb', line 9 def spec_name @spec_name end |
#specs ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
9 10 11 |
# File 'resource_auditor.rb', line 9 def specs @specs end |
#url ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
9 10 11 |
# File 'resource_auditor.rb', line 9 def url @url end |
#using ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
9 10 11 |
# File 'resource_auditor.rb', line 9 def using @using end |
#version ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
9 10 11 |
# File 'resource_auditor.rb', line 9 def version @version end |
Class Method Details
.curl_openssl_and_deps ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
83 84 85 86 87 88 89 90 91 92 93 |
# File 'resource_auditor.rb', line 83 def self.curl_openssl_and_deps @curl_openssl_and_deps ||= begin formulae_names = ["curl", "openssl"] formulae_names += formulae_names.flat_map do |f| Formula[f].recursive_dependencies.map(&:name) end formulae_names.uniq rescue FormulaUnavailableError [] end end |
Instance Method Details
#audit ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
26 27 28 29 30 31 32 |
# File 'resource_auditor.rb', line 26 def audit audit_version audit_download_strategy audit_checksum audit_urls self end |
#audit_checksum ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
76 77 78 79 80 81 |
# File 'resource_auditor.rb', line 76 def audit_checksum return if spec_name == :head return unless DownloadStrategyDetector.detect(url, using) <= CurlDownloadStrategy problem "Checksum is missing" if checksum.blank? end |
#audit_download_strategy ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'resource_auditor.rb', line 46 def audit_download_strategy url_strategy = DownloadStrategyDetector.detect(url) if (using == :git || url_strategy == GitDownloadStrategy) && specs[:tag] && !specs[:revision] problem "Git should specify :revision when a :tag is specified." end return unless using if using == :cvs mod = specs[:module] problem "Redundant :module value in URL" if mod == name if url.match?(%r{:[^/]+$}) mod = url.split(":").last if mod == name problem "Redundant CVS module appended to URL" else problem "Specify CVS module as `:module => \"#{mod}\"` instead of appending it to the URL" end end end return unless url_strategy == DownloadStrategyDetector.detect("", using) problem "Redundant :using value in URL" end |
#audit_urls ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'resource_auditor.rb', line 95 def audit_urls return unless @online urls = [url] + mirrors urls.each do |url| next if !@strict && mirrors.include?(url) strategy = DownloadStrategyDetector.detect(url, using) if strategy <= CurlDownloadStrategy && !url.start_with?("file") if (http_content_problem = curl_check_http_content(url, specs: specs)) problem http_content_problem end elsif strategy <= GitDownloadStrategy problem "The URL #{url} is not a valid git URL" unless Utils::Git.remote_exists? url elsif strategy <= SubversionDownloadStrategy next unless DevelopmentTools.subversion_handles_most_https_certificates? next unless Utils::Svn.available? problem "The URL #{url} is not a valid svn URL" unless Utils::Svn.remote_exists? url end end end |
#audit_version ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
34 35 36 37 38 39 40 41 42 43 44 |
# File 'resource_auditor.rb', line 34 def audit_version if version.nil? problem "missing version" elsif !version.detected_from_url? version_text = version version_url = Version.detect(url, **specs) if version_url.to_s == version_text.to_s && version.instance_of?(Version) problem "version #{version_text} is redundant with version scanned from URL" end end end |
#problem(text) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
118 119 120 |
# File 'resource_auditor.rb', line 118 def problem(text) @problems << text end |