Класс: RuboCop::Cop::FormulaAudit::BottleOrder Закрытый
- Наследуется от:
- RuboCop::Cop::FormulaCop
- Object
- Base
- RuboCop::Cop::FormulaCop
- RuboCop::Cop::FormulaAudit::BottleOrder
- Расширен модулем:
- AutoCorrector
- Определен в:
- rubocops/bottle.rb
Обзор
Этот класс является частью закрытого API. Этот класс можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого класса, поскольку он может быть удален или изменен без предупреждения.
Эта проверка анализирует порядок блока bottle в формулах.
Краткое описание атрибутов экземпляра
Атрибуты, унаследованные от RuboCop::Cop::FormulaCop
Краткое описание методов экземпляра свернуть
- #audit_formula(formula_nodes) ⇒ void закрытый
- #sha256_bottle_tag(node) ⇒ String, Symbol закрытый
- #sha256_order(nodes) ⇒ Array<String, Symbol> закрытый
Методы, унаследованные от RuboCop::Cop::FormulaCop
#audit_comments, #audit_urls, #caveats_strings, #dependency_name_hash_match?, #dependency_type_hash_match?, #depends_on?, #depends_on_name_type?, #formula_tap, #get_checksum_node, #on_class, #required_dependency?, #required_dependency_name?, #style_exceptions_dir, #tap_style_exception?, #versioned_formula?
Методы, включенные из HelperFunctions
#block_method_called_in_block?, #check_precedence, #class_name, #component_precedes?, #end_column, #expression_negated?, #find_all_blocks, #find_block, #find_blocks, #find_const, #find_every_func_call_by_name, #find_every_method_call_by_name, #find_instance_call, #find_instance_method_call, #find_method_calls_by_name, #find_method_def, #find_method_with_args, #find_node_method_by_name, #find_strings, #format_component, #line_number, #line_start_column, #method_called?, #method_called_ever?, #method_name, #node_equals?, #offending_node, #parameters, #parameters_passed?, #problem, #regex_match_group, #source_buffer, #start_column, #string_content
Подробное описание методов экземпляра
#audit_formula(formula_nodes) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удален или изменен без предупреждения.
Этот метод возвращает неопределенное значение.
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | # File 'rubocops/bottle.rb', line 130 def audit_formula(formula_nodes) bottle_node = find_block(formula_nodes.body_node, :bottle) return if bottle_node.nil? return if bottle_node.child_nodes.blank? non_sha256_nodes = [] sha256_nodes = [] bottle_block_method_calls = if bottle_node.child_nodes.last.begin_type? bottle_node.child_nodes.last.child_nodes else [bottle_node.child_nodes.last] end bottle_block_method_calls.each do |node| if node.method_name == :sha256 sha256_nodes << node else non_sha256_nodes << node end end arm64_macos_nodes = [] intel_macos_nodes = [] arm64_linux_nodes = [] intel_linux_nodes = [] sha256_nodes.each do |node| version = sha256_bottle_tag node if version == :arm64_linux arm64_linux_nodes << node elsif version.to_s.start_with?("arm64") arm64_macos_nodes << node elsif version.to_s.end_with?("_linux") intel_linux_nodes << node else intel_macos_nodes << node end end sorted_nodes = arm64_macos_nodes + intel_macos_nodes + arm64_linux_nodes + intel_linux_nodes return if sha256_order(sha256_nodes) == sha256_order(sorted_nodes) offending_node(bottle_node) problem "ARM bottles should be listed before Intel bottles" do |corrector| lines = ["bottle do"] lines += non_sha256_nodes.map { |node| "#{node.source}" } lines += arm64_macos_nodes.map { |node| "#{node.source}" } lines += intel_macos_nodes.map { |node| "#{node.source}" } lines += arm64_linux_nodes.map { |node| "#{node.source}" } lines += intel_linux_nodes.map { |node| "#{node.source}" } lines << " end" corrector.replace(bottle_node.source_range, lines.join("\n")) end end |
#sha256_bottle_tag(node) ⇒ String, Symbol
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удален или изменен без предупреждения.
194 195 196 197 198 199 200 201 | # File 'rubocops/bottle.rb', line 194 def sha256_bottle_tag(node) hash_pair = node.last_argument.pairs.last if hash_pair.key.sym_type? hash_pair.key.value else hash_pair.value.value end end |
#sha256_order(nodes) ⇒ Array<String, Symbol>
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удален или изменен без предупреждения.
187 188 189 190 191 | # File 'rubocops/bottle.rb', line 187 def sha256_order(nodes) nodes.map do |node| sha256_bottle_tag node end end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/RuboCop/Cop/FormulaAudit/BottleOrder.html