fastlane 2.38.0.beta.20170612010035 → 2.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8d82fb064b2500acb4d9676973449ae674f2862
4
- data.tar.gz: 121eb693955cdff5ada1d3c4f85c07bf5667bfe1
3
+ metadata.gz: 1d4813843f6a0c883e796b89ff0cdc7db78b5393
4
+ data.tar.gz: 25a5db39445de2d3af5d09ed9d541362738b58e9
5
5
  SHA512:
6
- metadata.gz: 7f8c00b557544965831887cc565e0d88e8cd88d92be087876fe4434d2fe9a7ec530e1d04adbd7d5ad83e5cc1455461a10d84880c5435f8d1ef12aa905cbc4feb
7
- data.tar.gz: c9003a8865dee8e4765d275d3463e85a39b5cd62019d144aa2d6d066f72b629b4e898b7b4a3f02d67d4ad3ac5808d28a26803d5151f99766867d118f36e477b4
6
+ metadata.gz: 6772e065b7aee0118d6e6e6eb71db7b068c8b1a6c6489222715b492c132c7bdd329a30ba2ac606c3e58198774bfb3bd6eb0ae24c3b05d6b586b31ffac70a9533
7
+ data.tar.gz: 856a8512d48e5e280e33b5e184938622547c31e5f2925435c1433c69bdd613361119eca85b7f2e7d67f85d329aa7ec363b3a8e7c84b1164de05841a395349c09
@@ -28,6 +28,13 @@ module Deliver
28
28
  return available_options
29
29
  end
30
30
 
31
+ def self.force_overwrite_metadata?(options, path)
32
+ res = options[:force]
33
+ res ||= ENV["DELIVER_FORCE_OVERWRITE"] # for backward compatibility
34
+ res ||= UI.confirm("Do you want to overwrite existing metadata on path '#{File.expand_path(path)}'?") if UI.interactive?
35
+ res
36
+ end
37
+
31
38
  # rubocop:disable Metrics/PerceivedComplexity
32
39
  def run
33
40
  program :name, 'deliver'
@@ -146,8 +153,7 @@ module Deliver
146
153
  Deliver::Runner.new(options) # to login...
147
154
  containing = FastlaneCore::Helper.fastlane_enabled? ? FastlaneCore::FastlaneFolder.path : '.'
148
155
  path = options[:metadata_path] || File.join(containing, 'metadata')
149
- res = ENV["DELIVER_FORCE_OVERWRITE"]
150
- res ||= UI.confirm("Do you want to overwrite existing metadata on path '#{File.expand_path(path)}'?")
156
+ res = Deliver::CommandsGenerator.force_overwrite_metadata?(options, path)
151
157
  return 0 unless res
152
158
 
153
159
  require 'deliver/setup'
@@ -4,6 +4,7 @@ module Deliver
4
4
  def upload(options)
5
5
  return if options[:edit_live]
6
6
  app = options[:app]
7
+ app_modified = false
7
8
 
8
9
  v = app.edit_version(platform: options[:platform])
9
10
  UI.user_error!("Could not find a version to edit for app '#{app.name}'") unless v
@@ -11,14 +12,16 @@ module Deliver
11
12
  if options[:app_icon]
12
13
  UI.message("Uploading app icon...")
13
14
  v.upload_large_icon!(options[:app_icon])
15
+ app_modified = true
14
16
  end
15
17
 
16
18
  if options[:apple_watch_app_icon]
17
19
  UI.message("Uploading apple watchapp icon...")
18
20
  v.upload_watch_icon!(options[:apple_watch_app_icon])
21
+ app_modified = true
19
22
  end
20
23
 
21
- v.save!
24
+ v.save! if app_modified
22
25
  end
23
26
  end
24
27
  end
Binary file
@@ -12,11 +12,19 @@ module Fastlane
12
12
  should_use_legacy_api = values[:use_legacy_build_api] || Gym::Xcode.pre_7?
13
13
 
14
14
  if values[:provisioning_profile_path].to_s.length.zero? && should_use_legacy_api
