Class: XcodeRequirement Private

Inherits:
Requirement show all
Defined in:
Library/Homebrew/requirements/xcode_requirement.rb,
Library/Homebrew/extend/os/linux/requirements/xcode_requirement.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

A requirement on Xcode.

Constant Summary

Constants included from Dependable

Dependable::RESERVED_TAGS

Instance Attribute Summary collapse

Attributes inherited from Requirement

#cask, #download, #name, #tags

Instance Method Summary collapse

Methods inherited from Requirement

#==, env, #env, #env_proc, expand, #fatal?, #hash, #mktemp, #modify_build_environment, #option_names, prune, prune?, #satisfied?, #satisfied_result_parent, satisfy

Methods included from BuildEnvironment::DSL

#env

Methods included from Dependable

#build?, #option_tags, #optional?, #options, #prune_from_option?, #prune_if_build_and_not_dependent?, #recommended?, #required?, #test?

Constructor Details

#initialize(tags = []) ⇒ XcodeRequirement

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of XcodeRequirement.


16
17
18
19
# File 'Library/Homebrew/requirements/xcode_requirement.rb', line 16

def initialize(tags = [])
  @version = tags.shift if tags.first.to_s.match?(/(\d\.)+\d/)
  super(tags)
end

Instance Attribute Details

#versionObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


12
13
14
# File 'Library/Homebrew/requirements/xcode_requirement.rb', line 12

def version
  @version
end

Instance Method Details

#display_sObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


52
53
54
55
56
# File 'Library/Homebrew/requirements/xcode_requirement.rb', line 52

def display_s
  return name.capitalize unless @version

  "#{name.capitalize} >= #{@version}"
end

#inspectObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


48
49
50
# File 'Library/Homebrew/requirements/xcode_requirement.rb', line 48

def inspect
  "#<#{self.class.name}: version>=#{@version.inspect} #{tags.inspect}>"
end

#messageObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'Library/Homebrew/requirements/xcode_requirement.rb', line 28

def message
  version = " #{@version}" if @version
  message = <<~EOS
    A full installation of Xcode.app#{version} is required to compile
    this software. Installing just the Command Line Tools is not sufficient.
  EOS
  if @version && Version.new(MacOS::Xcode.latest_version) < Version.new(@version)
    message + <<~EOS

      Xcode#{version} cannot be installed on macOS #{MacOS.version}.
      You must upgrade your version of macOS.
    EOS
  else
    message + <<~EOS

      Xcode can be installed from the App Store.
    EOS
  end
end

#xcode_installed_versionObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


21
22
23
24
25
26
# File 'Library/Homebrew/requirements/xcode_requirement.rb', line 21

def xcode_installed_version
  return false unless MacOS::Xcode.installed?
  return true unless @version

  MacOS::Xcode.version >= @version
end