Class: Homebrew::TapAuditor Private
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 Taps.
Instance Attribute Summary collapse
- #cask_renames ⇒ Hash{String => String} readonly private
- #cask_tokens ⇒ Array<String> readonly private
- #formula_aliases ⇒ Array<String> readonly private
- #formula_names ⇒ Array<String> readonly private
- #formula_renames ⇒ Hash{String => String} readonly private
- #name ⇒ String readonly private
- #path ⇒ Pathname readonly private
- #problems ⇒ Array<Hash{Symbol => T.untyped}> readonly private
- #tap_audit_exceptions ⇒ Hash{Symbol => T.untyped} readonly private
- #tap_style_exceptions ⇒ Hash{Symbol => T.untyped} readonly private
Instance Method Summary collapse
- #audit ⇒ void private
- #audit_aliases_renames_duplicates ⇒ void private
- #audit_json_files ⇒ void private
- #audit_tap_formula_lists ⇒ void private
- #initialize(tap, strict:) ⇒ void constructor private
- #problem(message) ⇒ void private
Constructor Details
#initialize(tap, strict:) ⇒ 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.
43 44 45 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 75 76 |
# File 'tap_auditor.rb', line 43 def initialize(tap, strict:) @name = T.let(tap.name, String) @path = T.let(tap.path, Pathname) @tap_audit_exceptions = T.let(tap.audit_exceptions, T::Hash[Symbol, T.untyped]) @tap_style_exceptions = T.let(tap.style_exceptions, T::Hash[Symbol, T.untyped]) @tap_synced_versions_formulae = T.let(tap.synced_versions_formulae, T::Array[T::Array[String]]) @tap_disabled_new_usr_local_relocation_formulae = T.let(tap.disabled_new_usr_local_relocation_formulae, T::Array[String]) @tap_autobump = T.let(tap.autobump, T::Array[String]) @tap_official = T.let(tap.official?, T::Boolean) @problems = T.let([], T::Array[T::Hash[Symbol, T.untyped]]) @cask_tokens = T.let([], T::Array[String]) @formula_aliases = T.let([], T::Array[String]) @formula_renames = T.let({}, T::Hash[String, String]) @cask_renames = T.let({}, T::Hash[String, String]) @formula_names = T.let([], T::Array[String]) Homebrew::API.with_no_api_env do tap.clear_cache if Homebrew::EnvConfig.automatically_set_no_install_from_api? @formula_renames = tap.formula_renames @cask_renames = tap.cask_renames @cask_tokens = tap.cask_tokens.map do |cask_token| Utils.name_from_full_name(cask_token) end @formula_aliases = tap.aliases.map do |formula_alias| Utils.name_from_full_name(formula_alias) end @formula_names = tap.formula_names.map do |formula_name| Utils.name_from_full_name(formula_name) end end end |
Instance Attribute Details
#cask_renames ⇒ Hash{String => String} (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.
31 32 33 |
# File 'tap_auditor.rb', line 31 def cask_renames @cask_renames end |
#cask_tokens ⇒ Array<String> (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.
28 29 30 |
# File 'tap_auditor.rb', line 28 def cask_tokens @cask_tokens end |
#formula_aliases ⇒ Array<String> (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.
22 23 24 |
# File 'tap_auditor.rb', line 22 def formula_aliases @formula_aliases end |
#formula_names ⇒ Array<String> (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.
19 20 21 |
# File 'tap_auditor.rb', line 19 def formula_names @formula_names end |
#formula_renames ⇒ Hash{String => String} (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.
25 26 27 |
# File 'tap_auditor.rb', line 25 def formula_renames @formula_renames end |
#name ⇒ String (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.
13 14 15 |
# File 'tap_auditor.rb', line 13 def name @name end |
#path ⇒ Pathname (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.
16 17 18 |
# File 'tap_auditor.rb', line 16 def path @path end |
#problems ⇒ Array<Hash{Symbol => T.untyped}> (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.
40 41 42 |
# File 'tap_auditor.rb', line 40 def problems @problems end |
#tap_audit_exceptions ⇒ Hash{Symbol => T.untyped} (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.
34 35 36 |
# File 'tap_auditor.rb', line 34 def tap_audit_exceptions @tap_audit_exceptions end |
#tap_style_exceptions ⇒ Hash{Symbol => T.untyped} (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.
37 38 39 |
# File 'tap_auditor.rb', line 37 def tap_style_exceptions @tap_style_exceptions end |
Instance Method Details
#audit ⇒ 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.
79 80 81 82 83 |
# File 'tap_auditor.rb', line 79 def audit audit_json_files audit_tap_formula_lists audit_aliases_renames_duplicates end |
#audit_aliases_renames_duplicates ⇒ 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.
108 109 110 111 112 113 |
# File 'tap_auditor.rb', line 108 def audit_aliases_renames_duplicates duplicates = formula_aliases & formula_renames.keys return if duplicates.none? problem "The following should either be an alias or a rename, not both: #{Utils::Text.to_sentence(duplicates)}" end |
#audit_json_files ⇒ 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.
86 87 88 89 90 91 92 93 |
# File 'tap_auditor.rb', line 86 def audit_json_files json_patterns = Tap::HOMEBREW_TAP_JSON_FILES.map { |pattern| @path/pattern } Pathname.glob(json_patterns).each do |file| JSON.parse file.read rescue JSON::ParserError problem "#{file.to_s.delete_prefix("#{@path}/")} contains invalid JSON" end end |
#audit_tap_formula_lists ⇒ 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.
96 97 98 99 100 101 102 103 104 105 |
# File 'tap_auditor.rb', line 96 def audit_tap_formula_lists check_formula_list_directory "audit_exceptions", @tap_audit_exceptions check_formula_list_directory "style_exceptions", @tap_style_exceptions check_renames "formula_renames.json", @formula_renames, @formula_names, @formula_aliases check_renames "cask_renames.json", @cask_renames, @cask_tokens check_formula_list ".github/autobump.txt", @tap_autobump unless @tap_official check_formula_list "synced_versions_formulae", @tap_synced_versions_formulae.flatten check_formula_list "disabled_new_usr_local_relocation_formulae.json", @tap_disabled_new_usr_local_relocation_formulae end |
#problem(message) ⇒ 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.
116 117 118 |
# File 'tap_auditor.rb', line 116 def problem() @problems << { message:, location: nil, corrected: false } end |