15
- sigh_path = Actions.lane_context[Actions::SharedValues::SIGH_PROFILE_PATH] || ENV["SIGH_PROFILE_PATH"]
15
+ sigh_path = Actions.lane_context[SharedValues::SIGH_PROFILE_PATH] || ENV["SIGH_PROFILE_PATH"]
16
16
  values[:provisioning_profile_path] = File.expand_path(sigh_path) if sigh_path
17
17
  end
18
18
 
19
- values[:export_method] ||= Actions.lane_context[Actions::SharedValues::SIGH_PROFILE_TYPE]
19
+ values[:export_method] ||= Actions.lane_context[SharedValues::SIGH_PROFILE_TYPE]
20
+
21
+ if Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING]
22
+ # Since Xcode 9 you need to explicitly provide the provisioning profile per app target
23
+ # If the user is smart and uses match and gym together with fastlane, we can do all
24
+ # the heavy lifting for them
25
+ values[:export_options] ||= {}
26
+ values[:export_options][:provisioningProfiles] = Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING]
27
+ end
20
28
 
21
29
  absolute_ipa_path = File.expand_path(Gym::Manager.new.work(values))
22
30
  absolute_dsym_path = absolute_ipa_path.gsub(".ipa", ".app.dSYM.zip")
@@ -1,5 +1,9 @@
1
1
  module Fastlane
2
2
  module Actions
3
+ module SharedValues
4
+ MATCH_PROVISIONING_PROFILE_MAPPING = :MATCH_PROVISIONING_PROFILE_MAPPING
5
+ end
6
+
3
7
  class MatchAction < Action
4
8
  def self.run(params)
5
9
  require 'match'
@@ -8,19 +12,38 @@ module Fastlane
8
12
  Match::Runner.new.run(params)
9
13
 
10
14
  define_profile_type(params)
15
+ define_provisioning_profile_mapping(params)
11
16
  end
12
17
 
13
- def self.define_profile_type(values)
18
+ def self.define_profile_type(params)
14
19
  profile_type = "app-store"
15
- profile_type = "ad-hoc" if values[:type] == 'adhoc'
16
- profile_type = "development" if values[:type] == 'development'
17
- profile_type = "enterprise" if values[:type] == 'enterprise'
20
+ profile_type = "ad-hoc" if params[:type] == 'adhoc'
21
+ profile_type = "development" if params[:type] == 'development'
22
+ profile_type = "enterprise" if params[:type] == 'enterprise'
18
23
 
19
24
  UI.message("Setting Provisioning Profile type to '#{profile_type}'")
20
25
 
21
26
  Actions.lane_context[SharedValues::SIGH_PROFILE_TYPE] = profile_type
22
27
  end
23
28
 
29
+ # Maps the bundle identifier to the appropriate provisioning profile
30
+ # This is used in the _gym_ action as part of the export options
31
+ # e.g.
32
+ #
33
+ # export_options: {
34
+ # provisioningProfiles: { "me.themoji.app.beta": "match AppStore me.themoji.app.beta" }
35
+ # }
36
+ #
37
+ def self.define_provisioning_profile_mapping(params)
38
+ env_variable_name = Match::Utils.environment_variable_name_profile_name(app_identifier: params[:app_identifier],
39
+ type: Match.profile_type_sym(params[:type]),
40
+ platform: params[:platform])
41
+
42
+ mapping = Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING] || {}
43
+ mapping[params[:app_identifier]] = ENV[env_variable_name]
44
+ Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING] = mapping
45
+ end
46
+
24
47
  #####################################################
25
48
  # @!group Documentation
26
49
  #####################################################
@@ -51,7 +51,7 @@ module Fastlane
51
51
 
52
52
  def self.example_code
53
53
  [
54
- 'xcode_select "/Applications/Xcode6.1.app"'
54
+ 'xcode_select "/Applications/Xcode-8.3.2.app"'
55
55
  ]
56
56
  end
57
57
 
@@ -1,4 +1,4 @@
1
1
  module Fastlane
