Class: FruityBuilder::IOS::BuildProperties

Inherits:
Execution
  • Object
show all
Defined in:
lib/fruity_builder/build_properties.rb

Constant Summary

Constants inherited from Execution

Execution::COMMAND_RETRIES, Execution::COMMAND_TIMEOUT

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Execution

execute, execute_with_timeout_and_retry

Constructor Details

#initialize(project_path) ⇒ BuildProperties

Returns a new instance of BuildProperties.



10
11
12
# File 'lib/fruity_builder/build_properties.rb', line 10

def initialize(project_path)
  @project = project_path
end

Instance Attribute Details

#projectObject

Returns the value of attribute project.



8
9
10
# File 'lib/fruity_builder/build_properties.rb', line 8

def project
  @project
end

#propertiesObject

Returns the value of attribute properties.



8
9
10
# File 'lib/fruity_builder/build_properties.rb', line 8

def properties
  @properties
end

Class Method Details

.replace_project_data(options = {}) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
# File 'lib/fruity_builder/build_properties.rb', line 63

def self.replace_project_data(options = {})
  regex = Regexp.new(options[:regex])
  replacements = options[:data].scan(regex).uniq.flatten

  result = options[:data]
  replacements.each do |to_replace|
    result = result.gsub(to_replace, options[:new_value])
  end

  result
end

Instance Method Details

#get_code_signing_identitiesObject



43
44
45
# File 'lib/fruity_builder/build_properties.rb', line 43

def get_code_signing_identities
  @properties.scan(/.*CODE_SIGN_IDENTITY.*= "(.*)";.*/).uniq.flatten
end

#get_dev_teamsObject



39
40
41
# File 'lib/fruity_builder/build_properties.rb', line 39

def get_dev_teams
  @properties.scan(/.*DevelopmentTeam = (.*);.*/).uniq.flatten
end

#get_provisioning_profilesObject



47
48
49
# File 'lib/fruity_builder/build_properties.rb', line 47

def get_provisioning_profiles
  @properties.scan(/.*PROVISIONING_PROFILE = "(.*)";.*/).uniq.flatten
end

#open_project_propertiesObject



14
15
16
# File 'lib/fruity_builder/build_properties.rb', line 14

def open_project_properties
  @properties = File.read(@project)
end

#replace_bundle_id(new_bundle_id) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/fruity_builder/build_properties.rb', line 27

def replace_bundle_id(new_bundle_id)
  path = Pathname.new(File.dirname(@project) + '/../').realdirpath.to_s
  xcode = FruityBuilder::IOS::XCodeBuild.new(File.dirname(@project))
  targets = xcode.get_targets
  project_files = Dir["#{path}/**/Info.plist"]

  files = project_files.select { |project| targets.any? { |target| project.include?("#{target}/Info.plist") } }
  files.each do |file|
    FruityBuilder::IOS::Plistutil.replace_bundle_id(new_id: new_bundle_id, file: file)
  end
end

#replace_code_sign_identity(new_identity) ⇒ Object



55
56
57
# File 'lib/fruity_builder/build_properties.rb', line 55

def replace_code_sign_identity(new_identity)
  @properties = self.class.replace_project_data(regex: '.*CODE_SIGN_IDENTITY.*= "(.*)";.*', data: properties, new_value: new_identity)
end

#replace_dev_team(new_dev_team) ⇒ Object



51
52
53
# File 'lib/fruity_builder/build_properties.rb', line 51

def replace_dev_team(new_dev_team)
  @properties = self.class.replace_project_data(regex: '.*DevelopmentTeam = (.*);.*', data: properties, new_value: new_dev_team)
end

#replace_provisioning_profile(new_profile) ⇒ Object



59
60
61
# File 'lib/fruity_builder/build_properties.rb', line 59

def replace_provisioning_profile(new_profile)
  @properties = self.class.replace_project_data(regex: '.*PROVISIONING_PROFILE = "(.*)";.*', data: properties, new_value: new_profile)
end

#save_project_propertiesObject



23
24
25
# File 'lib/fruity_builder/build_properties.rb', line 23

def save_project_properties
  File.write(@project, properties)
end