Class: XcodeRequirement Private

Inherits:
Requirement show all
Defined in:
Library/Homebrew/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

#==, #display_s, 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.


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

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.


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

def version
  @version
end

Instance Method Details

#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.


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

def inspect
  "#<#{self.class.name}: #{tags.inspect} version=#{@version.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.


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

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.


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

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

  MacOS::Xcode.version >= @version
end