Class: XcodeUtil
- Inherits:
-
Object
- Object
- XcodeUtil
- Defined in:
- lib/jenkins_util/xcode_util.rb
Class Method Summary collapse
- .build_name(archive_plist) ⇒ Object
- .project_bundle_identifier(project_path, target_name, build_configuration_name, bundle_identifier = nil) ⇒ Object
- .project_bundle_version(project_path, target_name, build_configuration_name, build_number = nil) ⇒ Object
- .project_provisioning_style(project_path, is_automatic = nil) ⇒ Object
- .team_id_from_plist(plist_file) ⇒ Object
- .with_project_build_configuration(project_path, target_name, build_configuration_name) ⇒ Object
Instance Method Summary collapse
-
#initialize ⇒ XcodeUtil
constructor
A new instance of XcodeUtil.
- #kill_ios_simulator ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize ⇒ XcodeUtil
Returns a new instance of XcodeUtil.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# 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 |
Class Method Details
.build_name(archive_plist) ⇒ Object
70 71 72 73 74 75 |
# File 'lib/jenkins_util/xcode_util.rb', line 70 def self.build_name(archive_plist) plist_path = File.(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 |
.project_bundle_identifier(project_path, target_name, build_configuration_name, bundle_identifier = nil) ⇒ Object
61 62 63 64 65 66 67 68 |
# 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) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 |
# 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) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# 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) ⇒ Object
93 94 95 96 97 98 99 |
# File 'lib/jenkins_util/xcode_util.rb', line 93 def self.team_id_from_plist(plist_file) plist_path = File.(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) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# 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 |
Instance Method Details
#kill_ios_simulator ⇒ Object
25 26 27 |
# File 'lib/jenkins_util/xcode_util.rb', line 25 def kill_ios_simulator ProcessUtil.kill_all_processes(@ios_simulator_process_name) end |
#version ⇒ Object
29 30 31 32 |
# 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 |