Class: Pod::Installer::InstallationOptions

Inherits:
Object
  • Object
show all
Defined in:
lib/cocoapods/installer/installation_options.rb

Overview

Represents the installation options the user can customize via a `Podfile`.

Defined Under Namespace

Modules: Mixin

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ InstallationOptions

Initializes the installation options with a hash of options from a Podfile.

Raises:

  • (Informative)

    if `options` contains any unknown keys.



71
72
73
74
75
76
77
78
79
# File 'lib/cocoapods/installer/installation_options.rb', line 71

def initialize(options = {})
  options = ActiveSupport::HashWithIndifferentAccess.new(options)
  unknown_keys = options.keys - self.class.all_options.map(&:to_s)
  raise Informative, "Unknown installation options: #{unknown_keys.to_sentence}." unless unknown_keys.empty?
  self.class.defaults.each do |key, default|
    value = options.fetch(key, default)
    send("#{key}=", value)
  end
end

Class Method Details

.all_optionsArray<Symbol>



60
61
62
# File 'lib/cocoapods/installer/installation_options.rb', line 60

def self.all_options
  defaults.keys
end

.defaultsHash<Symbol,Object>



54
55
56
# File 'lib/cocoapods/installer/installation_options.rb', line 54

def self.defaults
  @defaults ||= {}
end

.from_podfile(podfile) ⇒ Self

Parses installation options from a podfile.

Raises:

  • (Informative)

    if `podfile` does not specify a `CocoaPods` install.



19
20
21
22
23
24
25
# File 'lib/cocoapods/installer/installation_options.rb', line 19

def self.from_podfile(podfile)
  name, options = podfile.installation_method
  unless name.downcase == 'cocoapods'
    raise Informative, "Currently need to specify a `cocoapods` install, you chose `#{name}`."
  end
  new(options)
end

.option(name, default, boolean: true) ⇒ void

This method returns an undefined value.

Defines a new installation option.

Raises:

  • (ArgumentError)


43
44
45
46
47
48
49
# File 'lib/cocoapods/installer/installation_options.rb', line 43

def self.option(name, default, boolean: true)
  name = name.to_s
  raise ArgumentError, "The `#{name}` option is already defined" if defaults.key?(name)
  defaults[name] = default
  attr_accessor name
  alias_method "#{name}?", name if boolean
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql



94
95
96
# File 'lib/cocoapods/installer/installation_options.rb', line 94

def ==(other)
  other.is_a?(self.class) && to_h == other.to_h
end

#cleanObject

Note:

this option defaults to true.

Returns the clean option for installation.



104
# File 'lib/cocoapods/installer/installation_options.rb', line 104

option :clean, true

#deduplicate_targetsObject

Note:

this option defaults to true.

Returns the deduplicate_targets option for installation.



105
# File 'lib/cocoapods/installer/installation_options.rb', line 105

option :deduplicate_targets, true

#deterministic_uuidsObject

Note:

this option defaults to true.

Returns the deterministic_uuids option for installation.



106
# File 'lib/cocoapods/installer/installation_options.rb', line 106

option :deterministic_uuids, true

#hashObject



100
101
102
# File 'lib/cocoapods/installer/installation_options.rb', line 100

def hash
  to_h.hash
end

#integrate_targetsObject

Note:

this option defaults to true.

Returns the integrate_targets option for installation.



107
# File 'lib/cocoapods/installer/installation_options.rb', line 107

option :integrate_targets, true

#lock_pod_sourcesObject

Note:

this option defaults to true.

Returns the lock_pod_sources option for installation.



108
# File 'lib/cocoapods/installer/installation_options.rb', line 108

option :lock_pod_sources, true

#share_schemes_for_development_podsObject

Note:

this option defaults to false.

Returns the share_schemes_for_development_pods option for installation.



110
# File 'lib/cocoapods/installer/installation_options.rb', line 110

option :share_schemes_for_development_pods, false

#to_h(include_defaults: true) ⇒ Hash



86
87
88
89
90
91
92
# File 'lib/cocoapods/installer/installation_options.rb', line 86

def to_h(include_defaults: true)
  self.class.defaults.reduce(ActiveSupport::HashWithIndifferentAccess.new) do |hash, (option, default)|
    value = send(option)
    hash[option] = value if include_defaults || value != default
    hash
  end
end

#warn_for_multiple_pod_sourcesObject

Note:

this option defaults to true.

Returns the warn_for_multiple_pod_sources option for installation.



109
# File 'lib/cocoapods/installer/installation_options.rb', line 109

option :warn_for_multiple_pod_sources, true