fastlane 2.38.0.beta.20170612010035 → 2.38.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: 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: