Class: RunLoop::Xcode

Inherits:
Object
  • Object
show all
Defined in:
lib/run_loop/xcode.rb

Overview

Note:

All command line tools are run in the context of ‘xcrun`.

A model of the active Xcode version.

Throughout this class’s documentation, there are references to the _active version of Xcode_. The active Xcode version is the one returned by ‘xcrun xcodebuild`. The current Xcode version can be set using `xcode-select` or overridden using the `DEVELOPER_DIR`.

Instance Method Summary collapse

Instance Method Details

#beta?Boolean

Note:

Relies on Xcode beta versions having and app bundle named Xcode-Beta.app

Is this a beta version of Xcode?

Returns:

  • (Boolean)

    True if the Xcode version is beta.



204
205
206
# File 'lib/run_loop/xcode.rb', line 204

def beta?
  developer_dir[/Xcode-[Bb]eta.app/, 0]
end

#developer_dirString

Returns the path to the current developer directory.

From the man pages:

“‘ $ man xcode-select DEVELOPER_DIR Overrides the active developer directory. When DEVELOPER_DIR is set, its value will be used instead of the system-wide active developer directory. “`

Returns:

  • (String)

    path to current developer directory

Raises:

  • (RuntimeError)

    If path to Xcode.app/Contents/Developer cannot be determined.



224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
# File 'lib/run_loop/xcode.rb', line 224

def developer_dir
  @xcode_developer_dir ||= lambda do
    if RunLoop::Environment.developer_dir
      path = RunLoop::Environment.developer_dir
    else
      path = xcode_select_path
    end

    if !File.directory?(path)
      raise RuntimeError,
%Q{Cannot determine the active Xcode.  Expected an Xcode here:

#{path}

Check the value of xcode-select:

# Does this resolve to a valid Xcode.app/Contents/Developer path?
$ xcode-select --print-path

Is the DEVELOPER_DIR variable set in your environment?  You would
only use this if you have multiple Xcode's installed.

$ echo $DEVELOPER_DIR

See the man pages for xcrun and xcode-select for details.

$ man xcrun
$ man xcode-select
}
    end
    path
  end.call
end

#inspectObject

Returns debug String representation



23
24
25
# File 'lib/run_loop/xcode.rb', line 23

def inspect
  to_s
end

#to_sObject

Returns a String representation.



18
19
20
# File 'lib/run_loop/xcode.rb', line 18

def to_s
  "#<Xcode #{version.to_s}>"
end

#v50RunLoop::Version

Returns a version instance for ‘Xcode 5.0`; used to check for the availability of features and paths to various items on the filesystem.

Returns:



111
112
113
# File 'lib/run_loop/xcode.rb', line 111

def v50
  fetch_version(:v50)
end

#v51RunLoop::Version

Returns a version instance for ‘Xcode 5.1`; used to check for the availability of features and paths to various items on the filesystem.

Returns:



103
104
105
# File 'lib/run_loop/xcode.rb', line 103

def v51
  fetch_version(:v51)
end

#v60RunLoop::Version

Returns a version instance for ‘Xcode 6.0`; used to check for the availability of features and paths to various items on the filesystem.

Returns:



95
96
97
# File 'lib/run_loop/xcode.rb', line 95

def v60
  fetch_version(:v60)
end

#v61RunLoop::Version

Returns a version instance for ‘Xcode 6.1`; used to check for the availability of features and paths to various items on the filesystem.

Returns:



87
88
89
# File 'lib/run_loop/xcode.rb', line 87

def v61
  fetch_version(:v61)
end

#v62RunLoop::Version

Returns a version instance for ‘Xcode 6.2`; used to check for the availability of features and paths to various items on the filesystem.

Returns:



79
80
81
# File 'lib/run_loop/xcode.rb', line 79

def v62
  fetch_version(:v62)
end

#v63RunLoop::Version

Returns a version instance for ‘Xcode 6.3`; used to check for the availability of features and paths to various items on the filesystem.

Returns:



71
72
73
# File 'lib/run_loop/xcode.rb', line 71

def v63
  fetch_version(:v63)
end

#v64RunLoop::Version

Returns a version instance for ‘Xcode 6.4`; used to check for the availability of features and paths to various items on the filesystem.

Returns:



63
64
65
# File 'lib/run_loop/xcode.rb', line 63

def v64
  fetch_version(:v64)
end

#v70RunLoop::Version

Returns a version instance for ‘Xcode 7.0`; used to check for the availability of features and paths to various items on the filesystem.

Returns:



55
56
57
# File 'lib/run_loop/xcode.rb', line 55

def v70
  fetch_version(:v70)
end

#v71RunLoop::Version

Returns a version instance for ‘Xcode 7.1`; used to check for the availability of features and paths to various items on the filesystem.

Returns:



47
48
49
# File 'lib/run_loop/xcode.rb', line 47

def v71
  fetch_version(:v71)
end

#v72RunLoop::Version

Returns a version instance for ‘Xcode 7.2`; used to check for the availability of features and paths to various items on the filesystem.

Returns:



39
40
41
# File 'lib/run_loop/xcode.rb', line 39

def v72
  fetch_version(:v72)
end

#v73RunLoop::Version

Returns a version instance for ‘Xcode 7.3`; used to check for the availability of features and paths to various items on the filesystem.

Returns:



31
32
33
# File 'lib/run_loop/xcode.rb', line 31

def v73
  fetch_version(:v73)
end

#versionRunLoop::Version

Returns the current version of Xcode.

Returns:

  • (RunLoop::Version)

    The current version of Xcode as reported by ‘xcrun xcodebuild -version`.



191
192
193
194
195
196
197
198
# File 'lib/run_loop/xcode.rb', line 191

def version
  @xcode_version ||= lambda do
    execute_command(['-version']) do |stdout, _, _|
      version_string = stdout.read.chomp[VERSION_REGEX, 0]
      RunLoop::Version.new(version_string)
    end
  end.call
end

#version_gte_51?Boolean

Deprecated.

2.1.0

Is the active Xcode version 5.1 or above?

Returns:

  • (Boolean)

    ‘true` if the current Xcode version is >= 5.1



182
183
184
185
# File 'lib/run_loop/xcode.rb', line 182

def version_gte_51?
  #RunLoop.deprecated("2.1.0", "No replacement")
  version >= v51
end

#version_gte_61?Boolean

Is the active Xcode version 6.1 or above?

Returns:

  • (Boolean)

    ‘true` if the current Xcode version is >= 6.1



167
168
169
# File 'lib/run_loop/xcode.rb', line 167

def version_gte_61?
  version >= v61
end

#version_gte_62?Boolean

Is the active Xcode version 6.2 or above?

Returns:

  • (Boolean)

    ‘true` if the current Xcode version is >= 6.2



160
161
162
# File 'lib/run_loop/xcode.rb', line 160

def version_gte_62?
  version >= v62
end

#version_gte_63?Boolean

Is the active Xcode version 6.3 or above?

Returns:

  • (Boolean)

    ‘true` if the current Xcode version is >= 6.3



153
154
155
# File 'lib/run_loop/xcode.rb', line 153

def version_gte_63?
  version >= v63
end

#version_gte_64?Boolean

Is the active Xcode version 6.4 or above?

Returns:

  • (Boolean)

    ‘true` if the current Xcode version is >= 6.4



146
147
148
# File 'lib/run_loop/xcode.rb', line 146

def version_gte_64?
  version >= v64
end

#version_gte_6?Boolean

Is the active Xcode version 6 or above?

Returns:

  • (Boolean)

    ‘true` if the current Xcode version is >= 6.0



174
175
176
# File 'lib/run_loop/xcode.rb', line 174

def version_gte_6?
  version >= v60
end

#version_gte_71?Boolean

Is the active Xcode version 7.1 or above?

Returns:

  • (Boolean)

    ‘true` if the current Xcode version is >= 7.1



132
133
134
# File 'lib/run_loop/xcode.rb', line 132

def version_gte_71?
  version >= v71
end

#version_gte_72?Boolean

Is the active Xcode version 7.2 or above?

Returns:

  • (Boolean)

    ‘true` if the current Xcode version is >= 7.2



125
126
127
# File 'lib/run_loop/xcode.rb', line 125

def version_gte_72?
  version >= v72
end

#version_gte_73?Boolean

Is the active Xcode version 7.3 or above?

Returns:

  • (Boolean)

    ‘true` if the current Xcode version is >= 7.3



118
119
120
# File 'lib/run_loop/xcode.rb', line 118

def version_gte_73?
  version >= v73
end

#version_gte_7?Boolean

Is the active Xcode version 7 or above?

Returns:

  • (Boolean)

    ‘true` if the current Xcode version is >= 7.0



139
140
141
# File 'lib/run_loop/xcode.rb', line 139

def version_gte_7?
  version >= v70
end