fastlane 2.130.0.beta.20190829200051 → 2.130.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
- SHA1:
3
- metadata.gz: 1e408b1241c17ddac3a3a0b0816609db9da02268
4
- data.tar.gz: dddc5b057992d7a9f769b074de2c1f2d290a7c45
2
+ SHA256:
3
+ metadata.gz: 5ac006bb7c0f48617b7e59279f55334003a0b1f56cb0039d6de82e8e8b043fa4
4
+ data.tar.gz: 8535ae72d478a71b804f25da62dcae979281b16c9862eaaeab70ad68962e084d
5
5
  SHA512:
6
- metadata.gz: 508e0fbdb8cc9dc733d2abb3e15ebf8af38e60e5aea163a0dbd3cb24efe0a71ad523b0c3ec2a58fe7216319bba34a78bcb84f3f6c4f52969b6127d3099cb2a20
7
- data.tar.gz: 64b17726892ca6c96bdf395bdc54c0b83044e8f9d3c2d414001d67e39f744d51d84f3d7dbb24585bcf9e9d151ac0f17127ae4e9b5b31b210d7cf0a8435a57415
6
+ metadata.gz: ad318083c6822ff0f6573ed6117751a2ac4ae5ec00feb05e226b04250475de8ad2527e8c4804740a556bbecfba01712538dfc47be37d7edf45d213cb0bb50db9
7
+ data.tar.gz: d42ba71099937ac40f18383ca878d2b9c52708cf046e24d1b36ec3207bc75d8a4d94879d3f551fc2112e91fd5301cf7737471df13f4090933389a46bc6f306ae
data/README.md CHANGED
@@ -40,17 +40,23 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
40
40
  </a>
41
41
  <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
42
42
  </td>
43
- <td id='olivier-halligon'>
44
- <a href='https://github.com/AliSoftware'>
45
- <img src='https://github.com/AliSoftware.png?size=140'>
43
+ <td id='joshua-liebowitz'>
44
+ <a href='https://github.com/taquitos'>
45
+ <img src='https://github.com/taquitos.png?size=140'>
46
46
  </a>
47
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
47
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
48
48
  </td>
49
- <td id='jérôme-lacoste'>
50
- <a href='https://github.com/lacostej'>
51
- <img src='https://github.com/lacostej.png?size=140'>
49
+ <td id='jan-piotrowski'>
50
+ <a href='https://github.com/janpio'>
51
+ <img src='https://github.com/janpio.png?size=140'>
52
52
  </a>
53
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
54
+ </td>
55
+ <td id='aaron-brager'>
56
+ <a href='https://github.com/getaaron'>
57
+ <img src='https://github.com/getaaron.png?size=140'>
58
+ </a>
59
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
54
60
  </td>
55
61
  <td id='jimmy-dee'>
56
62
  <a href='https://github.com/jdee'>
@@ -58,37 +64,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
58
64
  </a>
59
65
  <h4 align='center'>Jimmy Dee</h4>
60
66
  </td>
61
- <td id='matthew-ellis'>
62
- <a href='https://github.com/matthewellis'>
63
- <img src='https://github.com/matthewellis.png?size=140'>
64
- </a>
65
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
66
- </td>
67
67
  </tr>
68
68
  <tr>
69
- <td id='luka-mirosevic'>
70
- <a href='https://github.com/lmirosevic'>
71
- <img src='https://github.com/lmirosevic.png?size=140'>
72
- </a>
73
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
74
- </td>
75
- <td id='iulian-onofrei'>
76
- <a href='https://github.com/revolter'>
77
- <img src='https://github.com/revolter.png?size=140'>
78
- </a>
79
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
80
- </td>
81
69
  <td id='manu-wallner'>
82
70
  <a href='https://github.com/milch'>
83
71
  <img src='https://github.com/milch.png?size=140'>
84
72
  </a>
85
73
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
86
74
  </td>
87
- <td id='andrew-mcburney'>
88
- <a href='https://github.com/armcburney'>
89
- <img src='https://github.com/armcburney.png?size=140'>
75
+ <td id='jérôme-lacoste'>
76
+ <a href='https://github.com/lacostej'>
77
+ <img src='https://github.com/lacostej.png?size=140'>
90
78
  </a>
91
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
80
+ </td>
81
+ <td id='stefan-natchev'>
82
+ <a href='https://github.com/snatchev'>
83
+ <img src='https://github.com/snatchev.png?size=140'>
84
+ </a>
85
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
86
+ </td>
87
+ <td id='josh-holtz'>
88
+ <a href='https://github.com/joshdholtz'>
89
+ <img src='https://github.com/joshdholtz.png?size=140'>
90
+ </a>
91
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
92
92
  </td>
93
93
  <td id='jorge-revuelta-h'>
94
94
  <a href='https://github.com/minuscorp'>
@@ -98,18 +98,38 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
98
98
  </td>
99
99
  </tr>
100
100
  <tr>
