Spec-Zone.ru › Homebrew

Класс: RuboCop::Cop::FormulaAudit::GenerateCompletionsDSL Приватный

Наследует:
RuboCop::Cop::FormulaCop
  • Object
  • Base
  • RuboCop::Cop::FormulaCop
  • RuboCop::Cop::FormulaAudit::GenerateCompletionsDSL
показать все
Расширен модулем:
AutoCorrector
Определён в:
rubocops/lines.rb,
sorbet/rbi/dsl/rubo_cop/cop/formula_audit/generate_completions_dsl.rbi

Обзор

Этот класс является частью приватного API. Этот класс можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого класса, поскольку он может быть удалён или изменён без предупреждения.

Этот cop проверяет, что используется DSL generate_completions_from_executable.

Краткое описание атрибутов экземпляра

Атрибуты, унаследованные от RuboCop::Cop::FormulaCop

#file_path

Краткое описание методов экземпляра свернуть

  • #audit_formula(formula_nodes) ⇒ void приватный
  • #correctable_shell_completion_node(node, *pattern, **kwargs, &block) ⇒ T.untyped приватный
  • #shell_completion_node(node, *pattern, **kwargs, &block) ⇒ T.untyped приватный

Методы, унаследованные от 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. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Этот метод возвращает неопределённое значение.

Параметры:

  • formula_nodes (FormulaNodes)


690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
# File 'rubocops/lines.rb', line 690

def audit_formula(formula_nodes)
  install = find_method_def(formula_nodes.body_node, :install)
  return if install.blank?

  correctable_shell_completion_node(install) do |node, shell, base_name, executable, subcommand,
                                                shell_parameter|
    # generate_completions_from_executable only applicable if shell is passed
    next unless shell_parameter.match?(/(bash|zsh|fish|pwsh)/)

    base_name = base_name.delete_prefix("_").delete_suffix(".fish")
    shell = shell.to_s.delete_suffix("_completion").to_sym
    shell_parameter_stripped = shell_parameter
                               .delete_suffix("bash")
                               .delete_suffix("zsh")
                               .delete_suffix("fish")
                               .delete_suffix("pwsh")
    shell_parameter_format = if shell_parameter_stripped.empty?
      nil
    elsif shell_parameter_stripped == "--"
      :flag
    elsif shell_parameter_stripped == "--shell="
      :arg
    else
      shell_parameter_stripped
    end

    replacement_args = %w[]
    replacement_args << executable.source
    replacement_args << subcommand.source
    replacement_args << "base_name: \"#{base_name}\"" if base_name != @formula_name
    replacement_args << "shells: [:#{shell}]"
    unless shell_parameter_format.nil?
      replacement_args << "shell_parameter_format: #{shell_parameter_format.inspect}"
    end

    @offensive_node = node
    replacement = "generate_completions_from_executable(#{replacement_args.join(", ")})"

    problem "Use `#{replacement}` instead of `#{@offensive_node.source}`." do |corrector|
      corrector.replace(@offensive_node.source_range, replacement)
    end
  end

  shell_completion_node(install) do |node|
    next if node.source.include?("<<~") # skip heredoc completion scripts
    next if node.source.match?(/{.*=>.*}/) # skip commands needing custom ENV variables

    offending_node(node)
    problem "Use `generate_completions_from_executable` DSL instead of `#{T.must(@offensive_node).source}`."
  end
end

#correctable_shell_completion_node(node, *pattern, **kwargs, &block) ⇒ T.untyped

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Параметры:

  • node (RuboCop::AST::Node)
  • pattern (String, Symbol)
  • kwargs (T.untyped)
  • block (T.untyped)

Возвращает:

  • (T.untyped)


17
# File 'sorbet/rbi/dsl/rubo_cop/cop/formula_audit/generate_completions_dsl.rbi', line 17

def correctable_shell_completion_node(node, *pattern, **kwargs, &block); end

#shell_completion_node(node, *pattern, **kwargs, &block) ⇒ T.untyped

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Параметры:

  • node (RuboCop::AST::Node)
  • pattern (String, Symbol)
  • kwargs (T.untyped)
  • block (T.untyped)

Возвращает:

  • (T.untyped)


27
# File 'sorbet/rbi/dsl/rubo_cop/cop/formula_audit/generate_completions_dsl.rbi', line 27

def shell_completion_node(node, *pattern, **kwargs, &block); end

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

Spec-Zone.ru

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