Class: Cask::Audit Private

Inherits:
Object show all
Includes:
SystemCommand::Mixin, Utils::Curl
Defined in:
cask/audit.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.

Audit a cask for various problems.

Constant Summary collapse

Error =

This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.

T.type_alias do
  {
    message:   T.nilable(String),
    location:  T.nilable(Homebrew::SourceLocation),
    corrected: T::Boolean,
  }
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils::Curl

clear_path_cache, curl, curl_args, curl_check_http_content, curl_download, curl_executable, curl_headers, curl_http_content_headers_and_checksum, curl_output, curl_path, curl_response_follow_redirections, curl_response_last_location, curl_supports_fail_with_body?, curl_supports_tls13?, curl_version, curl_with_workarounds, http_status_ok?, parse_curl_output, url_protected_by_cloudflare?, url_protected_by_incapsula?

Methods included from SystemCommand::Mixin

#system_command, #system_command!

Constructor Details

#initialize(cask, download: false, quarantine: false, online: nil, strict: nil, signing: nil, new_cask: nil, only: [], except: []) ⇒ void

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.

Parameters:

  • cask (::Cask::Cask)
  • download (Boolean) (defaults to: false)
  • quarantine (Boolean) (defaults to: false)
  • online (Boolean, nil) (defaults to: nil)
  • strict (Boolean, nil) (defaults to: nil)
  • signing (Boolean, nil) (defaults to: nil)
  • new_cask (Boolean, nil) (defaults to: nil)
  • only (Array<String>) (defaults to: [])
  • except (Array<String>) (defaults to: [])


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'cask/audit.rb', line 45

def initialize(
  cask,
  download: false, quarantine: false,
  online: nil, strict: nil, signing: nil,
  new_cask: nil, only: [], except: []
)
  # `new_cask` implies `online`, `strict` and `signing`
  online = new_cask if online.nil?
  strict = new_cask if strict.nil?
  signing = new_cask if signing.nil?

  # `online` and `signing` imply `download`
  download ||= online || signing

  @cask = cask
  @download = T.let(nil, T.nilable(Download))
  @download = Download.new(cask, quarantine:) if download
  @online = online
  @strict = strict
  @signing = signing
  @new_cask = new_cask
  @only = only
  @except = except
end

Instance Attribute Details

#caskCask (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.

Returns:



33
34
35
# File 'cask/audit.rb', line 33

def cask
  @cask
end

#downloadDownload? (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.

Returns:



36
37
38
# File 'cask/audit.rb', line 36

def download
  @download
end

Instance Method Details

#add_error(message, location: nil, strict_only: false) ⇒ void

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.

This method returns an undefined value.

Parameters:



124
125
126
127
128
129
# File 'cask/audit.rb', line 124

def add_error(message, location: nil, strict_only: false)
  # Only raise non-critical audits if the user specified `--strict`.
  return if strict_only && !@strict

  errors << { message:, location:, corrected: false }
end

#errorsArray<Error>

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:



103
104
105
# File 'cask/audit.rb', line 103

def errors
  @errors ||= T.let([], T.nilable(T::Array[Error]))
end

#errors?Boolean

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:

  • (Boolean)


108
109
110
# File 'cask/audit.rb', line 108

def errors?
  errors.any?
end

#new_cask?Boolean

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:

  • (Boolean)


71
# File 'cask/audit.rb', line 71

def new_cask? = !!@new_cask

#online?Boolean

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:

  • (Boolean)


74
# File 'cask/audit.rb', line 74

def online? =!!@online

#resultString?

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:



132
133
134
# File 'cask/audit.rb', line 132

def result
  Formatter.error("failed") if errors?
end

#run!::Cask::Audit

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:



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'cask/audit.rb', line 83

def run!
  only_audits = @only
  except_audits = @except

  private_methods.map(&:to_s).grep(/^audit_/).each do |audit_method_name|
    name = audit_method_name.delete_prefix("audit_")
    next if !only_audits.empty? && only_audits.exclude?(name)
    next if except_audits.include?(name)

    send(audit_method_name)
  end

  self
rescue => e
  odebug e, ::Utils::Backtrace.clean(e)
  add_error "exception while auditing #{cask}: #{e.message}"
  self
end

#signing?Boolean

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:

  • (Boolean)


77
# File 'cask/audit.rb', line 77

def signing? = !!@signing

#strict?Boolean

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:

  • (Boolean)


80
# File 'cask/audit.rb', line 80

def strict? = !!@strict

#success?Boolean

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:

  • (Boolean)


113
114
115
# File 'cask/audit.rb', line 113

def success?
  !errors?
end

#summaryString?

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:



137
138
139
140
141
142
143
144
145
146
147
# File 'cask/audit.rb', line 137

def summary
  return if success?

  summary = ["audit for #{cask}: #{result}"]

  errors.each do |error|
    summary << " #{Formatter.error("-")} #{error[:message]}"
  end

  summary.join("\n")
end