101
+ <td id='luka-mirosevic'>
102
+ <a href='https://github.com/lmirosevic'>
103
+ <img src='https://github.com/lmirosevic.png?size=140'>
104
+ </a>
105
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
106
+ </td>
107
+ <td id='olivier-halligon'>
108
+ <a href='https://github.com/AliSoftware'>
109
+ <img src='https://github.com/AliSoftware.png?size=140'>
110
+ </a>
111
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
112
+ </td>
113
+ <td id='helmut-januschka'>
114
+ <a href='https://github.com/hjanuschka'>
115
+ <img src='https://github.com/hjanuschka.png?size=140'>
116
+ </a>
117
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
118
+ </td>
119
+ <td id='felix-krause'>
120
+ <a href='https://github.com/KrauseFx'>
121
+ <img src='https://github.com/KrauseFx.png?size=140'>
122
+ </a>
123
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
124
+ </td>
101
125
  <td id='fumiya-nakamura'>
102
126
  <a href='https://github.com/nafu'>
103
127
  <img src='https://github.com/nafu.png?size=140'>
104
128
  </a>
105
129
  <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
106
130
  </td>
107
- <td id='stefan-natchev'>
108
- <a href='https://github.com/snatchev'>
109
- <img src='https://github.com/snatchev.png?size=140'>
110
- </a>
111
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
112
- </td>
131
+ </tr>
132
+ <tr>
113
133
  <td id='danielle-tomlinson'>
114
134
  <a href='https://github.com/endocrimes'>
115
135
  <img src='https://github.com/endocrimes.png?size=140'>
@@ -122,43 +142,23 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
122
142
  </a>
123
143
  <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
124
144
  </td>
125
- <td id='josh-holtz'>
126
- <a href='https://github.com/joshdholtz'>
127
- <img src='https://github.com/joshdholtz.png?size=140'>
128
- </a>
129
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
130
- </td>
131
- </tr>
132
- <tr>
133
- <td id='joshua-liebowitz'>
134
- <a href='https://github.com/taquitos'>
135
- <img src='https://github.com/taquitos.png?size=140'>
136
- </a>
137
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
138
- </td>
139
- <td id='jan-piotrowski'>
140
- <a href='https://github.com/janpio'>
141
- <img src='https://github.com/janpio.png?size=140'>
142
- </a>
143
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
144
- </td>
145
- <td id='felix-krause'>
146
- <a href='https://github.com/KrauseFx'>
147
- <img src='https://github.com/KrauseFx.png?size=140'>
145
+ <td id='andrew-mcburney'>
146
+ <a href='https://github.com/armcburney'>
147
+ <img src='https://github.com/armcburney.png?size=140'>
148
148
  </a>
149
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
149
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
150
150
  </td>
151
- <td id='helmut-januschka'>
152
- <a href='https://github.com/hjanuschka'>
153
- <img src='https://github.com/hjanuschka.png?size=140'>
151
+ <td id='matthew-ellis'>
152
+ <a href='https://github.com/matthewellis'>
153
+ <img src='https://github.com/matthewellis.png?size=140'>
154
154
  </a>
155
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
155
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
156
156
  </td>
157
- <td id='aaron-brager'>
158
- <a href='https://github.com/getaaron'>
159
- <img src='https://github.com/getaaron.png?size=140'>
157
+ <td id='iulian-onofrei'>
158
+ <a href='https://github.com/revolter'>
159
+ <img src='https://github.com/revolter.png?size=140'>
160
160
  </a>
161
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
161
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
162
162
  </td>
163
163
  </tr>
164
164
  </table>
@@ -7,41 +7,53 @@ module Fastlane
7
7
  [:ios, :mac].include?(platform)
8
8
  end
9
9
 
10
+ def self.file_column_headers
11
+ ['Device ID', 'Device Name', 'Device Platform']
12
+ end
13
+
10
14
  def self.run(params)
11
- require 'spaceship'
15
+ if params[:devices]
16
+ new_devices = params[:devices].map do |name, udid|
17
+ [udid, name]
18
+ end
19
+ elsif params[:devices_file]
20
+ require 'csv'
12
21
 
13
- devices = params[:devices]
14
- devices_file = params[:devices_file]
22
+ devices_file = CSV.read(File.expand_path(File.join(params[:devices_file])), col_sep: "\t")
23
+ unless devices_file.first == file_column_headers.first(2) || devices_file.first == file_column_headers
24
+ UI.user_error!("Please provide a file according to the Apple Sample UDID file (https://developer.apple.com/account/resources/downloads/Multiple-Upload-Samples.zip)")
25
+ end
15
26
 
16
- mac = params[:platform] == "mac"
27
+ new_devices = devices_file.drop(1).map do |row|
28
+ UI.user_error!("Invalid device line, please provide a file according to the Apple Sample UDID file (https://developer.apple.com/account/resources/downloads/Multiple-Upload-Samples.zip)") unless (2..3).cover?(row.count)
29
+ row
30
+ end
31
+ else
32
+ UI.user_error!("You must pass either a valid `devices` or `devices_file`. Please check the readme.")
33
+ end
17
34
 
35
+ require 'spaceship'
18
36
  credentials = CredentialsManager::AccountManager.new(user: params[:username])
19
37
  Spaceship.login(credentials.user, credentials.password)
20
38
  Spaceship.select_team
21
39
 
22
40
  UI.message("Fetching list of currently registered devices...")
23
- existing_devices = Spaceship::Device.all(mac: mac)
24
-
25
- if devices
26
- device_objs = devices.map do |k, v|
27
- next if existing_devices.map(&:udid).include?(v)
28
- try_create_device(name: k, udid: v, mac: mac)
29
- end
30
- elsif devices_file
31
- require 'csv'
41
+ all_platforms = Set[params[:platform]]
42
+ new_devices.each do |device|
43
+ next if device[2].nil?
44
+ all_platforms.add(device[2])
45
+ end
46
+ supported_platforms = all_platforms.select { |platform| self.is_supported?(platform.to_sym) }
32
47
 
