fastlane 2.16.0 → 2.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cert/lib/cert/commands_generator.rb +4 -2
- data/deliver/lib/deliver/commands_generator.rb +18 -2
- data/deliver/lib/deliver/detect_values.rb +4 -2
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/spaceship/lib/spaceship/portal/portal_client.rb +21 -49
- data/spaceship/lib/spaceship/portal/provisioning_profile.rb +13 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2018da1149a04271e1861829b2c3174e3fbffa9
|
4
|
+
data.tar.gz: 009843a49c26bc5e69a8741563dce459efea763c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b5fac2721f6284bf23a447e2463d9d7c5ad2a51e44e1c72441b5a6fd5ce9c468d8070881370111fbfe9e19188e62277596c0c5440383455d422df741205dc60
|
7
|
+
data.tar.gz: fa94f1bc432ccd8ab9257a7478d8dfed2ce5267a04a671b3ab7b18206d0dd560a8c37de9199006a8ca6e9ef8f0ba06013d977bf506e8484fb940b5b5d4acb5ed
|
@@ -22,12 +22,12 @@ module Cert
|
|
22
22
|
|
23
23
|
global_option('--verbose') { FastlaneCore::Globals.verbose = true }
|
24
24
|
|
25
|
-
FastlaneCore::CommanderGenerator.new.generate(Cert::Options.available_options)
|
26
|
-
|
27
25
|
command :create do |c|
|
28
26
|
c.syntax = 'fastlane cert create'
|
29
27
|
c.description = 'Create new iOS code signing certificates'
|
30
28
|
|
29
|
+
FastlaneCore::CommanderGenerator.new.generate(Cert::Options.available_options, command: c)
|
30
|
+
|
31
31
|
c.action do |args, options|
|
32
32
|
Cert.config = FastlaneCore::Configuration.create(Cert::Options.available_options, options.__hash__)
|
33
33
|
Cert::Runner.new.launch
|
@@ -38,6 +38,8 @@ module Cert
|
|
38
38
|
c.syntax = 'fastlane cert revoke_expired'
|
39
39
|
c.description = 'Revoke expired iOS code signing certificates'
|
40
40
|
|
41
|
+
FastlaneCore::CommanderGenerator.new.generate(Cert::Options.available_options, command: c)
|
42
|
+
|
41
43
|
c.action do |args, options|
|
42
44
|
Cert.config = FastlaneCore::Configuration.create(Cert::Options.available_options, options.__hash__)
|
43
45
|
Cert::Runner.new.revoke_expired_certs!
|
@@ -37,8 +37,6 @@ module Deliver
|
|
37
37
|
program :help, 'GitHub', 'https://github.com/fastlane/fastlane/tree/master/deliver'
|
38
38
|
program :help_formatter, :compact
|
39
39
|
|
40
|
-
FastlaneCore::CommanderGenerator.new.generate(deliverfile_options)
|
41
|
-
|
42
40
|
global_option('--verbose') { FastlaneCore::Globals.verbose = true }
|
43
41
|
|
44
42
|
always_trace!
|
@@ -46,6 +44,9 @@ module Deliver
|
|
46
44
|
command :run do |c|
|
47
45
|
c.syntax = 'fastlane deliver'
|
48
46
|
c.description = 'Upload metadata and binary to iTunes Connect'
|
47
|
+
|
48
|
+
FastlaneCore::CommanderGenerator.new.generate(deliverfile_options, command: c)
|
49
|
+
|
49
50
|
c.action do |args, options|
|
50
51
|
options = FastlaneCore::Configuration.create(deliverfile_options, options.__hash__)
|
51
52
|
loaded = options.load_configuration_file("Deliverfile")
|
@@ -62,9 +63,13 @@ module Deliver
|
|
62
63
|
Deliver::Runner.new(options).run
|
63
64
|
end
|
64
65
|
end
|
66
|
+
|
65
67
|
command :submit_build do |c|
|
66
68
|
c.syntax = 'fastlane deliver submit_build'
|
67
69
|
c.description = 'Submit a specific build-nr for review, use latest for the latest build'
|
70
|
+
|
71
|
+
FastlaneCore::CommanderGenerator.new.generate(deliverfile_options, command: c)
|
72
|
+
|
68
73
|
c.action do |args, options|
|
69
74
|
options = FastlaneCore::Configuration.create(deliverfile_options, options.__hash__)
|
70
75
|
options.load_configuration_file("Deliverfile")
|
@@ -73,9 +78,13 @@ module Deliver
|
|
73
78
|
Deliver::Runner.new(options).run
|
74
79
|
end
|
75
80
|
end
|
81
|
+
|
76
82
|
command :init do |c|
|
77
83
|
c.syntax = 'fastlane deliver init'
|
78
84
|
c.description = 'Create the initial `deliver` configuration based on an existing app'
|
85
|
+
|
86
|
+
FastlaneCore::CommanderGenerator.new.generate(deliverfile_options, command: c)
|
87
|
+
|
79
88
|
c.action do |args, options|
|
80
89
|
if File.exist?("Deliverfile") or File.exist?("fastlane/Deliverfile")
|
81
90
|
UI.important("You already have a running deliver setup in this directory")
|
@@ -92,6 +101,9 @@ module Deliver
|
|
92
101
|
command :generate_summary do |c|
|
93
102
|
c.syntax = 'fastlane deliver generate_summary'
|
94
103
|
c.description = 'Generate HTML Summary without uploading/downloading anything'
|
104
|
+
|
105
|
+
FastlaneCore::CommanderGenerator.new.generate(deliverfile_options, command: c)
|
106
|
+
|
95
107
|
c.action do |args, options|
|
96
108
|
options = FastlaneCore::Configuration.create(deliverfile_options, options.__hash__)
|
97
109
|
options.load_configuration_file("Deliverfile")
|
@@ -106,6 +118,8 @@ module Deliver
|
|
106
118
|
c.syntax = 'fastlane deliver download_screenshots'
|
107
119
|
c.description = "Downloads all existing screenshots from iTunes Connect and stores them in the screenshots folder"
|
108
120
|
|
121
|
+
FastlaneCore::CommanderGenerator.new.generate(deliverfile_options, command: c)
|
122
|
+
|
109
123
|
c.action do |args, options|
|
110
124
|
options = FastlaneCore::Configuration.create(deliverfile_options(skip_verification: true), options.__hash__)
|
111
125
|
options.load_configuration_file("Deliverfile")
|
@@ -120,6 +134,8 @@ module Deliver
|
|
120
134
|
c.syntax = 'fastlane deliver download_metadata'
|
121
135
|
c.description = "Downloads existing metadata and stores it locally. This overwrites the local files."
|
122
136
|
|
137
|
+
FastlaneCore::CommanderGenerator.new.generate(deliverfile_options, command: c)
|
138
|
+
|
123
139
|
c.action do |args, options|
|
124
140
|
options = FastlaneCore::Configuration.create(deliverfile_options(skip_verification: true), options.__hash__)
|
125
141
|
options.load_configuration_file("Deliverfile")
|
@@ -20,7 +20,8 @@ module Deliver
|
|
20
20
|
|
21
21
|
options[:app_identifier] = identifier if identifier.to_s.length > 0
|
22
22
|
options[:app_identifier] ||= UI.input("The Bundle Identifier of your App: ")
|
23
|
-
rescue
|
23
|
+
rescue => ex
|
24
|
+
UI.error(ex)
|
24
25
|
UI.user_error!("Could not infer your App's Bundle Identifier")
|
25
26
|
end
|
26
27
|
|
@@ -54,7 +55,8 @@ module Deliver
|
|
54
55
|
elsif options[:pkg]
|
55
56
|
options[:app_version] ||= FastlaneCore::PkgFileAnalyser.fetch_app_version(options[:pkg])
|
56
57
|
end
|
57
|
-
rescue
|
58
|
+
rescue => ex
|
59
|
+
UI.error(ex)
|
58
60
|
UI.user_error!("Could not infer your app's version")
|
59
61
|
end
|
60
62
|
|
@@ -26,7 +26,7 @@ module Spaceship
|
|
26
26
|
# @return (Array) A list of all available teams
|
27
27
|
def teams
|
28
28
|
return @teams if @teams
|
29
|
-
req = request(:post, "
|
29
|
+
req = request(:post, "account/listTeams.action")
|
30
30
|
@teams = parse_response(req, 'teams').sort_by do |team|
|
31
31
|
[
|
32
32
|
team['name'],
|
@@ -363,16 +363,15 @@ module Spaceship
|
|
363
363
|
def create_device!(device_name, device_id, mac: false)
|
364
364
|
ensure_csrf(Spaceship::Device)
|
365
365
|
|
366
|
-
req = request(:post)
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
end
|
366
|
+
req = request(:post, "account/#{platform_slug(mac)}/device/addDevices.action", {
|
367
|
+
teamId: team_id,
|
368
|
+
deviceClasses: mac ? 'mac' : 'iphone',
|
369
|
+
deviceNumbers: device_id,
|
370
|
+
deviceNames: device_name,
|
371
|
+
register: 'single'
|
372
|
+
})
|
374
373
|
|
375
|
-
parse_response(req, '
|
374
|
+
parse_response(req, 'devices').first
|
376
375
|
end
|
377
376
|
|
378
377
|
def disable_device!(device_id, device_udid, mac: false)
|
@@ -452,16 +451,18 @@ module Spaceship
|
|
452
451
|
#####################################################
|
453
452
|
|
454
453
|
def provisioning_profiles(mac: false)
|
455
|
-
|
456
|
-
|
457
|
-
r.params = {
|
454
|
+
paging do |page_number|
|
455
|
+
req = request(:post, "account/#{platform_slug(mac)}/profile/listProvisioningProfiles.action", {
|
458
456
|
teamId: team_id,
|
457
|
+
pageNumber: page_number,
|
458
|
+
pageSize: page_size,
|
459
|
+
sort: 'name=asc',
|
459
460
|
includeInactiveProfiles: true,
|
460
461
|
onlyCountLists: true
|
461
|
-
}
|
462
|
-
end
|
462
|
+
})
|
463
463
|
|
464
|
-
|
464
|
+
parse_response(req, 'provisioningProfiles')
|
465
|
+
end
|
465
466
|
end
|
466
467
|
|
467
468
|
def provisioning_profile_details(provisioning_profile_id: nil, mac: false)
|
@@ -473,9 +474,7 @@ module Spaceship
|
|
473
474
|
end
|
474
475
|
|
475
476
|
def create_provisioning_profile!(name, distribution_method, app_id, certificate_ids, device_ids, mac: false, sub_platform: nil)
|
476
|
-
ensure_csrf(Spaceship::ProvisioningProfile)
|
477
|
-
fetch_csrf_token_for_provisioning
|
478
|
-
end
|
477
|
+
ensure_csrf(Spaceship::ProvisioningProfile)
|
479
478
|
|
480
479
|
params = {
|
481
480
|
teamId: team_id,
|
@@ -492,9 +491,7 @@ module Spaceship
|
|
492
491
|
end
|
493
492
|
|
494
493
|
def download_provisioning_profile(profile_id, mac: false)
|
495
|
-
ensure_csrf(Spaceship::ProvisioningProfile)
|
496
|
-
fetch_csrf_token_for_provisioning
|
497
|
-
end
|
494
|
+
ensure_csrf(Spaceship::ProvisioningProfile)
|
498
495
|
|
499
496
|
r = request(:get, "account/#{platform_slug(mac)}/profile/downloadProfileContent", {
|
500
497
|
teamId: team_id,
|
@@ -509,9 +506,7 @@ module Spaceship
|
|
509
506
|
end
|
510
507
|
|
511
508
|
def delete_provisioning_profile!(profile_id, mac: false)
|
512
|
-
ensure_csrf(Spaceship::ProvisioningProfile)
|
513
|
-
fetch_csrf_token_for_provisioning
|
514
|
-
end
|
509
|
+
ensure_csrf(Spaceship::ProvisioningProfile)
|
515
510
|
|
516
511
|
r = request(:post, "account/#{platform_slug(mac)}/profile/deleteProvisioningProfile.action", {
|
517
512
|
teamId: team_id,
|
@@ -521,9 +516,7 @@ module Spaceship
|
|
521
516
|
end
|
522
517
|
|
523
518
|
def repair_provisioning_profile!(profile_id, name, distribution_method, app_id, certificate_ids, device_ids, mac: false, sub_platform: nil)
|
524
|
-
ensure_csrf(Spaceship::ProvisioningProfile)
|
525
|
-
fetch_csrf_token_for_provisioning
|
526
|
-
end
|
519
|
+
ensure_csrf(Spaceship::ProvisioningProfile)
|
527
520
|
|
528
521
|
params = {
|
529
522
|
teamId: team_id,
|
@@ -541,27 +534,6 @@ module Spaceship
|
|
541
534
|
parse_response(r, 'provisioningProfile')
|
542
535
|
end
|
543
536
|
|
544
|
-
# We need a custom way to fetch the csrf token for the provisioning profile requests, since
|
545
|
-
# we use a separate API endpoint (host of Xcode API) to fetch the provisioning profiles
|
546
|
-
# All we do is fetch one profile (if exists) to get a valid csrf token with its time stamp
|
547
|
-
# This method is being called from all requests that modify, create or downloading provisioning
|
548
|
-
# profiles.
|
549
|
-
# Source https://github.com/fastlane/fastlane/issues/5903
|
550
|
-
def fetch_csrf_token_for_provisioning(mac: false)
|
551
|
-
req = request(:post) do |r|
|
552
|
-
r.url "https://developer.apple.com/services-account/#{PROTOCOL_VERSION}/account/#{platform_slug(mac)}/profile/listProvisioningProfiles.action"
|
553
|
-
r.params = {
|
554
|
-
teamId: team_id,
|
555
|
-
pageSize: 1,
|
556
|
-
pageNumber: 1,
|
557
|
-
sort: "name=asc"
|
558
|
-
}
|
559
|
-
end
|
560
|
-
|
561
|
-
parse_response(req, 'provisioningProfiles')
|
562
|
-
return nil
|
563
|
-
end
|
564
|
-
|
565
537
|
private
|
566
538
|
|
567
539
|
# This is a cache of entity type (App, AppGroup, Certificate, Device) to csrf_tokens
|
@@ -174,9 +174,6 @@ module Spaceship
|
|
174
174
|
raise "Can't find class '#{attrs['distributionMethod']}'"
|
175
175
|
end
|
176
176
|
|
177
|
-
# eagerload the Apps using the same client if we have to.
|
178
|
-
attrs['appId'] = App.set_client(@client).factory(attrs['appId'])
|
179
|
-
|
180
177
|
klass.client = @client
|
181
178
|
obj = klass.new(attrs)
|
182
179
|
|
@@ -258,14 +255,18 @@ module Spaceship
|
|
258
255
|
# If you're calling this from a subclass (like AdHoc), this will
|
259
256
|
# only return the profiles that are of this type
|
260
257
|
# @param mac (Bool) (optional): Pass true to get all Mac provisioning profiles
|
261
|
-
# @param xcode
|
258
|
+
# @param xcode DEPRECATED
|
262
259
|
def all(mac: false, xcode: false)
|
263
260
|
profiles = client.provisioning_profiles(mac: mac).map do |profile|
|
264
261
|
self.factory(profile)
|
265
262
|
end
|
266
263
|
|
267
264
|
# filter out the profiles managed by xcode
|
268
|
-
|
265
|
+
if xcode
|
266
|
+
warn('Apple API no longer returns XCode managed Provisioning Profiles')
|
267
|
+
else
|
268
|
+
profiles.delete_if(&:managed_by_xcode?)
|
269
|
+
end
|
269
270
|
|
270
271
|
return profiles if self == ProvisioningProfile
|
271
272
|
|
@@ -474,7 +475,13 @@ module Spaceship
|
|
474
475
|
end
|
475
476
|
end
|
476
477
|
|
477
|
-
|
478
|
+
@certificates
|
479
|
+
end
|
480
|
+
|
481
|
+
def app
|
482
|
+
fetch_details
|
483
|
+
|
484
|
+
App.set_client(client).new(profile_details['appId'])
|
478
485
|
end
|
479
486
|
|
480
487
|
# @return (Bool) Is this current provisioning profile adhoc?
|
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.
|
4
|
+
version: 2.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2017-02-
|
17
|
+
date: 2017-02-15 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: slack-notifier
|