fastlane 2.44.0.beta.20170630010021 → 2.44.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b6422c85e5f36c3b9fc4ba8a77d4887995b8a87
4
- data.tar.gz: c9be9711667196b480c9932d37bcd766bd629991
3
+ metadata.gz: 32e5c6e2bb77ee5eb7fc4c7ed5e21ea5a1989486
4
+ data.tar.gz: e2d209799b8b192c7acd63935457294431c0d64f
5
5
  SHA512:
6
- metadata.gz: 1c03ca870a23b16c515f2eccde262b623387a27a9bb321380ac6ad5568b3e48dce5932e38a2b866ef99cd85ac4120d360103d10fc3d1c728d109da7c8187085f
7
- data.tar.gz: 1174abb0715ec4bb8fbed535af5eb83592ad5e30fdfc1ddec1dcc6acd5889243c810129a0b8c5fe99b6a78079ba9176df59dc58f35c04eb5874008247d405107
6
+ metadata.gz: 42095a29dd7a3b33474a72b5a68ff810f5110fcb066163f497575a55146c8f127d3eeea27075bf18aa7b28b160637db083ac4bbfdc92d61a96dc68cbe4cf2ea5
7
+ data.tar.gz: 694821c94a136fe86c1b54250a3aa4f017aea199bd82d586c48194f9de9039ba17bc3abbc5acc2a211af1bdd0744b1c7c752c5240085a055f235a9fda56d3b4f
@@ -112,7 +112,7 @@ module Deliver
112
112
  is_string: false,
113
113
  default_value: false),
114
114
  FastlaneCore::ConfigItem.new(key: :phased_release,
115
- description: "Enable phased the phased release feature of iTC",
115
+ description: "Enable the phased release feature of iTC",
116
116
  optional: true,
117
117
  is_string: false,
118
118
  default_value: nil),
@@ -189,7 +189,7 @@ module Fastlane
189
189
  def self.download_url(body)
190
190
  version_url = body['public_url']
191
191
  version_url = body['public_url'] + '/app_versions/' + body['config_url'].split('/').last if body['config_url']
192
- version_url = body['public_url'] + '/app_versions/' + response.body['version'] if body['version']
192
+ version_url = body['public_url'] + '/app_versions/' + body['version'] if body['version']
193
193
  version_url
194
194
  end
195
195
 
@@ -1,4 +1,4 @@
1
1
  module Fastlane
2
- VERSION = '2.44.0.beta.20170630010021'.freeze
2
+ VERSION = '2.44.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  end
@@ -213,7 +213,7 @@ module FastlaneCore
213
213
  keychain_path
214
214
  end
215
215
 
216
- # @return true if XCode version is higher than 8.3
216
+ # @return true if Xcode version is higher than 8.3
217
217
  def self.xcode_at_least?(version)
218
218
  FastlaneCore::UI.user_error!("Unable to locate Xcode. Please make sure to have Xcode installed on your machine") if xcode_version.nil?
219
219
  v = xcode_version
@@ -292,7 +292,7 @@ module FastlaneCore
292
292
  end
293
293
 
294
294
  # Get the build settings for our project
295
- # this is used to properly get the DerivedData folder
295
+ # e.g. to properly get the DerivedData folder
296
296
  # @param [String] The key of which we want the value for (e.g. "PRODUCT_NAME")
297
297
  def build_settings(key: nil, optional: true)
298
298
  unless @build_settings
data/gym/README.md CHANGED
@@ -175,6 +175,20 @@ export_options(
175
175
  )