2
- VERSION = '2.38.0.beta.20170612010035'.freeze
2
+ VERSION = '2.38.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  end
@@ -10,6 +10,8 @@ module Gym
10
10
  # Responsible for building the fully working xcodebuild command
11
11
  class PackageCommandGeneratorXcode7
12
12
  class << self
13
+ DEFAULT_EXPORT_METHOD = "app-store"
14
+
13
15
  def generate
14
16
  print_legacy_information
15
17
 
@@ -134,14 +136,14 @@ module Gym
134
136
  end
135
137
 
136
138
  # Saves configuration for later use
137
- Gym.config[:export_method] ||= hash[:method]
139
+ Gym.config[:export_method] ||= hash[:method] || DEFAULT_EXPORT_METHOD
138
140
  Gym.config[:include_symbols] = hash[:uploadSymbols] if Gym.config[:include_symbols].nil?
139
141
  Gym.config[:include_bitcode] = hash[:uploadBitcode] if Gym.config[:include_bitcode].nil?
140
142
  Gym.config[:export_team_id] ||= hash[:teamID]
141
143
  else
142
144
  hash = {}
143
145
  # Sets default values
144
- Gym.config[:export_method] ||= "app-store"
146
+ Gym.config[:export_method] ||= DEFAULT_EXPORT_METHOD
145
147
  Gym.config[:include_symbols] = true if Gym.config[:include_symbols].nil?
146
148
  Gym.config[:include_bitcode] = false if Gym.config[:include_bitcode].nil?
147
149
  end
@@ -109,7 +109,7 @@ module Match
109
109
  c.syntax = "fastlane match nuke"
110
110
  c.description = "Delete all certificates and provisioning profiles from the Apple Dev Portal"
111
111
  c.action do |args, options|
112
- FastlaneCore::UI.user_error!("Please run `fastlane match nuke [type], allowed values: distribution, enterprise and development. For the 'adhoc' type, please use 'distribution' instead.")
112
+ FastlaneCore::UI.user_error!("Please run `fastlane match nuke [type], allowed values: distribution and development. For the 'adhoc' type, please use 'distribution' instead.")
113
113
  end
114
114
  end
115
115
 
@@ -38,6 +38,9 @@ module Match
38
38
  print_command: FastlaneCore::Globals.verbose?)
39
39
  rescue
40
40
  UI.error("Error cloning certificates repo, please make sure you have read access to the repository you want to use")
41
+ if branch && clone_branch_directly
42
+ UI.error("You passed '#{branch}' as branch in combination with the `clone_branch_directly` flag. Please remove `clone_branch_directly` flag on the first run for _match_ to create the branch.")
43
+ end
41
44
  UI.error("Run the following command manually to make sure you're properly authenticated:")
42
45
  UI.command(command)
43
46
  UI.user_error!("Error cloning certificates git repo, please make sure you have access to the repository - see instructions above")
Binary file
@@ -173,6 +173,28 @@ module Spaceship
173
173
  # @return (Hash) Represents the trailers of this app version (read-only)
174
174
  attr_reader :trailers
175
175
 