33
- devices_file = CSV.read(File.expand_path(File.join(devices_file)), col_sep: "\t")
34
- UI.user_error!("Please provide a file according to the Apple Sample UDID file (https://devimages.apple.com.edgekey.net/downloads/devices/Multiple-Upload-Samples.zip)") unless devices_file.first == ['Device ID', 'Device Name']
48
+ existing_devices = supported_platforms.map { |platform| Spaceship::Device.all(mac: platform == "mac") }.flatten
35
49
 
36
- device_objs = devices_file.drop(1).map do |device|
37
- next if existing_devices.map(&:udid).include?(device[0])
50
+ device_objs = new_devices.map do |device|
51
+ next if existing_devices.map(&:udid).include?(device[0])
38
52
 
39
- UI.user_error!("Invalid device line, please provide a file according to the Apple Sample UDID file (http://devimages.apple.com/downloads/devices/Multiple-Upload-Samples.zip)") unless device.count == 2
53
+ device_platform_supported = !device[2].nil? && self.is_supported?(device[2].to_sym)
54
+ mac = (device_platform_supported ? device[2] : params[:platform]) == "mac"
40
55
 
41
- try_create_device(name: device[1], udid: device[0], mac: mac)
42
- end
43
- else
44
- UI.user_error!("You must pass either a valid `devices` or `devices_file`. Please check the readme.")
56
+ try_create_device(name: device[1], udid: device[0], mac: mac)
45
57
  end
46
58
 
47
59
  UI.success("Successfully registered new devices.")
@@ -55,6 +67,10 @@ module Fastlane
55
67
  UI.crash!("Failed to register new device (name: #{name}, UDID: #{udid})")
56
68
  end
57
69
 
70
+ #####################################################
71
+ # @!group Documentation
72
+ #####################################################
73
+
58
74
  def self.description
59
75
  "Registers new devices to the Apple Dev Portal"
60
76
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.130.0.beta.20190829200051'.freeze
2
+ VERSION = '2.130.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '0.49.1'.freeze
@@ -18,4 +18,4 @@ class Deliverfile: DeliverfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.129.0
21
+ // Generated with fastlane 2.130.0
@@ -494,6 +494,7 @@ func buildApp(workspace: String? = nil,
494
494
  exportXcargs: String? = nil,
495
495
  skipBuildArchive: Bool? = nil,
496
496
  skipArchive: Bool? = nil,
497
+ skipCodesigning: Bool? = nil,
497
498
  buildPath: String? = nil,
498
499
  archivePath: String? = nil,
499
500
  derivedDataPath: String? = nil,
@@ -501,20 +502,20 @@ func buildApp(workspace: String? = nil,
501
502
  resultBundlePath: String? = nil,
502
503
  buildlogPath: String = "~/Library/Logs/gym",
503
504
  sdk: String? = nil,
504
- toolchain: Any? = nil,
505
+ toolchain: String? = nil,
505
506
  destination: String? = nil,
506
507
  exportTeamId: String? = nil,
507
508
  xcargs: String? = nil,
508
509
  xcconfig: String? = nil,
509
510
  suppressXcodeOutput: Bool? = nil,
510
- disableXcpretty: Any? = nil,
511
- xcprettyTestFormat: Any? = nil,
511
+ disableXcpretty: Bool? = nil,
512
+ xcprettyTestFormat: Bool? = nil,
512
513
  xcprettyFormatter: String? = nil,
513
514
  xcprettyReportJunit: String? = nil,
514
515
  xcprettyReportHtml: String? = nil,
515
516
  xcprettyReportJson: String? = nil,
516
- analyzeBuildTime: Any? = nil,
517
- xcprettyUtf: Any? = nil,
517
+ analyzeBuildTime: Bool? = nil,
518
+ xcprettyUtf: Bool? = nil,
518
519
  skipProfileDetection: Bool = false) {
519
520
  let command = RubyCommand(commandID: "", methodName: "build_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
520
521
  RubyCommand.Argument(name: "project", value: project),
@@ -533,6 +534,7 @@ func buildApp(workspace: String? = nil,
533
534
  RubyCommand.Argument(name: "export_xcargs", value: exportXcargs),
534
535
  RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
535
536
  RubyCommand.Argument(name: "skip_archive", value: skipArchive),
537
+ RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
536
538
  RubyCommand.Argument(name: "build_path", value: buildPath),
537
539
  RubyCommand.Argument(name: "archive_path", value: archivePath),
538
540
  RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
@@ -574,6 +576,7 @@ func buildIosApp(workspace: String? = nil,
574
576
  exportXcargs: String? = nil,
575
577
  skipBuildArchive: Bool? = nil,
576
578
  skipArchive: Bool? = nil,
579
+ skipCodesigning: Bool? = nil,
577
580
  buildPath: String? = nil,
578
581
  archivePath: String? = nil,
579
582
  derivedDataPath: String? = nil,
@@ -581,20 +584,20 @@ func buildIosApp(workspace: String? = nil,
581
584
  resultBundlePath: String? = nil,
582
585
  buildlogPath: String = "~/Library/Logs/gym",
583
586
  sdk: String? = nil,
584
- toolchain: Any? = nil,
587
+ toolchain: String? = nil,
585
588
  destination: String? = nil,
586
589
  exportTeamId: String? = nil,
587
590
  xcargs: String? = nil,
588
591
  xcconfig: String? = nil,
589
592
  suppressXcodeOutput: Bool? = nil,
590
- disableXcpretty: Any? = nil,
591
- xcprettyTestFormat: Any? = nil,
593
+ disableXcpretty: Bool? = nil,
594
+ xcprettyTestFormat: Bool? = nil,
592
595
  xcprettyFormatter: String? = nil,
593
596
  xcprettyReportJunit: String? = nil,
594
597
  xcprettyReportHtml: String? = nil,
595
598
  xcprettyReportJson: String? = nil,
596
- analyzeBuildTime: Any? = nil,
597
- xcprettyUtf: Any? = nil,
599
+ analyzeBuildTime: Bool? = nil,
600
+ xcprettyUtf: Bool? = nil,
598
601
  skipProfileDetection: Bool = false) {
599
602
  let command = RubyCommand(commandID: "", methodName: "build_ios_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
600
603
  RubyCommand.Argument(name: "project", value: project),
@@ -613,6 +616,7 @@ func buildIosApp(workspace: String? = nil,
613
616
  RubyCommand.Argument(name: "export_xcargs", value: exportXcargs),
614
617
  RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
615
618
  RubyCommand.Argument(name: "skip_archive", value: skipArchive),
619
+ RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
616
620
  RubyCommand.Argument(name: "build_path", value: buildPath),
617
621
  RubyCommand.Argument(name: "archive_path", value: archivePath),
618
622
  RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
@@ -1206,6 +1210,7 @@ func danger(useBundleExec: Bool = true,
1206
1210
  githubApiToken: String? = nil,
1207
1211
  failOnErrors: Bool = false,
1208
1212
  newComment: Bool = false,
1213
+ removePreviousComments: Bool = false,
1209
1214
  base: String? = nil,
1210
1215
  head: String? = nil,
1211
1216
  pr: String? = nil) {
@@ -1216,6 +1221,7 @@ func danger(useBundleExec: Bool = true,
1216
1221
  RubyCommand.Argument(name: "github_api_token", value: githubApiToken),
1217
1222
  RubyCommand.Argument(name: "fail_on_errors", value: failOnErrors),
1218
1223
  RubyCommand.Argument(name: "new_comment", value: newComment),
1224
+ RubyCommand.Argument(name: "remove_previous_comments", value: removePreviousComments),
1219
1225
  RubyCommand.Argument(name: "base", value: base),
1220
1226
  RubyCommand.Argument(name: "head", value: head),
1221
1227
  RubyCommand.Argument(name: "pr", value: pr)])
@@ -1393,7 +1399,8 @@ func downloadDsyms(username: String,
1393
1399
  version: String? = nil,
1394
1400
  buildNumber: String? = nil,
1395
1401
  minVersion: String? = nil,
1396
- outputDirectory: String? = nil) {
1402
+ outputDirectory: String? = nil,
1403
+ waitForDsymProcessing: Bool = false) {
1397
1404
  let command = RubyCommand(commandID: "", methodName: "download_dsyms", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
1398
1405
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
1399
1406
  RubyCommand.Argument(name: "team_id", value: teamId),
@@ -1402,7 +1409,8 @@ func downloadDsyms(username: String,
1402
1409
  RubyCommand.Argument(name: "version", value: version),
1403
1410
  RubyCommand.Argument(name: "build_number", value: buildNumber),
1404
1411
  RubyCommand.Argument(name: "min_version", value: minVersion),
1405
- RubyCommand.Argument(name: "output_directory", value: outputDirectory)])
1412
+ RubyCommand.Argument(name: "output_directory", value: outputDirectory),
1413
+ RubyCommand.Argument(name: "wait_for_dsym_processing", value: waitForDsymProcessing)])
1406
1414
  _ = runner.executeCommand(command)
1407
1415
  }
1408
1416
  func downloadFromPlayStore(packageName: String,
@@ -1812,6 +1820,7 @@ func gym(workspace: Any? = gymfile.workspace,
1812
1820
  exportXcargs: Any? = gymfile.exportXcargs,
1813
1821
  skipBuildArchive: Bool? = gymfile.skipBuildArchive,
1814
1822
  skipArchive: Bool? = gymfile.skipArchive,
1823
+ skipCodesigning: Bool? = gymfile.skipCodesigning,
1815
1824
  buildPath: Any? = gymfile.buildPath,
1816
1825
  archivePath: Any? = gymfile.archivePath,
1817
1826
  derivedDataPath: Any? = gymfile.derivedDataPath,
@@ -1825,14 +1834,14 @@ func gym(workspace: Any? = gymfile.workspace,
1825
1834
  xcargs: Any? = gymfile.xcargs,
1826
1835
  xcconfig: Any? = gymfile.xcconfig,
1827
1836
  suppressXcodeOutput: Bool? = gymfile.suppressXcodeOutput,
1828
- disableXcpretty: Any? = gymfile.disableXcpretty,
1829
- xcprettyTestFormat: Any? = gymfile.xcprettyTestFormat,
1837
+ disableXcpretty: Bool? = gymfile.disableXcpretty,
1838
+ xcprettyTestFormat: Bool? = gymfile.xcprettyTestFormat,
1830
1839
  xcprettyFormatter: Any? = gymfile.xcprettyFormatter,
1831
1840
  xcprettyReportJunit: Any? = gymfile.xcprettyReportJunit,
1832
1841
  xcprettyReportHtml: Any? = gymfile.xcprettyReportHtml,
1833
1842
  xcprettyReportJson: Any? = gymfile.xcprettyReportJson,
1834
- analyzeBuildTime: Any? = gymfile.analyzeBuildTime,
1835
- xcprettyUtf: Any? = gymfile.xcprettyUtf,
1843
+ analyzeBuildTime: Bool? = gymfile.analyzeBuildTime,
1844
+ xcprettyUtf: Bool? = gymfile.xcprettyUtf,
1836
1845
  skipProfileDetection: Bool = gymfile.skipProfileDetection) {
1837
1846
  let command = RubyCommand(commandID: "", methodName: "gym", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1838
1847
  RubyCommand.Argument(name: "project", value: project),
@@ -1851,6 +1860,7 @@ func gym(workspace: Any? = gymfile.workspace,
1851
1860
  RubyCommand.Argument(name: "export_xcargs", value: exportXcargs),
1852
1861
  RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
1853
1862
  RubyCommand.Argument(name: "skip_archive", value: skipArchive),
1863
+ RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
1854
1864
  RubyCommand.Argument(name: "build_path", value: buildPath),
1855
1865
  RubyCommand.Argument(name: "archive_path", value: archivePath),
1856
1866
  RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
@@ -3306,7 +3316,7 @@ func slather(buildDirectory: String? = nil,
3306
3316
  verbose: Bool? = nil,
3307
3317
  useBundleExec: Bool = false,
3308
3318
  binaryBasename: Bool = false,
3309
- binaryFile: String? = nil,
3319
+ binaryFile: [String]? = nil,
3310
3320
  arch: String? = nil,
3311
3321
  sourceFiles: Bool = false,
3312
3322
  decimals: Bool = false) {
@@ -4399,6 +4409,7 @@ let precheckfile: Precheckfile = Precheckfile()
4399
4409
  let scanfile: Scanfile = Scanfile()
4400
4410
  let screengrabfile: Screengrabfile = Screengrabfile()
4401
4411
  let snapshotfile: Snapshotfile = Snapshotfile()
4412
+
4402
4413
  // Please don't remove the lines below
4403
4414
  // They are used to detect outdated files
4404
- // FastlaneRunnerAPIVersion [0.9.55]
4415
+ // FastlaneRunnerAPIVersion [0.9.56]
@@ -18,4 +18,4 @@ class Gymfile: GymfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.129.0
21
+ // Generated with fastlane 2.130.0
@@ -16,6 +16,7 @@ protocol GymfileProtocol: class {
16
16
  var exportXcargs: String? { get }
17
17
  var skipBuildArchive: Bool? { get }
18
18
  var skipArchive: Bool? { get }
19
+ var skipCodesigning: Bool? { get }
19
20
  var buildPath: String? { get }
20
21
  var archivePath: String? { get }
21
22
  var derivedDataPath: String? { get }
@@ -29,14 +30,14 @@ protocol GymfileProtocol: class {
29
30
  var xcargs: String? { get }
30
31
  var xcconfig: String? { get }
31
32
  var suppressXcodeOutput: Bool? { get }
32
- var disableXcpretty: String? { get }
33
- var xcprettyTestFormat: String? { get }
33
+ var disableXcpretty: Bool? { get }
34
+ var xcprettyTestFormat: Bool? { get }
34
35
  var xcprettyFormatter: String? { get }
35
36
  var xcprettyReportJunit: String? { get }
36
37
  var xcprettyReportHtml: String? { get }
37
38
  var xcprettyReportJson: String? { get }
38
- var analyzeBuildTime: String? { get }
39
- var xcprettyUtf: String? { get }
39
+ var analyzeBuildTime: Bool? { get }
40
+ var xcprettyUtf: Bool? { get }
40
41
  var skipProfileDetection: Bool { get }
41
42
  }
42
43
 
@@ -58,6 +59,7 @@ extension GymfileProtocol {
58
59
  var exportXcargs: String? { return nil }
59
60
  var skipBuildArchive: Bool? { return nil }
60
61
  var skipArchive: Bool? { return nil }
62
+ var skipCodesigning: Bool? { return nil }
61
63
  var buildPath: String? { return nil }
62
64
  var archivePath: String? { return nil }
63
65
  var derivedDataPath: String? { return nil }
@@ -71,17 +73,17 @@ extension GymfileProtocol {
71
73
  var xcargs: String? { return nil }
72
74
  var xcconfig: String? { return nil }
73
75
  var suppressXcodeOutput: Bool? { return nil }
74
- var disableXcpretty: String? { return nil }
75
- var xcprettyTestFormat: String? { return nil }
76
+ var disableXcpretty: Bool? { return nil }
77
+ var xcprettyTestFormat: Bool? { return nil }
76
78
  var xcprettyFormatter: String? { return nil }
77
79
  var xcprettyReportJunit: String? { return nil }
78
80
  var xcprettyReportHtml: String? { return nil }
79
81
  var xcprettyReportJson: String? { return nil }
80
- var analyzeBuildTime: String? { return nil }
81
- var xcprettyUtf: String? { return nil }
82
+ var analyzeBuildTime: Bool? { return nil }
83
+ var xcprettyUtf: Bool? { return nil }
82
84
  var skipProfileDetection: Bool { return false }
83
85
  }
84
86
 
85
87
  // Please don't remove the lines below
86
88
  // They are used to detect outdated files
87
- // FastlaneRunnerAPIVersion [0.9.4]
89
+ // FastlaneRunnerAPIVersion [0.9.5]
@@ -18,4 +18,4 @@ class Matchfile: MatchfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.129.0
21
+ // Generated with fastlane 2.130.0
@@ -18,4 +18,4 @@ class Precheckfile: PrecheckfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.129.0
21
+ // Generated with fastlane 2.130.0
@@ -18,4 +18,4 @@ class Scanfile: ScanfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.129.0
21
+ // Generated with fastlane 2.130.0
@@ -18,4 +18,4 @@ class Screengrabfile: ScreengrabfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.129.0
21
+ // Generated with fastlane 2.130.0
@@ -18,4 +18,4 @@ class Snapshotfile: SnapshotfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.129.0
21
+ // Generated with fastlane 2.130.0
@@ -1 +1 @@
1
- {"Fastlane.swift":"Autogenerated API","DeliverfileProtocol.swift":"Autogenerated API","GymfileProtocol.swift":"Autogenerated API","MatchfileProtocol.swift":"Autogenerated API","PrecheckfileProtocol.swift":"Autogenerated API","ScanfileProtocol.swift":"Autogenerated API","ScreengrabfileProtocol.swift":"Autogenerated API","SnapshotfileProtocol.swift":"Autogenerated API","LaneFileProtocol.swift":"Fastfile Components","ControlCommand.swift":"Networking","RubyCommand.swift":"Networking","RubyCommandable.swift":"Networking","Runner.swift":"Networking","SocketClient.swift":"Networking","SocketClientDelegateProtocol.swift":"Networking","SocketResponse.swift":"Networking","ArgumentProcessor.swift":"Runner Code","main.swift":"Runner Code","RunnerArgument.swift":"Runner Code"}
1
+ {"Actions.swift":"Autogenerated API","Fastlane.swift":"Autogenerated API","DeliverfileProtocol.swift":"Autogenerated API","GymfileProtocol.swift":"Autogenerated API","MatchfileProtocol.swift":"Autogenerated API","Plugins.swift":"Autogenerated API","PrecheckfileProtocol.swift":"Autogenerated API","ScanfileProtocol.swift":"Autogenerated API","ScreengrabfileProtocol.swift":"Autogenerated API","SnapshotfileProtocol.swift":"Autogenerated API","LaneFileProtocol.swift":"Fastfile Components","ControlCommand.swift":"Networking","RubyCommand.swift":"Networking","RubyCommandable.swift":"Networking","Runner.swift":"Networking","SocketClient.swift":"Networking","SocketClientDelegateProtocol.swift":"Networking","SocketResponse.swift":"Networking","ArgumentProcessor.swift":"Runner Code","main.swift":"Runner Code","RunnerArgument.swift":"Runner Code"}
@@ -1,5 +1,6 @@
1
1
  require_relative 'territory'
2
2
  require_relative 'b2b_user'
3
+ require_relative 'b2b_organization'
3
4
  module Spaceship
4
5
  module Tunes
5
6
  class Availability < TunesBase
@@ -27,6 +28,9 @@ module Spaceship
27
28
  # @return (Array of Spaceship::Tunes::B2bUser objects) A list of users
28
29
  attr_accessor :b2b_users
29
30
 
31
+ # @return (Array of Spaceship::Tunes::B2bOrganization objects) A list of b2b orgs
32
+ attr_accessor :b2b_organizations
33
+
30
34
  attr_mapping(
31
35
  'theWorld' => :include_future_territories,
32
36
  'preOrder.clearedForPreOrder.value' => :cleared_for_preorder,
@@ -47,12 +51,12 @@ module Spaceship
47
51
  # Base::DataHash sets values for paths that don't exist
48
52
  obj = self.new(
49
53
  'preOrder' => {
50
- 'clearedForPreOrder' => {
51
- 'value' => false
52
- },
53
- 'appAvailableDate' => {
54
- 'value' => nil
55
- }
54
+ 'clearedForPreOrder' => {
55
+ 'value' => false
56
+ },
57
+ 'appAvailableDate' => {
58
+ 'value' => nil
59
+ }
56
60
  }
57
61
  )
58
62
 
@@ -66,8 +70,8 @@ module Spaceship
66
70
  obj.include_future_territories = params.fetch(:include_future_territories, true)
67
71
  obj.cleared_for_preorder = params.fetch(:cleared_for_preorder, false)
68
72
  obj.app_available_date = params.fetch(:app_available_date, nil)
69
- obj.b2b_unavailable = params.fetch(:b2b_unavailable, false)
70
- obj.b2b_app_enabled = params.fetch(:b2b_app_enabled, false)
73
+ obj.b2b_unavailable = params.fetch(:b2b_unavailable, false)
74
+ obj.b2b_app_enabled = params.fetch(:b2b_app_enabled, false)
71
75
  obj.educational_discount = params.fetch(:educational_discount, true)
72
76
  return obj
73
77
  end
@@ -80,6 +84,10 @@ module Spaceship
80
84
  @b2b_users || raw_data['b2bUsers'].map { |user| B2bUser.new(user) }
81
85
  end
82
86
 
87
+ def b2b_organizations
88
+ @b2b_organizations || raw_data['b2bOrganizations'].map { |user| B2bOrganization.new(user) }
89
+ end
90
+
83
91
  def b2b_app_enabled
84
92
  @b2b_app_enabled.nil? ? raw_data['b2bAppEnabled'] : @b2b_app_enabled
85
93
  end
@@ -127,6 +135,30 @@ module Spaceship
127
135
 
128
136
  return self
129
137
  end
138
+
139
+ # Updates users for b2b enabled apps
140
+ def update_dep_organizations(organization_list = [])
141
+ raise "Cannot add dep organizations if b2b is not enabled" unless b2b_app_enabled
142
+
143
+ added_orgs = b2b_organizations
144
+
145
+ # Returns if list is unchanged
146
+ return self if (added_orgs - organization_list) == (organization_list - added_orgs)
147
+
148
+ orgs_to_add = organization_list.reject { |organization| added_orgs.include?(organization) }
149
+ orgs_to_remove = added_orgs.nil? ? organization_list : added_orgs.reject { |organization| organization_list.include?(organization) }
150
+
151
+ @b2b_organizations = b2b_organizations.reject { |organization| orgs_to_remove.include?(organization) }
152
+ @b2b_organizations.concat(orgs_to_add)
153
+ @b2b_organizations.concat(orgs_to_remove.map do |organization|
154
+ B2bOrganization.from_id_info(dep_id: organization.dep_customer_id,
155
+ dep_name: organization.name,
156
+ dep_org_id: organization.dep_organization_id,
157
+ type: false)
158
+ end)
159
+
160
+ return self
161
+ end
130
162
  end
131
163
  end
132
164
  end
@@ -0,0 +1,50 @@
1
+ require_relative 'tunes_base'
2
+ module Spaceship
3
+ module Tunes
4
+ class B2bOrganization < TunesBase
5
+ # @return (String) add or remove
6
+ attr_accessor :type
7
+
8
+ # @return (String) customer id
9
+ attr_accessor :dep_customer_id
10
+
11
+ # @return (String) organization id
12
+ attr_accessor :dep_organization_id
13
+
14
+ # @return (String) organization name
15
+ attr_accessor :name
16
+
17
+ # enum for types
18
+ class TYPE
19
+ ADD = "ADD"
20
+ REMOVE = "REMOVE"
21
+ NO_CHANGE = "NO_CHANGE"
22
+ end
23
+
24
+ attr_mapping(
25
+ 'value.type' => :type,
26
+ 'value.depCustomerId' => :dep_customer_id,
27
+ 'value.organizationId' => :dep_organization_id,
28
+ 'value.name' => :name
29
+ )
30
+
31
+ def self.from_id_info(dep_id: nil, dep_org_id: nil, dep_name: nil, type: TYPE::NO_CHANGE)
32
+ self.new({ "value" => { "type" => type, "depCustomerId" => dep_id, "organizationId" => dep_org_id, "name" => dep_name } })
33
+ end
34
+
35
+ def ==(other)
36
+ other.class == self.class && other.state == self.state
37
+ end
38
+
39
+ def state
40
+ return [type, dep_customer_id, name]
41
+ end
42
+
43
+ alias eql? ==
44
+
45
+ def hash
46
+ state.hash
47
+ end
48
+ end
49
+ end
50
+ end
@@ -718,7 +718,7 @@ module Spaceship
718
718
  data["preOrder"]["clearedForPreOrder"] = { "value" => cleared_for_preorder, "isEditable" => true, "isRequired" => true, "errorKeys" => nil }
719
719
  data["preOrder"]["appAvailableDate"] = { "value" => app_available_date, "isEditable" => true, "isRequired" => true, "errorKeys" => nil }
720
720
  data["b2bUsers"] = availability.b2b_app_enabled ? availability.b2b_users.map { |user| { "value" => { "add" => user.add, "delete" => user.delete, "dsUsername" => user.ds_username } } } : []
721
-
721
+ data["b2bOrganizations"] = availability.b2b_app_enabled ? availability.b2b_organizations.map { |org| { "value" => { "type" => org.type, "depCustomerId" => org.dep_customer_id, "organizationId" => org.dep_organization_id, "name" => org.name } } } : []
722
722
  # send the changes back to Apple
723
723
  r = request(:post) do |req|
724
724
  req.url("ra/apps/#{app_id}/pricing/intervals")
metadata CHANGED
@@ -1,33 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.130.0.beta.20190829200051
4
+ version: 2.130.0
5
5
  platform: ruby
6
6
  authors:
7
- - Jorge Revuelta H
8
- - Olivier Halligon
9
- - Aaron Brager
7
+ - Felix Krause
8
+ - Matthew Ellis
10
9
  - Joshua Liebowitz
11
10
  - Fumiya Nakamura
11
+ - Danielle Tomlinson
12
12
  - Kohki Miki
13
- - Jan Piotrowski
14
- - Jimmy Dee
15
- - Andrew McBurney
16
- - Maksym Grebenets
17
13
  - Stefan Natchev
18
- - Matthew Ellis
14
+ - Jimmy Dee
15
+ - Luka Mirosevic
19
16
  - Jérôme Lacoste
17
+ - Josh Holtz
18
+ - Maksym Grebenets
19
+ - Helmut Januschka
20
20
  - Iulian Onofrei
21
- - Danielle Tomlinson
21
+ - Aaron Brager
22
+ - Andrew McBurney
22
23
  - Manu Wallner
23
- - Felix Krause
24
- - Luka Mirosevic
25
- - Helmut Januschka
26
- - Josh Holtz
24
+ - Jan Piotrowski
25
+ - Jorge Revuelta H
26
+ - Olivier Halligon
27
27
  autorequire:
28
28
  bindir: bin
29
29
  cert_chain: []
30
- date: 2019-08-29 00:00:00.000000000 Z
30
+ date: 2019-08-30 00:00:00.000000000 Z
31
31
  dependencies:
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: slack-notifier
@@ -986,6 +986,9 @@ files:
986
986
  - fastlane/lib/fastlane.rb
987
987
  - fastlane/lib/fastlane/action.rb
988
988
  - fastlane/lib/fastlane/action_collector.rb
989
+ - fastlane/lib/fastlane/actions/.hockey.rb.swp
990
+ - fastlane/lib/fastlane/actions/.slack.rb.swp
991
+ - fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp
989
992
  - fastlane/lib/fastlane/actions/README.md
990
993
  - fastlane/lib/fastlane/actions/actions_helper.rb
991
994
  - fastlane/lib/fastlane/actions/adb.rb
@@ -1312,6 +1315,7 @@ files:
1312
1315
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj
1313
1316
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
1314
1317
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
1318
+ - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate
1315
1319
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme
1316
1320
  - fastlane/swift/FastlaneSwiftRunner/README.txt
1317
1321
  - fastlane/swift/Gymfile.swift
@@ -1466,6 +1470,7 @@ files:
1466
1470
  - pem/lib/pem/options.rb
1467
1471
  - pilot/README.md
1468
1472
  - pilot/lib/pilot.rb
1473
+ - pilot/lib/pilot/.manager.rb.swp
1469
1474
  - pilot/lib/pilot/build_manager.rb
1470
1475
  - pilot/lib/pilot/commands_generator.rb
1471
1476
  - pilot/lib/pilot/features.rb
@@ -1597,6 +1602,7 @@ files:
1597
1602
  - spaceship/lib/spaceship/client.rb
1598
1603
  - spaceship/lib/spaceship/commands_generator.rb
1599
1604
  - spaceship/lib/spaceship/connect_api.rb
1605
+ - spaceship/lib/spaceship/connect_api/.DS_Store
1600
1606
  - spaceship/lib/spaceship/connect_api/client.rb
1601
1607
  - spaceship/lib/spaceship/connect_api/model.rb
1602
1608
  - spaceship/lib/spaceship/connect_api/models/app.rb
@@ -1690,6 +1696,7 @@ files:
1690
1696
  - spaceship/lib/spaceship/tunes/app_version_states_history.rb
1691
1697
  - spaceship/lib/spaceship/tunes/application.rb
1692
1698
  - spaceship/lib/spaceship/tunes/availability.rb
1699
+ - spaceship/lib/spaceship/tunes/b2b_organization.rb
1693
1700
  - spaceship/lib/spaceship/tunes/b2b_user.rb
1694
1701
  - spaceship/lib/spaceship/tunes/build.rb
1695
1702
  - spaceship/lib/spaceship/tunes/build_details.rb
@@ -1745,23 +1752,23 @@ metadata:
1745
1752
  post_install_message:
1746
1753
  rdoc_options: []
1747
1754
  require_paths:
1755
+ - credentials_manager/lib
1756
+ - pem/lib
1757
+ - snapshot/lib
1758
+ - frameit/lib
1759
+ - match/lib
1748
1760
  - fastlane_core/lib
1749
- - cert/lib
1761
+ - deliver/lib
1762
+ - scan/lib
1750
1763
  - supply/lib
1751
- - pem/lib
1752
- - pilot/lib
1753
- - credentials_manager/lib
1754
- - sigh/lib
1764
+ - cert/lib
1755
1765
  - fastlane/lib
1766
+ - spaceship/lib
1767
+ - pilot/lib
1756
1768
  - gym/lib
1757
- - deliver/lib
1758
1769
  - precheck/lib
1759
- - spaceship/lib
1760
- - frameit/lib
1761
1770
  - screengrab/lib
1762
- - match/lib
1763
- - scan/lib
1764
- - snapshot/lib
1771
+ - sigh/lib
1765
1772
  - produce/lib
1766
1773
  required_ruby_version: !ruby/object:Gem::Requirement
1767
1774
  requirements:
@@ -1770,12 +1777,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
1770
1777
  version: 2.0.0
1771
1778
  required_rubygems_version: !ruby/object:Gem::Requirement
1772
1779
  requirements:
1773
- - - ">"
1780
+ - - ">="
1774
1781
  - !ruby/object:Gem::Version
1775
- version: 1.3.1
1782
+ version: '0'
1776
1783
  requirements: []
1777
- rubyforge_project:
1778
- rubygems_version: 2.6.8
1784
+ rubygems_version: 3.0.3
1779
1785
  signing_key:
1780
1786
  specification_version: 4
1781
1787
  summary: The easiest way to automate beta deployments and releases for your iOS and