class XcodeUtil
Public Class Methods
build_name(archive_plist)
click to toggle source
# File lib/jenkins_util/xcode_util.rb, line 70 def self.build_name(archive_plist) plist_path = File.expand_path(archive_plist) plist = Plist.parse_xml(plist_path) LoggerUtil.fatal("name not found, make sure to pass in the archive plist #{archive_plist}") if plist.nil? || !plist.key?('Name') "#{plist['Name']}_v_#{plist['ApplicationProperties']['CFBundleShortVersionString']}_b_#{plist['ApplicationProperties']['CFBundleVersion']}" end
new()
click to toggle source
# File lib/jenkins_util/xcode_util.rb, line 8 def initialize @xcodebuild_version_major = nil @default_xcodebuild_path = '/usr/bin/xcodebuild' @ios_simulator_process_name = 'Simulator' # xcodebuild flags @xcodebuild_version_flag = '-version' unless File.exist?(@default_xcodebuild_path) LoggerUtil.fatal("xcodebuild not found: #{@default_xcodebuild_path}") abort end version end
project_bundle_identifier(project_path, target_name, build_configuration_name, bundle_identifier = nil)
click to toggle source
# File lib/jenkins_util/xcode_util.rb, line 61 def self.project_bundle_identifier(project_path, target_name, build_configuration_name, bundle_identifier = nil) with_project_build_configuration(project_path, target_name, build_configuration_name) do |project, build_configuration| return build_configuration.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] if bundle_identifier.nil? build_configuration.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_identifier project.save end end
project_bundle_version(project_path, target_name, build_configuration_name, build_number = nil)
click to toggle source
# File lib/jenkins_util/xcode_util.rb, line 48 def self.project_bundle_version(project_path, target_name, build_configuration_name, build_number = nil) with_project_build_configuration(project_path, target_name, build_configuration_name) do |project, build_configuration| infoplist_file = build_configuration.build_settings['INFOPLIST_FILE'] infoplist_path = File.join(File.dirname(project.path), infoplist_file) infoplist = Xcodeproj::Plist.read_from_path(infoplist_path) return infoplist['CFBundleVersion'] if build_number.nil? infoplist['CFBundleVersion'] = "#{infoplist['CFBundleVersion']}.#{build_number}" Xcodeproj::Plist.write_to_path(infoplist, infoplist_path) end end
project_provisioning_style(project_path, is_automatic = nil)
click to toggle source
# File lib/jenkins_util/xcode_util.rb, line 77 def self.project_provisioning_style(project_path, is_automatic = nil) project = Xcodeproj::Project.open(project_path) project.root_object.attributes['TargetAttributes'].values.each do |target_value| target_value.each do |attribute_key, attribute_value| return attribute_value if attribute_key == 'ProvisioningStyle' && is_automatic.nil? next unless attribute_key == 'ProvisioningStyle' target_value[attribute_key] = is_automatic ? 'Automatic' : 'Manual' end end return project.save unless is_automatic.nil? LoggerUtil.fatal("'ProvisioningStyle' key not found, please check and uncheck automatic signing") end
team_id_from_plist(plist_file)
click to toggle source
# File lib/jenkins_util/xcode_util.rb, line 93 def self.team_id_from_plist(plist_file) plist_path = File.expand_path(plist_file) plist = Plist.parse_xml(plist_path) LoggerUtil.fatal("teamID not found in #{plist_file}") if plist.nil? || !plist.key?('teamID') plist['teamID'] end
with_project_build_configuration(project_path, target_name, build_configuration_name) { |project, build_configuration| ... }
click to toggle source
# File lib/jenkins_util/xcode_util.rb, line 34 def self.with_project_build_configuration(project_path, target_name, build_configuration_name) project = Xcodeproj::Project.open(project_path) targets = project.native_targets targets.each do |target| next if target.name != target_name target.build_configuration_list.build_configurations.each do |build_configuration| next if build_configuration.name != build_configuration_name yield project, build_configuration end end end
Public Instance Methods
kill_ios_simulator()
click to toggle source
# File lib/jenkins_util/xcode_util.rb, line 25 def kill_ios_simulator ProcessUtil.kill_all_processes(@ios_simulator_process_name) end
version()
click to toggle source
# File lib/jenkins_util/xcode_util.rb, line 29 def version xcode_process = CommandLineScript.new("#{@default_xcodebuild_path} #{@xcodebuild_version_flag}") puts xcode_process.get_output end