176
+ # @return (Hash) Represents the phased_release hash (read-only)
177
+ # For now, please use the `toggle_phased_release` method and call `.save!`
178
+ # as the API will probably change in the future
179
+ attr_reader :phased_release
180
+
181
+ # Currently phased_release doesn't seem to have all the features enabled
182
+ #
183
+ # => {"state"=>{"value"=>"NOT_STARTED", "isEditable"=>true, "isRequired"=>false, "errorKeys"=>nil},
184
+ # "startDate"=>nil,
185
+ # "lastPaused"=>nil,
186
+ # "pausedDuration"=>nil,
187
+ # "totalPauseDays"=>30,
188
+ # "currentDayNumber"=>nil,
189
+ # "dayPercentageMap"=>{"1"=>1, "2"=>2, "3"=>5, "4"=>10, "5"=>20, "6"=>50, "7"=>100},
190
+ # "isEnabled"=>true}
191
+ #
192
+ def toggle_phased_release(enabled: false)
193
+ state = (enabled ? "INACTIVE" : "NOT_STARTED")
194
+
195
+ self.phased_release["state"]["value"] = state
196
+ end
197
+
176
198
  attr_mapping({
177
199
  'appType' => :app_type,
178
200
  'platform' => :platform,
@@ -191,6 +213,7 @@ module Spaceship
191
213
  'supportsAppleWatch' => :supports_apple_watch,
192
214
  'versionId' => :version_id,
193
215
  'version.value' => :version,
216
+ 'phasedRelease' => :phased_release,
194
217
 
195
218
  # GeoJson
196
219
  # 'transitAppFile.value' => :transit_app_file
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.38.0.beta.20170612010035
4
+ version: 2.38.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -802,6 +802,7 @@ files:
802
802
  - deliver/lib/deliver/upload_price_tier.rb
803
803
  - deliver/lib/deliver/upload_screenshots.rb
804
804
  - fastlane/README.md
805
+ - fastlane/lib/.DS_Store
805
806
  - fastlane/lib/assets/Actions.md.erb
806
807
  - fastlane/lib/assets/AppfileTemplate
807
808
  - fastlane/lib/assets/AppfileTemplateAndroid
@@ -818,6 +819,7 @@ files:
818
819
  - fastlane/lib/assets/s3_plist_template.erb
819
820
  - fastlane/lib/assets/s3_version_template.erb
820
821
  - fastlane/lib/fastlane.rb
822
+ - fastlane/lib/fastlane/.DS_Store
821
823
  - fastlane/lib/fastlane/action.rb
822
824
  - fastlane/lib/fastlane/action_collector.rb
823
825
  - fastlane/lib/fastlane/actions/README.md
@@ -1264,6 +1266,7 @@ files:
1264
1266
  - snapshot/lib/snapshot/test_command_generator.rb
1265
1267
  - snapshot/lib/snapshot/update.rb
1266
1268
  - spaceship/README.md
1269
+ - spaceship/lib/.DS_Store
1267
1270
  - spaceship/lib/assets/languageMapping.json
1268
1271
  - spaceship/lib/assets/languageMappingReadable.json
1269
1272
  - spaceship/lib/spaceship.rb
@@ -1369,22 +1372,22 @@ post_install_message:
1369
1372
  rdoc_options: []
1370
1373
  require_paths:
1371
1374
  - cert/lib
1372
- - supply/lib
1373
- - sigh/lib
1374
- - snapshot/lib
1375
- - scan/lib
1376
- - spaceship/lib
1375
+ - credentials_manager/lib
1376
+ - deliver/lib
1377
1377
  - fastlane/lib
1378
- - pilot/lib
1378
+ - fastlane_core/lib
1379
+ - frameit/lib
1379
1380
  - gym/lib
1380
1381
  - match/lib
1381
1382
  - pem/lib
1383
+ - pilot/lib
1382
1384
  - produce/lib
1383
- - credentials_manager/lib
1384
- - deliver/lib
1385
- - fastlane_core/lib
1386
- - frameit/lib
1385
+ - scan/lib
1387
1386
  - screengrab/lib
1387
+ - sigh/lib
1388
+ - snapshot/lib
1389
+ - spaceship/lib
1390
+ - supply/lib
1388
1391
  required_ruby_version: !ruby/object:Gem::Requirement
1389
1392
  requirements:
1390
1393
  - - ">="
@@ -1392,14 +1395,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
1392
1395
  version: 2.0.0
1393
1396
  required_rubygems_version: !ruby/object:Gem::Requirement
1394
1397
  requirements:
1395
- - - ">"
1398
+ - - ">="
1396
1399
  - !ruby/object:Gem::Version
1397
- version: 1.3.1
1400
+ version: '0'
1398
1401
  requirements: []
1399
1402
  rubyforge_project:
1400
- rubygems_version: 2.4.5.2
1403
+ rubygems_version: 2.6.10
1401
1404
  signing_key:
1402
1405
  specification_version: 4
1403
1406
  summary: The easiest way to automate beta deployments and releases for your iOS and
1404
1407
  Android apps
1405
1408
  test_files: []
1409
+ has_rdoc: