Class: Pod::Platform
- Inherits:
-
Object
- Object
- Pod::Platform
- Defined in:
- lib/cocoapods-core/platform.rb
Overview
A Platform describes an SDK name and deployment target.
Instance Attribute Summary collapse
-
#deployment_target ⇒ Version
readonly
The deployment target of the platform.
-
#symbolic_name ⇒ Symbol, String
(also: #name)
readonly
The name of the SDK represented by the platform.
Class Method Summary collapse
-
.all ⇒ Array<Platform>
Convenience method to get all available platforms.
-
.ios ⇒ Platform
Convenience method to initialize an iOS platform.
-
.macos ⇒ Platform
Convenience method to initialize a macOS platform.
-
.osx ⇒ Platform
Convenience method to initialize an OS X platform.
-
.string_name(symbolic_name) ⇒ String
Converts the symbolic name of a platform to a string name suitable to be presented to the user.
-
.tvos ⇒ Platform
Convenience method to initialize a tvOS platform.
-
.visionos ⇒ Platform
Convenience method to initialize a visionOS platform.
-
.watchos ⇒ Platform
Convenience method to initialize a watchOS platform.
Instance Method Summary collapse
-
#<=>(other) ⇒ Fixnum
Compares the platform first by name and the by deployment_target for sorting.
-
#==(other) ⇒ Boolean
(also: #eql?)
Checks if a platform is equivalent to another one or to a symbol representation.
-
#hash ⇒ Object
private
Hashes the instance by the platform name and deployment target.
-
#initialize(input, target = nil) ⇒ Platform
constructor
Constructs a platform from either another platform or by specifying the symbolic name and optionally the deployment target.
-
#inspect ⇒ String
The debug representation.
-
#requires_legacy_ios_archs? ⇒ Boolean
Whether the platform requires legacy architectures for iOS.
-
#safe_string_name ⇒ String
The string that describes the #symbolic_name, which doesn't contain spaces and is so safe to use in paths which might not be quoted or escaped consequently.
-
#string_name ⇒ String
The string that describes the #symbolic_name.
-
#supports?(other) ⇒ Boolean
Checks whether a platform supports another one.
-
#supports_dynamic_frameworks? ⇒ Boolean
Whether the platform supports dynamic frameworks.
-
#to_s ⇒ String
A string representation that includes the deployment target.
-
#to_sym ⇒ Symbol
A symbol representing the name of the platform.
Constructor Details
#initialize(name, deployment_target) ⇒ Platform #initialize(platform) ⇒ Platform
Constructs a platform from either another platform or by specifying the symbolic name and optionally the deployment target.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/cocoapods-core/platform.rb', line 43 def initialize(input, target = nil) if input.is_a? Platform @symbolic_name = input.name @deployment_target = input.deployment_target else # Allow `Platform.new('macos')` to be equivalent to `Platform.macos` if input == 'macos' input = 'osx' end @symbolic_name = input.to_sym target = target[:deployment_target] if target.is_a?(Hash) @deployment_target = Version.create(target) end end |
Instance Attribute Details
#deployment_target ⇒ Version (readonly)
Returns the deployment target of the platform.
12 13 14 |
# File 'lib/cocoapods-core/platform.rb', line 12 def deployment_target @deployment_target end |
#symbolic_name ⇒ Symbol, String (readonly) Also known as: name
Returns the name of the SDK represented by the platform.
7 8 9 |
# File 'lib/cocoapods-core/platform.rb', line 7 def symbolic_name @symbolic_name end |
Class Method Details
.all ⇒ Array<Platform>
Convenience method to get all available platforms.
110 111 112 |
# File 'lib/cocoapods-core/platform.rb', line 110 def self.all [ios, osx, watchos, visionos, tvos] end |
.ios ⇒ Platform
Convenience method to initialize an iOS platform.
62 63 64 |
# File 'lib/cocoapods-core/platform.rb', line 62 def self.ios new :ios end |
.macos ⇒ Platform
Convenience method to initialize a macOS platform.
78 79 80 |
# File 'lib/cocoapods-core/platform.rb', line 78 def self.macos osx end |
.osx ⇒ Platform
Convenience method to initialize an OS X platform.
70 71 72 |
# File 'lib/cocoapods-core/platform.rb', line 70 def self.osx new :osx end |
.string_name(symbolic_name) ⇒ String
Converts the symbolic name of a platform to a string name suitable to be presented to the user.
244 245 246 247 248 249 250 251 252 253 |
# File 'lib/cocoapods-core/platform.rb', line 244 def self.string_name(symbolic_name) case symbolic_name when :ios then 'iOS' when :osx then 'macOS' when :watchos then 'watchOS' when :tvos then 'tvOS' when :visionos then 'visionOS' else symbolic_name.to_s end end |
.tvos ⇒ Platform
Convenience method to initialize a tvOS platform.
86 87 88 |
# File 'lib/cocoapods-core/platform.rb', line 86 def self.tvos new :tvos end |
.visionos ⇒ Platform
Convenience method to initialize a visionOS platform.
94 95 96 |
# File 'lib/cocoapods-core/platform.rb', line 94 def self.visionos new :visionos end |
.watchos ⇒ Platform
Convenience method to initialize a watchOS platform.
102 103 104 |
# File 'lib/cocoapods-core/platform.rb', line 102 def self.watchos new :watchos end |
Instance Method Details
#<=>(other) ⇒ Fixnum
Compares the platform first by name and the by deployment_target for sorting.
193 194 195 196 197 198 199 200 |
# File 'lib/cocoapods-core/platform.rb', line 193 def <=>(other) name_sort = name.to_s <=> other.name.to_s if name_sort.zero? deployment_target <=> other.deployment_target else name_sort end end |
#==(other) ⇒ Boolean Also known as: eql?
If a symbol is passed the comparison does not take into account the deployment target.
Checks if a platform is equivalent to another one or to a symbol representation.
125 126 127 128 129 130 131 |
# File 'lib/cocoapods-core/platform.rb', line 125 def ==(other) if other.is_a?(Symbol) @symbolic_name == other else (name == other.name) && (deployment_target == other.deployment_target) end end |
#hash ⇒ Object (private)
Hashes the instance by the platform name and deployment target.
This adds support to make instances usable as Hash keys.
141 142 143 |
# File 'lib/cocoapods-core/platform.rb', line 141 def hash name.hash ^ deployment_target.hash end |
#inspect ⇒ String
Returns the debug representation.
173 174 175 176 |
# File 'lib/cocoapods-core/platform.rb', line 173 def inspect "#<#{self.class.name} name=#{name.inspect} " \ "deployment_target=#{deployment_target.inspect}>" end |
#requires_legacy_ios_archs? ⇒ Boolean
Returns whether the platform requires legacy architectures for iOS.
205 206 207 208 209 210 211 |
# File 'lib/cocoapods-core/platform.rb', line 205 def requires_legacy_ios_archs? if name == :ios deployment_target && (deployment_target < Version.new('4.3')) else false end end |
#safe_string_name ⇒ String
Returns The string that describes the #symbolic_name, which doesn't contain spaces and is so safe to use in paths which might not be quoted or escaped consequently.
232 233 234 |
# File 'lib/cocoapods-core/platform.rb', line 232 def safe_string_name string_name.tr(' ', '') end |
#string_name ⇒ String
Returns The string that describes the #symbolic_name.
225 226 227 |
# File 'lib/cocoapods-core/platform.rb', line 225 def string_name self.class.string_name(symbolic_name) end |
#supports?(other) ⇒ Boolean
Checks whether a platform supports another one.
In the context of operating system SDKs, a platform supports another one if they have the same name and the other platform has a minor or equal deployment target.
153 154 155 156 157 158 159 160 |
# File 'lib/cocoapods-core/platform.rb', line 153 def supports?(other) other = Platform.new(other) if other.deployment_target && deployment_target (other.name == name) && (other.deployment_target <= deployment_target) else other.name == name end end |
#supports_dynamic_frameworks? ⇒ Boolean
Returns whether the platform supports dynamic frameworks.
215 216 217 218 219 220 221 |
# File 'lib/cocoapods-core/platform.rb', line 215 def supports_dynamic_frameworks? if name == :ios deployment_target && (deployment_target >= Version.new(8.0)) else true end end |
#to_s ⇒ String
Returns a string representation that includes the deployment target.
165 166 167 168 169 |
# File 'lib/cocoapods-core/platform.rb', line 165 def to_s s = self.class.string_name(@symbolic_name) s << " #{deployment_target}" if deployment_target s end |
#to_sym ⇒ Symbol
Returns a symbol representing the name of the platform.
180 181 182 |
# File 'lib/cocoapods-core/platform.rb', line 180 def to_sym name end |