Module: Homebrew::Bundle::Remover Private

Defined in:
bundle/remover.rb

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

Class Method Summary collapse

Class Method Details

.possible_names(formula_name, raise_error: true) ⇒ Object

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
43
44
45
# File 'bundle/remover.rb', line 40

def self.possible_names(formula_name, raise_error: true)
  formula = Formulary.factory(formula_name)
  [formula_name, formula.name, formula.full_name, *formula.aliases, *formula.oldnames].compact.uniq
rescue FormulaUnavailableError
  raise if raise_error
end

.remove(*args, type:, global:, file:) ⇒ Object

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.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'bundle/remover.rb', line 7

def self.remove(*args, type:, global:, file:)
  require "bundle/brewfile"
  require "bundle/dumper"

  brewfile = Brewfile.read(global:, file:)
  content = brewfile.input
  entry_type = type.to_s if type != :none
  escaped_args = args.flat_map do |arg|
    names = if type == :brew
      possible_names(arg)
    else
      [arg]
    end

    names.uniq.map { |a| Regexp.escape(a) }
  end

  new_content = content.split("\n")
                       .grep_v(/#{entry_type}(\s+|\(\s*)"(#{escaped_args.join("|")})"/)
                       .join("\n") << "\n"

  if content.chomp == new_content.chomp &&
     type == :none &&
     args.any? { |arg| possible_names(arg, raise_error: false).count > 1 }
    opoo "No matching entries found in Brewfile. Try again with `--formula` to match formula " \
         "aliases and old formula names."
    return
  end

  path = Dumper.brewfile_path(global:, file:)
  Dumper.write_file path, new_content
end