Spec-Zone.ru › Homebrew

Class: RuboCop::Cop::FormulaAudit::LivecheckUrlSymbol Private

Inherits:
RuboCop::Cop::FormulaCop
  • Object
  • Base
  • RuboCop::Cop::FormulaCop
  • RuboCop::Cop::FormulaAudit::LivecheckUrlSymbol
show all
Extended by:
AutoCorrector
Defined in:
rubocops/livecheck.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.

This cop ensures that a supported symbol (head, stable, homepage) is used when the livecheck url` is identical to one of these formula URLs.

Instance Attribute Summary

Attributes inherited from RuboCop::Cop::FormulaCop

#file_path

Instance Method Summary collapse

  • #audit_formula(formula_nodes) ⇒ void private

Methods inherited from 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?

Methods included from 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

Instance Method Details

#audit_formula(formula_nodes) ⇒ 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:

  • formula_nodes (FormulaNodes)


69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'rubocops/livecheck.rb', line 69

def audit_formula(formula_nodes)
  body_node = formula_nodes.body_node
  livecheck_node = find_block(body_node, :livecheck)
  return if livecheck_node.blank?

  skip = find_every_method_call_by_name(livecheck_node, :skip).first.present?
  return if skip.present?

  livecheck_url_node = find_every_method_call_by_name(livecheck_node, :url).first
  return if livecheck_url_node.blank?

  livecheck_url = find_strings(livecheck_url_node).first
  return if livecheck_url.blank?

  livecheck_url = string_content(livecheck_url)

  head = find_every_method_call_by_name(body_node, :head).first
  head_url = find_strings(head).first

  if head.present? && head_url.blank?
    head = find_every_method_call_by_name(head, :url).first
    head_url = find_strings(head).first
  end

  head_url = string_content(head_url) if head_url.present?

  stable = find_every_method_call_by_name(body_node, :url).first
  stable_url = find_strings(stable).first

  if stable_url.blank?
    stable = find_every_method_call_by_name(body_node, :stable).first
    stable = find_every_method_call_by_name(stable, :url).first
    stable_url = find_strings(stable).first
  end

  stable_url = string_content(stable_url) if stable_url.present?

  homepage = find_every_method_call_by_name(body_node, :homepage).first
  homepage_url = string_content(find_strings(homepage).fetch(0)) if homepage.present?

  formula_urls = { head: head_url, stable: stable_url, homepage: homepage_url }.compact

  formula_urls.each do |symbol, url|
    next if url != livecheck_url && url != "#{livecheck_url}/" && "#{url}/" != livecheck_url

    offending_node(livecheck_url_node)
    problem "Use `url :#{symbol}`" do |corrector|
      corrector.replace(livecheck_url_node.source_range, "url :#{symbol}")
    end
    break
  end
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/RuboCop/Cop/FormulaAudit/LivecheckUrlSymbol.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API