class Xcodeproj::XCScheme::BuildAction

This class wraps the BuildAction node of a .xcscheme XML file

Note: It’s not a AbstractSchemeAction like the others because it is a special case of action (with no build_configuration, etc)

Public Class Methods

new(node = nil) click to toggle source

@param [REXML::Element] node

The 'BuildAction' XML node that this object will wrap.
If nil, will create a default XML node to use.
# File lib/xcodeproj/scheme/build_action.rb, line 15
def initialize(node = nil)
  create_xml_element_with_fallback(node, 'BuildAction') do
    self.parallelize_buildables = true
    self.build_implicit_dependencies = true
  end
end

Public Instance Methods

add_entry(entry) click to toggle source

@param [BuildAction::Entry] entry

The BuildActionEntry to add to the list of targets to build for the various actions
# File lib/xcodeproj/scheme/build_action.rb, line 165
def add_entry(entry)
  entries = @xml_element.elements['BuildActionEntries'] || @xml_element.add_element('BuildActionEntries')
  entries.add_element(entry.xml_element)
end
add_post_action(post_action) click to toggle source

@param [ExecutionAction] post_action

Add an action to the list of actions to run after this scheme action.
It can be either a 'Run Script' or a 'Send Email' action.
# File lib/xcodeproj/scheme/build_action.rb, line 131
def add_post_action(post_action)
  post_actions = @xml_element.elements['PostActions'] || @xml_element.add_element('PostActions')
  post_actions.add_element(post_action.xml_element)
end
add_pre_action(pre_action) click to toggle source

@param [ExecutionAction] pre_action

Add an action to the list of actions to run before this scheme action.
It can be either a 'Run Script' or a 'Send Email' action.
# File lib/xcodeproj/scheme/build_action.rb, line 95
def add_pre_action(pre_action)
  pre_actions = @xml_element.elements['PreActions'] || @xml_element.add_element('PreActions')
  pre_actions.add_element(pre_action.xml_element)
end
build_implicit_dependencies=(flag) click to toggle source

@param [Bool] flag

Whether or not to detect and build implicit dependencies for each target
# File lib/xcodeproj/scheme/build_action.rb, line 60
def build_implicit_dependencies=(flag)
  @xml_element.attributes['buildImplicitDependencies'] = bool_to_string(flag)
end
build_implicit_dependencies?() click to toggle source

@return [Bool]

Whether or not to detect and build implicit dependencies for each target
# File lib/xcodeproj/scheme/build_action.rb, line 53
def build_implicit_dependencies?
  string_to_bool(@xml_element.attributes['buildImplicitDependencies'])
end
entries() click to toggle source

@return [Array<BuildAction::Entry>]

The list of BuildActionEntry nodes associated with this Build Action.
Each entry represent a target to build and tells for which action it's needed to be built.
# File lib/xcodeproj/scheme/build_action.rb, line 140
def entries
  entries = @xml_element.elements['BuildActionEntries']
  return nil unless entries
  entries.get_elements('BuildActionEntry').map do |entry_node|
    BuildAction::Entry.new(entry_node)
  end
end
entries=(entries) click to toggle source

@param [Array<BuildAction::Entry>] entries

Sets the list of BuildActionEntry nodes associated with this Build Action.
# File lib/xcodeproj/scheme/build_action.rb, line 151
def entries=(entries)
  @xml_element.delete_element('BuildActionEntries')
  unless entries.empty?
    entries_element = @xml_element.add_element('BuildActionEntries')
    entries.each do |entry_node|
      entries_element.add_element(entry_node.xml_element)
    end
  end
  entries
end
parallelize_buildables=(flag) click to toggle source

@param [Bool] flag

Set whether or not to build the various targets in parallel
# File lib/xcodeproj/scheme/build_action.rb, line 46
def parallelize_buildables=(flag)
  @xml_element.attributes['parallelizeBuildables'] = bool_to_string(flag)
end
parallelize_buildables?() click to toggle source

@return [Bool]

Whether or not to build the various targets in parallel
# File lib/xcodeproj/scheme/build_action.rb, line 39
def parallelize_buildables?
  string_to_bool(@xml_element.attributes['parallelizeBuildables'])
end
post_actions() click to toggle source

@return [Array<ExecutionAction>]

The list of actions to run after this scheme action.
Each entry can be either a 'Run Script' or a 'Send Email' action.
# File lib/xcodeproj/scheme/build_action.rb, line 104
def post_actions
  post_actions = @xml_element.elements['PostActions']
  return nil unless post_actions
  post_actions.get_elements('ExecutionAction').map do |entry_node|
    ExecutionAction.new(entry_node)
  end
end
post_actions=(post_actions) click to toggle source

@param [Array<ExecutionAction>] post_actions

Set the list of actions to run after this scheme action.
Each entry can be either a 'Run Script' or a 'Send Email' action.
# File lib/xcodeproj/scheme/build_action.rb, line 116
def post_actions=(post_actions)
  @xml_element.delete_element('PostActions')
  unless post_actions.empty?
    post_actions_element = @xml_element.add_element('PostActions')
    post_actions.each do |entry_node|
      post_actions_element.add_element(entry_node.xml_element)
    end
  end
  post_actions
end
pre_actions() click to toggle source

@return [Array<ExecutionAction>]

The list of actions to run before this scheme action.
Each entry can be either a 'Run Script' or a 'Send Email' action.
# File lib/xcodeproj/scheme/build_action.rb, line 68
def pre_actions
  pre_actions = @xml_element.elements['PreActions']
  return nil unless pre_actions
  pre_actions.get_elements('ExecutionAction').map do |entry_node|
    ExecutionAction.new(entry_node)
  end
end
pre_actions=(pre_actions) click to toggle source

@param [Array<ExecutionAction>] pre_actions

Set the list of actions to run before this scheme action.
Each entry can be either a 'Run Script' or a 'Send Email' action.
# File lib/xcodeproj/scheme/build_action.rb, line 80
def pre_actions=(pre_actions)
  @xml_element.delete_element('PreActions')
  unless pre_actions.empty?
    pre_actions_element = @xml_element.add_element('PreActions')
    pre_actions.each do |entry_node|
      pre_actions_element.add_element(entry_node.xml_element)
    end
  end
  pre_actions
end
run_post_actions_on_failure=(flag) click to toggle source

@param [Bool] flag

Set whether or not to run post actions on build failure
# File lib/xcodeproj/scheme/build_action.rb, line 32
def run_post_actions_on_failure=(flag)
  @xml_element.attributes['runPostActionsOnFailure'] = bool_to_string(flag)
end
run_post_actions_on_failure?() click to toggle source

@return [Bool]

Whether or not to run post actions on build failure
# File lib/xcodeproj/scheme/build_action.rb, line 25
def run_post_actions_on_failure?
  string_to_bool(@xml_element.attributes['runPostActionsOnFailure'])
end