176
176
  ```
177
177
 
178
+ Optional: If _gym_ can't automatically detect the provisioning profiles to use, you can pass a mapping of bundle identifiers to provisioning profiles:
179
+
180
+ ```ruby
181
+ export_options(
182
+ method: "app-store",
183
+ provisioningProfiles: {
184
+ "com.example.bundleid": "Provisioning Profile Name",
185
+ "com.example.bundleid2": "Provisioning Profile Name 2",
186
+ }
187
+ )
188
+ ```
189
+
190
+ **Note**: If you use [fastlane](https://fastlane.tools) with [match](https://fastlane.tools/match) you don't need to provide those values manually.
191
+
178
192
  For the list of available options run `xcodebuild -help`.
179
193
 
180
194
  ## Setup code signing
@@ -14,6 +14,8 @@ module Gym
14
14
  FastlaneCore::Project.detect_projects(config)
15
15
  Gym.project = FastlaneCore::Project.new(config)
16
16
 
17
+ detect_selected_provisioning_profiles
18
+
17
19
  # Go into the project's folder, as there might be a Gymfile there
18
20
  Dir.chdir(File.expand_path("..", Gym.project.path)) do
19
21
  config.load_configuration_file(Gym.gymfile_name)
@@ -54,6 +56,79 @@ module Gym
54
56
  CFPropertyList.native_types(CFPropertyList::List.new(file: path).value)
55
57
  end
56
58
 
59
+ # Since Xcode 9 you need to provide the explicit mapping of what provisioning profile to use for
60
+ # each target of your app
61
+ # rubocop:disable Style/MultilineBlockChain
62
+ def self.detect_selected_provisioning_profiles
63
+ return if Gym.config[:export_options] && Gym.config[:export_options][:provisioningProfiles]
64
+
65
+ require 'xcodeproj'
66
+
67
+ provisioning_profile_mapping = {}
68
+
69
+ # Find the xcodeproj file, as the information isn't included in the workspace file
70
+ if Gym.project.workspace?
71
+ # We have a reference to the workspace, let's find the xcodeproj file
72
+ # For some reason the `plist` gem can't parse the content file
73
+ # so we'll use a regex to find all group references
74
+
75
+ workspace_data_path = File.join(Gym.project.path, "contents.xcworkspacedata")
76
+ workspace_data = File.read(workspace_data_path)
77
+ project_paths = workspace_data.scan(/\"group:(.*)\"/).collect do |current_match|
78
+ # It's a relative path from the workspace file
79
+ File.join(File.expand_path("..", Gym.project.path), current_match.first)
80
+ end.find_all do |current_match|
81
+ !current_match.end_with?("Pods/Pods.xcodeproj")
82
+ end
83
+ else
84
+ project_paths = [Gym.project.path]
85
+ end
86
+
87
+ # Because there might be multiple projects inside a workspace
88
+ # we iterate over all of them (except for CocoaPods)
89
+ project_paths.each do |project_path|
90
+ UI.verbose("Parsing project file '#{project_path}' to find selected provisioning profiles")
91
+ begin
92
+ project = Xcodeproj::Project.open(project_path)
93
+ project.targets.each do |target|
94
+ target.build_configuration_list.build_configurations.each do |build_configuration|
95
+ current = build_configuration.build_settings
96
+
97
+ bundle_identifier = current["PRODUCT_BUNDLE_IDENTIFIER"]
98
+ provisioning_profile_specifier = current["PROVISIONING_PROFILE_SPECIFIER"]
99
+ next if provisioning_profile_specifier.to_s.length == 0
100
+
101
+ provisioning_profile_mapping[bundle_identifier] = provisioning_profile_specifier
102
+ end
103
+ end
104
+ rescue => ex
105
+ # We catch errors here, as we might run into an exception on one included project
106
+ # But maybe the next project actually contains the information we need
107
+ if Helper.xcode_at_least?("9.0")
108
+ UI.error(ex)
109
+ UI.verbose(ex.backtrace.join("\n"))
110
+ end
111
+ end
112
+ end
113
+
114
+ return if provisioning_profile_mapping.count == 0
115
+
116
+ Gym.config[:export_options] ||= {}
117
+ Gym.config[:export_options][:provisioningProfiles] = provisioning_profile_mapping
118
+ UI.message("Detected provisioning profile mapping: #{provisioning_profile_mapping}")
119
+ rescue => ex
120
+ # We don't want to fail the build if the automatic detection doesn't work
121
+ # especially since the mapping is optional for pre Xcode 9 setups
122
+ if Helper.xcode_at_least?("9.0")
123
+ UI.error("Couldn't automatically detect the provisioning profile mapping")
124
+ UI.error("Since Xcode 9 you need to provide an explicit mapping of what")
125
+ UI.error("provisioning profile to use for each target of your app")
126
+ UI.error(ex)
127
+ UI.verbose(ex.backtrace.join("\n"))
128
+ end
129
+ end
130
+ # rubocop:enable Style/MultilineBlockChain
131
+
57
132
  def self.detect_scheme
58
133
  Gym.project.select_scheme
59
134
  end
@@ -79,6 +79,10 @@ module Gym
79
79
  print "This means, the specified provisioning profile was not created using"
80
80
  print "the specified certificate."
81
81
  print "Run cert and sigh before gym to make sure to have all signing resources ready"
82
+ when /requires a provisioning profile/
83
+ print "No provisioning profile provided"
84
+ print "Make sure to pass a valid provisioning for each required target"
85
+ print "Check out the docs on how to fix this: https://github.com/fastlane/fastlane/tree/master/gym#export-options"
82
86
  # insert more specific code signing errors here
83
87
  when /Codesign check fails/
84
88
  print "A general code signing error occurred. Make sure you passed a valid"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.44.0.beta.20170630010021
4
+ version: 2.44.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -1395,24 +1395,24 @@ metadata:
1395
1395
  post_install_message:
1396
1396
  rdoc_options: []
1397
1397
  require_paths:
1398
- - fastlane_core/lib
1399
- - screengrab/lib
1400
- - frameit/lib
1401
- - scan/lib
1402
1398
  - cert/lib
1399
+ - credentials_manager/lib
1400
+ - deliver/lib
1403
1401
  - fastlane/lib
1404
- - match/lib
1402
+ - fastlane_core/lib
1403
+ - frameit/lib
1405
1404
  - gym/lib
1406
- - snapshot/lib
1407
- - produce/lib
1405
+ - match/lib
1408
1406
  - pem/lib
1409
- - spaceship/lib
1410
- - deliver/lib
1411
- - precheck/lib
1412
- - supply/lib
1413
- - credentials_manager/lib
1414
1407
  - pilot/lib
1408
+ - precheck/lib
1409
+ - produce/lib
1410
+ - scan/lib
1411
+ - screengrab/lib
1415
1412
  - sigh/lib
1413
+ - snapshot/lib
1414
+ - spaceship/lib
1415
+ - supply/lib
1416
1416
  required_ruby_version: !ruby/object:Gem::Requirement
1417
1417
  requirements:
1418
1418
  - - ">="
@@ -1420,14 +1420,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
1420
1420
  version: 2.0.0
1421
1421
  required_rubygems_version: !ruby/object:Gem::Requirement
1422
1422
  requirements:
1423
- - - ">"
1423
+ - - ">="
1424
1424
  - !ruby/object:Gem::Version
1425
- version: 1.3.1
1425
+ version: '0'
1426
1426
  requirements: []
1427
1427
  rubyforge_project:
1428
- rubygems_version: 2.4.5.2
1428
+ rubygems_version: 2.6.8
1429
1429
  signing_key:
1430
1430
  specification_version: 4
1431
1431
  summary: The easiest way to automate beta deployments and releases for your iOS and
1432
1432
  Android apps
1433
1433
  test_files: []
1434
+ has_rdoc: