Class: FormulaPin Private

Inherits:
Object show all
Defined in:
formula_pin.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.

Helper functions for pinning a formula.

Instance Method Summary collapse

Constructor Details

#initialize(formula) ⇒ FormulaPin

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.

Returns a new instance of FormulaPin.



8
9
10
# File 'formula_pin.rb', line 8

def initialize(formula)
  @formula = formula
end

Instance Method Details

#pathObject

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.



12
13
14
# File 'formula_pin.rb', line 12

def path
  HOMEBREW_PINNED_KEGS/@formula.name
end

#pinObject

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
25
26
27
# File 'formula_pin.rb', line 22

def pin
  latest_keg = @formula.installed_kegs.max_by(&:scheme_and_version)
  return if latest_keg.nil?

  pin_at(latest_keg.version)
end

#pin_at(version) ⇒ 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.



16
17
18
19
20
# File 'formula_pin.rb', line 16

def pin_at(version)
  HOMEBREW_PINNED_KEGS.mkpath
  version_path = @formula.rack/version
  path.make_relative_symlink(version_path) if !pinned? && version_path.exist?
end

#pinnable?Boolean

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.

Returns:

  • (Boolean)


38
39
40
# File 'formula_pin.rb', line 38

def pinnable?
  !@formula.installed_prefixes.empty?
end

#pinned?Boolean

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.

Returns:

  • (Boolean)


34
35
36
# File 'formula_pin.rb', line 34

def pinned?
  path.symlink?
end

#pinned_versionObject

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.



42
43
44
# File 'formula_pin.rb', line 42

def pinned_version
  Keg.new(path.resolved_path).version if pinned?
end

#unpinObject

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.



29
30
31
32
# File 'formula_pin.rb', line 29

def unpin
  path.unlink if pinned?
  HOMEBREW_PINNED_KEGS.rmdir_if_possible
end