fastlane 2.89.0.beta.20180402050042 → 2.89.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: 13b4b2dfdb29f65986fddb2140cf991907e5189f
4
- data.tar.gz: 5059297e5554a4c3e81bec07bd0d7cd50b8c274b
3
+ metadata.gz: 6dc8f9a337594c7230b0d1aeb872d5810cc7dd33
4
+ data.tar.gz: 44e891c36ef3aa5e3d404f5b279febef9e357760
5
5
  SHA512:
6
- metadata.gz: a28a7490aeba94c6023064d310befc6ccd193c80c3f8d67063d08c173b69336ad91f92afa34b553aaee6601e7d6dbd0d26382f67d6eacb5f886205672ba4f006
7
- data.tar.gz: 47d440805b63293e13d71dfbef2980a2d96df7b4e7e3815178f00e0bb3a67efb0b18a3c8550263c68e338782f1bb14e61ddee497d0a45bfc6e45e29b58354f00
6
+ metadata.gz: 1380d44e688126e1c2973a14f6f08272114e17794a8ff010072bcbd90bee6b015ca47fe6729790e394bde3e0bff9a363a5f2a0349ae29a126c0a2e0cec70a80a
7
+ data.tar.gz: '043792d70a28425a06674508f975855805fea67bf481030dbdefd35027e36bcb6043150928eb65c51879e41e9b1a4404bffea53af53bafea6fe056615bf8c38e'
data/README.md CHANGED
@@ -32,81 +32,49 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
32
32
 
33
33
  <table id='team'>
34
34
  <tr>
35
- <td id='stefan-natchev'>
36
- <a href='https://github.com/snatchev'>
37
- <img src='https://github.com/snatchev.png?size=140'>
38
- </a>
39
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
40
- </td>
41
- <td id='josh-holtz'>
42
- <a href='https://github.com/joshdholtz'>
43
- <img src='https://github.com/joshdholtz.png?size=140'>
44
- </a>
45
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
46
- </td>
47
- <td id='jérôme-lacoste'>
48
- <a href='https://github.com/lacostej'>
49
- <img src='https://github.com/lacostej.png?size=140'>
50
- </a>
51
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
52
- </td>
53
- <td id='helmut-januschka'>
54
- <a href='https://github.com/hjanuschka'>
55
- <img src='https://github.com/hjanuschka.png?size=140'>
56
- </a>
57
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
58
- </td>
59
- <td id='danielle-tomlinson'>
60
- <a href='https://github.com/DanToml'>
61
- <img src='https://github.com/DanToml.png?size=140'>
62
- </a>
63
- <h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
64
- </td>
65
- </tr>
66
- <tr>
67
35
  <td id='iulian-onofrei'>
68
36
  <a href='https://github.com/revolter'>
69
37
  <img src='https://github.com/revolter.png?size=140'>
70
38
  </a>
71
39
  <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
72
40
  </td>
73
- <td id='jimmy-dee'>
74
- <a href='https://github.com/jdee'>
75
- <img src='https://github.com/jdee.png?size=140'>
41
+ <td id='stefan-natchev'>
42
+ <a href='https://github.com/snatchev'>
43
+ <img src='https://github.com/snatchev.png?size=140'>
76
44
  </a>
77
- <h4 align='center'>Jimmy Dee</h4>
45
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
78
46
  </td>
79
- <td id='felix-krause'>
80
- <a href='https://github.com/KrauseFx'>
81
- <img src='https://github.com/KrauseFx.png?size=140'>
47
+ <td id='manu-wallner'>
48
+ <a href='https://github.com/milch'>
49
+ <img src='https://github.com/milch.png?size=140'>
82
50
  </a>
83
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
51
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
84
52
  </td>
85
- <td id='luka-mirosevic'>
86
- <a href='https://github.com/lmirosevic'>
87
- <img src='https://github.com/lmirosevic.png?size=140'>
53
+ <td id='kohki-miki'>
54
+ <a href='https://github.com/giginet'>
55
+ <img src='https://github.com/giginet.png?size=140'>
88
56
  </a>
89
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
57
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
90
58
  </td>
91
- <td id='matthew-ellis'>
92
- <a href='https://github.com/matthewellis'>
93
- <img src='https://github.com/matthewellis.png?size=140'>
59
+ <td id='fumiya-nakamura'>
60
+ <a href='https://github.com/nafu'>
61
+ <img src='https://github.com/nafu.png?size=140'>
94
62
  </a>
95
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
63
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
96
64
  </td>
97
65
  </tr>
98
66
  <tr>
99
- <td id='manu-wallner'>
100
- <a href='https://github.com/milch'>
101
- <img src='https://github.com/milch.png?size=140'>
67
+ <td id='josh-holtz'>
68
+ <a href='https://github.com/joshdholtz'>
69
+ <img src='https://github.com/joshdholtz.png?size=140'>
102
70
  </a>
103
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
71
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
104
72
  </td>
105
- <td id='olivier-halligon'>
106
- <a href='https://github.com/AliSoftware'>
107
- <img src='https://github.com/AliSoftware.png?size=140'>
73
+ <td id='jérôme-lacoste'>
74
+ <a href='https://github.com/lacostej'>
75
+ <img src='https://github.com/lacostej.png?size=140'>
108
76
  </a>
109
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
77
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
110
78
  </td>
111
79
  <td id='andrew-mcburney'>
112
80
  <a href='https://github.com/AndrewMcBurney'>
@@ -114,25 +82,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
114
82
  </a>
115
83
  <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
116
84
  </td>
117
- <td id='kohki-miki'>
118
- <a href='https://github.com/giginet'>
119
- <img src='https://github.com/giginet.png?size=140'>
120
- </a>
121
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
122
- </td>
123
85
  <td id='jan-piotrowski'>
124
86
  <a href='https://github.com/janpio'>
125
87
  <img src='https://github.com/janpio.png?size=140'>
126
88
  </a>
127
89
  <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
128
90
  </td>
91
+ <td id='joshua-liebowitz'>
92
+ <a href='https://github.com/taquitos'>
93
+ <img src='https://github.com/taquitos.png?size=140'>
94
+ </a>
95
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
96
+ </td>
129
97
  </tr>
130
98
  <tr>
131
- <td id='fumiya-nakamura'>
132
- <a href='https://github.com/nafu'>
133
- <img src='https://github.com/nafu.png?size=140'>
99
+ <td id='luka-mirosevic'>
100
+ <a href='https://github.com/lmirosevic'>
101
+ <img src='https://github.com/lmirosevic.png?size=140'>
134
102
  </a>
135
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
103
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
136
104
  </td>
137
105
  <td id='jorge-revuelta-h'>
138
106
  <a href='https://github.com/minuscorp'>
@@ -140,17 +108,49 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
140
108
  </a>
141
109
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
142
110
  </td>
111
+ <td id='helmut-januschka'>
112
+ <a href='https://github.com/hjanuschka'>
113
+ <img src='https://github.com/hjanuschka.png?size=140'>
114
+ </a>
115
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
116
+ </td>
143
117
  <td id='aaron-brager'>
144
118
  <a href='https://github.com/getaaron'>
145
119
  <img src='https://github.com/getaaron.png?size=140'>
146
120
  </a>
147
121
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
148
122
  </td>
149
- <td id='joshua-liebowitz'>
150
- <a href='https://github.com/taquitos'>
151
- <img src='https://github.com/taquitos.png?size=140'>
123
+ <td id='danielle-tomlinson'>
124
+ <a href='https://github.com/DanToml'>
125
+ <img src='https://github.com/DanToml.png?size=140'>
152
126
  </a>
153
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
127
+ <h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
128
+ </td>
129
+ </tr>
130
+ <tr>
131
+ <td id='felix-krause'>
132
+ <a href='https://github.com/KrauseFx'>
133
+ <img src='https://github.com/KrauseFx.png?size=140'>
134
+ </a>
135
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
136
+ </td>
137
+ <td id='olivier-halligon'>
138
+ <a href='https://github.com/AliSoftware'>
139
+ <img src='https://github.com/AliSoftware.png?size=140'>
140
+ </a>
141
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
142
+ </td>
143
+ <td id='matthew-ellis'>
144
+ <a href='https://github.com/matthewellis'>
145
+ <img src='https://github.com/matthewellis.png?size=140'>
146
+ </a>
147
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
148
+ </td>
149
+ <td id='jimmy-dee'>
150
+ <a href='https://github.com/jdee'>
151
+ <img src='https://github.com/jdee.png?size=140'>
152
+ </a>
153
+ <h4 align='center'>Jimmy Dee</h4>
154
154
  </td>
155
155
  <td id='maksym-grebenets'>
156
156
  <a href='https://github.com/mgrebenets'>
@@ -40,6 +40,14 @@ module Fastlane
40
40
  end
41
41
  if params[:code_sign_identity]
42
42
  build_configuration_list.set_setting("CODE_SIGN_IDENTITY", params[:code_sign_identity])
43
+
44
+ # We also need to update the value if it was overriden for a specific SDK
45
+ build_configuration_list.build_configurations.each do |build_configuration|
46
+ codesign_build_settings_keys = build_configuration.build_settings.keys.select { |key| key.to_s.match(/CODE_SIGN_IDENTITY.*/) }
47
+ codesign_build_settings_keys.each do |setting|
48
+ build_configuration_list.set_setting(setting, params[:code_sign_identity])
49
+ end
50
+ end
43
51
  UI.important("Set Code Sign identity to: #{params[:code_sign_identity]} for target: #{found_target[:name]}")
44
52
  end
45
53
  if params[:profile_name]
@@ -105,14 +105,20 @@ fastlane produce enable_services --help
105
105
  --game-center Enable Game Center
106
106
  --healthkit Enable HealthKit
107
107
  --homekit Enable HomeKit
108
- --wireless-conf Enable Wireless Accessory Configuration
108
+ --hotspot Enable Hotspot
109
109
  --icloud STRING Enable iCloud, suitable values are "legacy" and "cloudkit"
110
110
  --in-app-purchase Enable In-App Purchase
111
111
  --inter-app-audio Enable Inter-App-Audio
112
- --passbook Enable Passbook
112
+ --multipath Enable Multipath
113
+ --network-extension Enable Network Extensions
114
+ --nfc-tag-reading Enable NFC Tag Reading
115
+ --personal-vpn Enable Personal VPN
116
+ --passbook Enable Passbook (deprecated)
113
117
  --push-notification Enable Push notification (only enables the service, does not configure certificates)
114
118
  --sirikit Enable SiriKit
115
- --vpn-conf Enable VPN Configuration
119
+ --vpn-conf Enable VPN Configuration (deprecated)
120
+ --wallet Enable Wallet
121
+ --wireless-conf Enable Wireless Accessory Configuration
116
122
  ```
117
123
 
118
124
  ```no-highlight
@@ -127,14 +133,20 @@ fastlane produce disable_services --help
127
133
  --game-center Disable Game Center
128
134
  --healthkit Disable HealthKit
129
135
  --homekit Disable HomeKit
130
- --wireless-conf Disable Wireless Accessory Configuration
136
+ --hotspot Disable Hotspot
131
137
  --icloud Disable iCloud
132
138
  --in-app-purchase Disable In-App Purchase
133
139
  --inter-app-audio Disable Inter-App-Audio
134
- --passbook Disable Passbook
140
+ --multipath Disable Multipath
141
+ --network-extension Disable Network Extensions
142
+ --nfc-tag-reading Disable NFC Tag Reading
143
+ --personal-vpn Disable Personal VPN
144
+ --passbook Disable Passbook (deprecated)
135
145
  --push-notification Disable Push notifications
136
146
  --sirikit Disable SiriKit
137
- --vpn-conf Disable VPN Configuration
147
+ --vpn-conf Disable VPN Configuration (deprecated)
148
+ --wallet Disable Wallet
149
+ --wireless-conf Disable Wireless Accessory Configuration
138
150
  ```
139
151
 
140
152
  ## Creating Apple Pay merchants and associating them with an App ID
@@ -197,18 +209,21 @@ lane :release do
197
209
  game_center: "on", # Valid values: "on", "off"
198
210
  health_kit: "on", # Valid values: "on", "off"
199
211
  home_kit: "on", # Valid values: "on", "off"
200
- wireless_accessory: "on", # Valid values: "on", "off"
212
+ hotspot: "on", # Valid values: "on", "off"
201
213
  icloud: "cloudkit", # Valid values: "legacy", "cloudkit"
202
214
  in_app_purchase: "on", # Valid values: "on", "off"
203
215
  inter_app_audio: "on", # Valid values: "on", "off"
204
216
  passbook: "on", # Valid values: "on", "off"
205
- push_notification: "on", # Valid values: "on", "off"
206
- siri_kit: "on", # Valid values: "on", "off"
207
- vpn_configuration: "on", # Valid values: "on", "off"
208
- network_extension: "on", # Valid values: "on", "off"
209
- hotspot: "on", # Valid values: "on", "off"
210
217
  multipath: "on", # Valid values: "on", "off"
218
+ network_extensions: "on", # Valid values: "on", "off"
211
219
  nfc_tag_reading: "on", # Valid values: "on", "off"
220
+ personal_vpn: "on", # Valid values: "on", "off"
221
+ passbook: "on", # Valid values: "on", "off" (deprecated)
222
+ push_notification: "on", # Valid values: "on", "off"
223
+ siri_kit: "on", # Valid values: "on", "off"
224
+ vpn_configuration: "on", # Valid values: "on", "off" (deprecated)
225
+ wallet: "on", # Valid values: "on", "off"
226
+ wireless_accessory: "on", # Valid values: "on", "off"
212
227
  }
213
228
  )
214
229
 
@@ -250,7 +250,7 @@ Check out [_snapshot_](https://docs.fastlane.tools/actions/snapshot/) to automat
250
250
 
251
251
  ## Upload screenshots
252
252
 
253
- Use [deliver](https://docs.fastlane.tools/actions/deliver/) to upload iOS screenshots to iTunes Connect, or [supply](https://docs.fastlane.tools/actions/supply/) to upload Android screenshots to Play Store completely automatically 🚀
253
+ Use [_deliver_](https://docs.fastlane.tools/actions/deliver/) to upload iOS screenshots to iTunes Connect, or [_supply_](https://docs.fastlane.tools/actions/supply/) to upload Android screenshots to Play Store completely automatically 🚀
254
254
 
255
255
  ## Alternative location to store device_frames
256
256
 
@@ -38,7 +38,10 @@ module Fastlane
38
38
  unless target_name
39
39
 
40
40
  # Gets non-test targets
41
- non_test_targets = targets.reject(&:test_target_type?)
41
+ non_test_targets = targets.reject do |t|
42
+ # Not all targets respond to `test_target_type?`
43
+ t.respond_to?(:test_target_type?) && t.test_target_type?
44
+ end
42
45
 
43
46
  # Returns if only one non-test target
44
47
  if non_test_targets.count == 1
@@ -3,10 +3,11 @@ require 'credentials_manager'
3
3
  module Fastlane
4
4
  module Actions
5
5
  class RegisterDevicesAction < Action
6
- UDID_REGEXP = /^\h{40}$/
6
+ UDID_REGEXP_IOS = /^\h{40}$/
7
+ UDID_REGEXP_MAC = /^[\h\-]{36}$/
7
8
 
8
9
  def self.is_supported?(platform)
9
- platform == :ios
10
+ [:ios, :mac].include?(platform)
10
11
  end
11
12
 
12
13
  def self.run(params)
@@ -15,14 +16,21 @@ module Fastlane
15
16
  devices = params[:devices]
16
17
  devices_file = params[:devices_file]
17
18
 
19
+ mac = params[:platform] == "mac"
20
+ udid_regexp = mac ? UDID_REGEXP_MAC : UDID_REGEXP_IOS
21
+
18
22
  credentials = CredentialsManager::AccountManager.new(user: params[:username])
19
23
  Spaceship.login(credentials.user, credentials.password)
20
24
  Spaceship.select_team
21
25
 
26
+ UI.message("Fetching list of currently registered devices...")
27
+ existing_devices = Spaceship::Device.all(mac: mac)
28
+
22
29
  if devices
23
30
  device_objs = devices.map do |k, v|
24
- UI.user_error!("Passed invalid UDID: #{v} for device: #{k}") unless UDID_REGEXP =~ v
25
- Spaceship::Device.create!(name: k, udid: v)
31
+ UI.user_error!("Passed invalid UDID: #{v} for device: #{k}") unless udid_regexp =~ v
32
+ next if existing_devices.map(&:udid).include?(v)
33
+ Spaceship::Device.create!(name: k, udid: v, mac: mac)
26
34
  end
27
35
  elsif devices_file
28
36
  require 'csv'
@@ -30,16 +38,13 @@ module Fastlane
30
38
  devices_file = CSV.read(File.expand_path(File.join(devices_file)), col_sep: "\t")
31
39
  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']
32
40
 
33
- UI.message("Fetching list of currently registered devices...")
34
- existing_devices = Spaceship::Device.all
35
-
36
41
  device_objs = devices_file.drop(1).map do |device|
37
42
  next if existing_devices.map(&:udid).include?(device[0])
38
43
 
39
44
  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
40
- UI.user_error!("Passed invalid UDID: #{device[0]} for device: #{device[1]}") unless UDID_REGEXP =~ device[0]
45
+ UI.user_error!("Passed invalid UDID: #{device[0]} for device: #{device[1]}") unless udid_regexp =~ device[0]
41
46
 
42
- Spaceship::Device.create!(name: device[1], udid: device[0])
47
+ Spaceship::Device.create!(name: device[1], udid: device[0], mac: mac)
43
48
  end
44
49
  else
45
50
  UI.user_error!("You must pass either a valid `devices` or `devices_file`. Please check the readme.")
@@ -56,6 +61,7 @@ module Fastlane
56
61
  def self.available_options
57
62
  user = CredentialsManager::AppfileConfig.try_fetch_value(:apple_dev_portal_id)
58
63
  user ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id)
64
+ platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME].to_s
59
65
 
60
66
  [
61
67
  FastlaneCore::ConfigItem.new(key: :devices,
@@ -95,13 +101,21 @@ module Fastlane
95
101
  env_name: "DELIVER_USER",
96
102
  description: "Optional: Your Apple ID",
97
103
  default_value: user,
98
- default_value_dynamic: true)
104
+ default_value_dynamic: true),
105
+ FastlaneCore::ConfigItem.new(key: :platform,
106
+ env_name: "REGISTER_DEVICES_PLATFORM",
107
+ description: "The platform to use (optional)",
108
+ optional: true,
109
+ default_value: platform.empty? ? "ios" : platform,
110
+ verify_block: proc do |value|
111
+ UI.user_error!("The platform can only be ios or mac") unless %('ios', 'mac').include?(value)
112
+ end)
99
113
  ]
100
114
  end
101
115
 
102
116
  def self.details
103
117
  [
104
- "This will register iOS devices with the Developer Portal so that you can include them in your provisioning profiles.",
118
+ "This will register iOS/Mac devices with the Developer Portal so that you can include them in your provisioning profiles.",
105
119
  "This is an optimistic action, in that it will only ever add new devices to the member center, and never remove devices. If a device which has already been registered within the member center is not passed to this action, it will be left alone in the member center and continue to work.",
106
120
  "The action will connect to the Apple Developer Portal using the username you specified in your `Appfile` with `apple_id`, but you can override it using the `username` option, or by setting the env variable `ENV['DELIVER_USER']`."
107
121
  ].join("\n")
@@ -126,7 +140,14 @@ module Fastlane
126
140
  devices_file: "./devices.txt", # You must pass in either `devices_file` or `devices`.
127
141
  team_id: "XXXXXXXXXX", # Optional, if you"re a member of multiple teams, then you need to pass the team ID here.
128
142
  username: "luka@goonbee.com" # Optional, lets you override the Apple Member Center username.
129
- )'
143
+ )',
144
+ 'register_devices(
145
+ devices: {
146
+ "Luka MacBook" => "12345678-1234-1234-1234-123456789012",
147
+ "Felix MacBook Pro" => "ABCDEFGH-ABCD-ABCD-ABCD-ABCDEFGHIJKL"
148
+ },
149
+ platform: "mac"
150
+ ) # Register devices for Mac'
130
151
  ]
131
152
  end
132
153
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.89.0.beta.20180402050042'.freeze
2
+ VERSION = '2.89.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.88.0
21
+ // Generated with fastlane 2.89.0
@@ -2487,12 +2487,14 @@ func registerDevices(devices: [String : Any]? = nil,
2487
2487
  devicesFile: String? = nil,
2488
2488
  teamId: String? = nil,
2489
2489
  teamName: String? = nil,
2490
- username: String) {
2490
+ username: String,
2491
+ platform: String = "ios") {
2491
2492
  let command = RubyCommand(commandID: "", methodName: "register_devices", className: nil, args: [RubyCommand.Argument(name: "devices", value: devices),
2492
2493
  RubyCommand.Argument(name: "devices_file", value: devicesFile),
2493
2494
  RubyCommand.Argument(name: "team_id", value: teamId),
2494
2495
  RubyCommand.Argument(name: "team_name", value: teamName),
2495
- RubyCommand.Argument(name: "username", value: username)])
2496
+ RubyCommand.Argument(name: "username", value: username),
2497
+ RubyCommand.Argument(name: "platform", value: platform)])
2496
2498
  _ = runner.executeCommand(command)
2497
2499
  }
2498
2500
  func resetGitRepo(files: String? = nil,
@@ -3314,6 +3316,7 @@ func teamName() {
3314
3316
  func testfairy(apiKey: String,
3315
3317
  ipa: String,
3316
3318
  symbolsFile: String? = nil,
3319
+ uploadUrl: String = "https://upload.testfairy.com",
3317
3320
  testersGroups: [String] = [],
3318
3321
  metrics: [String] = [],
3319
3322
  comment: String = "No comment provided",
@@ -3323,6 +3326,7 @@ func testfairy(apiKey: String,
3323
3326
  let command = RubyCommand(commandID: "", methodName: "testfairy", className: nil, args: [RubyCommand.Argument(name: "api_key", value: apiKey),
3324
3327
  RubyCommand.Argument(name: "ipa", value: ipa),
3325
3328
  RubyCommand.Argument(name: "symbols_file", value: symbolsFile),
3329
+ RubyCommand.Argument(name: "upload_url", value: uploadUrl),
3326
3330
  RubyCommand.Argument(name: "testers_groups", value: testersGroups),
3327
3331
  RubyCommand.Argument(name: "metrics", value: metrics),
3328
3332
  RubyCommand.Argument(name: "comment", value: comment),
@@ -3917,4 +3921,4 @@ let screengrabfile: Screengrabfile = Screengrabfile()
3917
3921
  let snapshotfile: Snapshotfile = Snapshotfile()
3918
3922
  // Please don't remove the lines below
3919
3923
  // They are used to detect outdated files
3920
- // FastlaneRunnerAPIVersion [0.9.11]
3924
+ // FastlaneRunnerAPIVersion [0.9.12]
@@ -18,4 +18,4 @@ class Gymfile: GymfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.88.0
21
+ // Generated with fastlane 2.89.0
@@ -18,4 +18,4 @@ class Matchfile: MatchfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.88.0
21
+ // Generated with fastlane 2.89.0
@@ -18,4 +18,4 @@ class Precheckfile: PrecheckfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.88.0
21
+ // Generated with fastlane 2.89.0
@@ -18,4 +18,4 @@ class Scanfile: ScanfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.88.0
21
+ // Generated with fastlane 2.89.0
@@ -18,4 +18,4 @@ class Screengrabfile: ScreengrabfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.88.0
21
+ // Generated with fastlane 2.89.0
@@ -18,4 +18,4 @@ class Snapshotfile: SnapshotfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.88.0
21
+ // Generated with fastlane 2.89.0
@@ -52,14 +52,20 @@ module Produce
52
52
  c.option('--game-center', 'Enable Game Center')
53
53
  c.option('--healthkit', 'Enable HealthKit')
54
54
  c.option('--homekit', 'Enable HomeKit')
55
- c.option('--wireless-conf', 'Enable Wireless Accessory Configuration')
55
+ c.option('--hotspot', 'Enable Hotspot')
56
56
  c.option('--icloud STRING', String, 'Enable iCloud, suitable values are "legacy" and "cloudkit"')
57
57
  c.option('--in-app-purchase', 'Enable In-App Purchase')
58
58
  c.option('--inter-app-audio', 'Enable Inter-App-Audio')
59
- c.option('--passbook', 'Enable Passbook')
59
+ c.option('--multipath', 'Enable Multipath')
60
+ c.option('--network-extension', 'Enable Network Extensions')
61
+ c.option('--nfc-tag-reading', 'Enable NFC Tag Reading')
62
+ c.option('--personal-vpn', 'Enable Personal VPN')
63
+ c.option('--passbook', 'Enable Passbook (deprecated)')
60
64
  c.option('--push-notification', 'Enable Push notification (only enables the service, does not configure certificates)')
61
65
  c.option('--sirikit', 'Enable SiriKit')
62
- c.option('--vpn-conf', 'Enable VPN Configuration')
66
+ c.option('--vpn-conf', 'Enable VPN Configuration (deprecated)')
67
+ c.option('--wallet', 'Enable Wallet')
68
+ c.option('--wireless-conf', 'Enable Wireless Accessory Configuration')
63
69
 
64
70
  FastlaneCore::CommanderGenerator.new.generate(Produce::Options.available_options, command: c)
65
71
 
@@ -85,14 +91,20 @@ module Produce
85
91
  c.option('--game-center', 'Disable Game Center')
86
92
  c.option('--healthkit', 'Disable HealthKit')
87
93
  c.option('--homekit', 'Disable HomeKit')
88
- c.option('--wireless-conf', 'Disable Wireless Accessory Configuration')
94
+ c.option('--hotspot', 'Disable Hotspot')
89
95
  c.option('--icloud', 'Disable iCloud')
90
96
  c.option('--in-app-purchase', 'Disable In-App Purchase')
91
97
  c.option('--inter-app-audio', 'Disable Inter-App-Audio')
92
- c.option('--passbook', 'Disable Passbook')
98
+ c.option('--multipath', 'Disable Multipath')
99
+ c.option('--network-extension', 'Disable Network Extensions')
100
+ c.option('--nfc-tag-reading', 'Disable NFC Tag Reading')
101
+ c.option('--personal-vpn', 'Disable Personal VPN')
102
+ c.option('--passbook', 'Disable Passbook (deprecated)')
93
103
  c.option('--push-notification', 'Disable Push notifications')
94
104
  c.option('--sirikit', 'Disable SiriKit')
95
- c.option('--vpn-conf', 'Disable VPN Configuration')
105
+ c.option('--vpn-conf', 'Disable VPN Configuration (deprecated)')
106
+ c.option('--wallet', 'Disable Wallet')
107
+ c.option('--wireless-conf', 'Disable Wireless Accessory Configuration')
96
108
 
97
109
  FastlaneCore::CommanderGenerator.new.generate(Produce::Options.available_options, command: c)
98
110
 
@@ -23,18 +23,20 @@ module Produce
23
23
  game_center: [SERVICE_ON, SERVICE_OFF],
24
24
  health_kit: [SERVICE_ON, SERVICE_OFF],
25
25
  home_kit: [SERVICE_ON, SERVICE_OFF],
26
- wireless_accessory: [SERVICE_ON, SERVICE_OFF],
26
+ hotspot: [SERVICE_ON, SERVICE_OFF],
27
27
  icloud: [SERVICE_LEGACY, SERVICE_CLOUDKIT],
28
28
  in_app_purchase: [SERVICE_ON, SERVICE_OFF],
29
29
  inter_app_audio: [SERVICE_ON, SERVICE_OFF],
30
+ multipath: [SERVICE_ON, SERVICE_OFF],
31
+ network_extension: [SERVICE_ON, SERVICE_OFF],
32
+ nfc_tag_reading: [SERVICE_ON, SERVICE_OFF],
33
+ personal_vpn: [SERVICE_ON, SERVICE_OFF],
30
34
  passbook: [SERVICE_ON, SERVICE_OFF],
31
35
  push_notification: [SERVICE_ON, SERVICE_OFF],
32
36
  siri_kit: [SERVICE_ON, SERVICE_OFF],
33
37
  vpn_configuration: [SERVICE_ON, SERVICE_OFF],
34
- network_extension: [SERVICE_ON, SERVICE_OFF],
35
- hotspot: [SERVICE_ON, SERVICE_OFF],
36
- multipath: [SERVICE_ON, SERVICE_OFF],
37
- nfc_tag_reading: [SERVICE_ON, SERVICE_OFF]
38
+ wallet: [SERVICE_ON, SERVICE_OFF],
39
+ wireless_accessory: [SERVICE_ON, SERVICE_OFF]
38
40
  }
39
41
 
40
42
  def run
@@ -98,7 +100,7 @@ module Produce
98
100
  enabled_clean_options[app_service.cloud.on.service_id] = app_service.cloud.on
99
101
  enabled_clean_options[app_service.cloud_kit.xcode5_compatible.service_id] = app_service.cloud_kit.xcode5_compatible
100
102
  when SERVICE_CLOUDKIT
101
- enabled_clean_options[app_service.i_cloud.on.service_id] = app_service.i_cloud.on
103
+ enabled_clean_options[app_service.cloud.on.service_id] = app_service.cloud.on
102
104
  enabled_clean_options[app_service.cloud_kit.cloud_kit.service_id] = app_service.cloud_kit.cloud_kit
103
105
  end
104
106
  else
@@ -37,8 +37,9 @@ module Produce
37
37
 
38
38
  def valid_services_for(options)
39
39
  allowed_keys = [:app_group, :apple_pay, :associated_domains, :data_protection, :game_center, :healthkit, :homekit,
40
- :wireless_conf, :icloud, :in_app_purchase, :inter_app_audio, :passbook, :push_notification, :sirikit,
41
- :vpn_conf, :network_extension, :hotspot, :multipath, :nfc_tag_reading]
40
+ :hotspot, :icloud, :in_app_purchase, :inter_app_audio, :multipath, :network_extension,
41
+ :nfc_tag_reading, :personal_vpn, :passbook, :push_notification, :sirikit, :vpn_conf,
42
+ :wallet, :wireless_conf]
42
43
  options.__hash__.select { |key, value| allowed_keys.include?(key) }
43
44
  end
44
45
 
@@ -125,6 +126,16 @@ module Produce
125
126
  end
126
127
  end
127
128
 
129
+ if options.wallet
130
+ UI.message("\tWallet")
131
+
132
+ if on
133
+ app.update_service(Spaceship.app_service.wallet.on)
134
+ else
135
+ app.update_service(Spaceship.app_service.wallet.off)
136
+ end
137
+ end
138
+
128
139
  if options.wireless_conf
129
140
  UI.message("\tWireless Accessory Configuration")
130
141
 
@@ -141,16 +152,16 @@ module Produce
141
152
  if on
142
153
  case options.icloud
143
154
  when "legacy"
144
- app.update_service(Spaceship.app_service.icloud.on)
155
+ app.update_service(Spaceship.app_service.cloud.on)
145
156
  app.update_service(Spaceship.app_service.cloud_kit.xcode5_compatible)
146
157
  when "cloudkit"
147
- app.update_service(Spaceship.app_service.icloud.on)
158
+ app.update_service(Spaceship.app_service.cloud.on)
148
159
  app.update_service(Spaceship.app_service.cloud_kit.cloud_kit)
149
160
  else
150
161
  UI.user_error!("Unknown service '#{options.icloud}'. Valid values: 'legacy', 'cloudkit'")
151
162
  end
152
163
  else
153
- app.update_service(Spaceship.app_service.icloud.off)
164
+ app.update_service(Spaceship.app_service.cloud.off)
154
165
  end
155
166
  end
156
167
 
@@ -174,6 +185,17 @@ module Produce
174
185
  end
175
186
  end
176
187
 
188
+ if options.personal_vpn
189
+ UI.message("\tPersonal VPN")
190
+
191
+ if on
192
+ app.update_service(Spaceship.app_service.personal_vpn.on)
193
+ else
194
+ app.update_service(Spaceship.app_service.personal_vpn.off)
195
+ end
196
+ end
197
+
198
+ # deprecated
177
199
  if options.passbook
178
200
  UI.message("\tPassbook")
179
201
 
@@ -204,6 +226,7 @@ module Produce
204
226
  end
205
227
  end
206
228
 
229
+ # deprecated
207
230
  if options.vpn_conf
208
231
  UI.message("\tVPN Configuration")
209
232
 
@@ -80,22 +80,14 @@ module Snapshot
80
80
 
81
81
  private
82
82
 
83
- # Creates an alias for require to prevent `rubocop/require_tools`
84
- # from failing. This eventually change it when `simctl` doesn't
85
- # execute shell commands at the top-level anymore
86
- #
87
- # Issue: https://github.com/fastlane/fastlane/issues/12071
88
- alias silence_the_horrible_require_checker require
89
-
90
83
  def get_device_type_with_simctl(device_names)
91
84
  return device_names if Helper.test?
92
85
 
93
- silence_the_horrible_require_checker("simctl")
86
+ require("simctl")
94
87
 
95
88
  # Gets actual simctl device type from device name
96
89
  return device_names.map do |device_name|
97
- # Disable checking due to alias-ed require above
98
- device = SimCtl.device(name: device_name) # rubocop:disable Require/MissingRequireStatement
90
+ device = SimCtl.device(name: device_name)
99
91
  if device
100
92
  device.devicetype.name
101
93
  end
@@ -47,19 +47,21 @@ module Spaceship
47
47
  GameCenter = AppService.new_service("gameCenter")
48
48
  HealthKit = AppService.new_service("HK421J6T7P")
49
49
  HomeKit = AppService.new_service("homeKit")
50
- WirelessAccessory = AppService.new_service("WC421J6T7P")
50
+ Hotspot = AppService.new_service("HSC639VEI8")
51
51
  Cloud = AppService.new_service("iCloud")
52
52
  CloudKit = AppService.new_service("cloudKitVersion", values: { xcode5_compatible: 1, cloud_kit: 2 })
53
53
  InAppPurchase = AppService.new_service("inAppPurchase")
54
54
  InterAppAudio = AppService.new_service("IAD53UNK2F")
55
+ Multipath = AppService.new_service("MP49FN762P")
56
+ NetworkExtension = AppService.new_service("NWEXT04537")
57
+ NFCTagReading = AppService.new_service("NFCTRMAY17")
58
+ PersonalVPN = AppService.new_service("V66P55NK2I")
55
59
  Passbook = AppService.new_service("pass")
56
60
  PushNotification = AppService.new_service("push")
57
61
  SiriKit = AppService.new_service("SI015DKUHP")
58
62
  VPNConfiguration = AppService.new_service("V66P55NK2I")
59
- NetworkExtension = AppService.new_service("NWEXT04537")
60
- Hotspot = AppService.new_service("HSC639VEI8")
61
- Multipath = AppService.new_service("MP49FN762P")
62
- NFCTagReading = AppService.new_service("NFCTRMAY17")
63
+ Wallet = AppService.new_service("passbook")
64
+ WirelessAccessory = AppService.new_service("WC421J6T7P")
63
65
 
64
66
  constants.each do |c|
65
67
  name = c.to_s
@@ -115,6 +115,13 @@ module Spaceship
115
115
  handle_response(response)
116
116
  end
117
117
 
118
+ def delete_group_for_app(app_id: nil, group_id: nil)
119
+ assert_required_params(__method__, binding)
120
+ url = "providers/#{team_id}/apps/#{app_id}/groups/#{group_id}"
121
+ response = request(:delete, url)
122
+ handle_response(response)
123
+ end
124
+
118
125
  def add_group_to_build(app_id: nil, group_id: nil, build_id: nil)
119
126
  assert_required_params(__method__, binding)
120
127
 
@@ -30,6 +30,11 @@ module Spaceship::TestFlight
30
30
  self.new(data)
31
31
  end
32
32
 
33
+ def self.delete!(app_id: nil, group_name: nil)
34
+ group = self.find(app_id: app_id, group_name: group_name)
35
+ client.delete_group_for_app(app_id: app_id, group_id: group.id)
36
+ end
37
+
33
38
  def self.all(app_id: nil)
34
39
  groups = client.get_groups(app_id: app_id)
35
40
  groups.map { |g| self.new(g) }
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.89.0.beta.20180402050042
4
+ version: 2.89.0
5
5
  platform: ruby
6
6
  authors:
7
- - Kohki Miki
8
- - Helmut Januschka
9
- - Joshua Liebowitz
10
- - Jan Piotrowski
7
+ - Manu Wallner
11
8
  - Jorge Revuelta H
12
- - Maksym Grebenets
13
- - Danielle Tomlinson
14
9
  - Olivier Halligon
15
- - Fumiya Nakamura
16
- - Felix Krause
17
- - Manu Wallner
18
- - Andrew McBurney
19
10
  - Matthew Ellis
20
- - Jimmy Dee
21
- - Iulian Onofrei
22
- - Stefan Natchev
23
11
  - Jérôme Lacoste
12
+ - Danielle Tomlinson
13
+ - Helmut Januschka
14
+ - Felix Krause
15
+ - Joshua Liebowitz
24
16
  - Josh Holtz
25
- - Luka Mirosevic
17
+ - Iulian Onofrei
18
+ - Jan Piotrowski
26
19
  - Aaron Brager
20
+ - Jimmy Dee
21
+ - Luka Mirosevic
22
+ - Kohki Miki
23
+ - Stefan Natchev
24
+ - Maksym Grebenets
25
+ - Fumiya Nakamura
26
+ - Andrew McBurney
27
27
  autorequire:
28
28
  bindir: bin
29
29
  cert_chain: []
30
- date: 2018-04-02 00:00:00.000000000 Z
30
+ date: 2018-04-03 00:00:00.000000000 Z
31
31
  dependencies:
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: slack-notifier
@@ -597,14 +597,14 @@ dependencies:
597
597
  requirements:
598
598
  - - "~>"
599
599
  - !ruby/object:Gem::Version
600
- version: '1.6'
600
+ version: 1.6.3
601
601
  type: :runtime
602
602
  prerelease: false
603
603
  version_requirements: !ruby/object:Gem::Requirement
604
604
  requirements:
605
605
  - - "~>"
606
606
  - !ruby/object:Gem::Version
607
- version: '1.6'
607
+ version: 1.6.3
608
608
  - !ruby/object:Gem::Dependency
609
609
  name: google-api-client
610
610
  requirement: !ruby/object:Gem::Requirement
@@ -1622,24 +1622,24 @@ metadata:
1622
1622
  post_install_message:
1623
1623
  rdoc_options: []
1624
1624
  require_paths:
1625
- - match/lib
1626
- - fastlane/lib
1625
+ - credentials_manager/lib
1627
1626
  - pem/lib
1627
+ - snapshot/lib
1628
+ - frameit/lib
1629
+ - match/lib
1628
1630
  - fastlane_core/lib
1629
- - pilot/lib
1631
+ - deliver/lib
1632
+ - scan/lib
1633
+ - supply/lib
1630
1634
  - cert/lib
1631
- - precheck/lib
1632
- - snapshot/lib
1635
+ - fastlane/lib
1633
1636
  - spaceship/lib
1634
- - credentials_manager/lib
1635
- - sigh/lib
1636
- - deliver/lib
1637
+ - pilot/lib
1637
1638
  - gym/lib
1639
+ - precheck/lib
1638
1640
  - screengrab/lib
1641
+ - sigh/lib
1639
1642
  - produce/lib
1640
- - scan/lib
1641
- - supply/lib
1642
- - frameit/lib
1643
1643
  required_ruby_version: !ruby/object:Gem::Requirement
1644
1644
  requirements:
1645
1645
  - - ">="
@@ -1647,12 +1647,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
1647
1647
  version: 2.0.0
1648
1648
  required_rubygems_version: !ruby/object:Gem::Requirement
1649
1649
  requirements:
1650
- - - ">"
1650
+ - - ">="
1651
1651
  - !ruby/object:Gem::Version
1652
- version: 1.3.1
1652
+ version: '0'
1653
1653
  requirements: []
1654
1654
  rubyforge_project:
1655
- rubygems_version: 2.5.2.1
1655
+ rubygems_version: 2.5.2.2
1656
1656
  signing_key:
1657
1657
  specification_version: 4
1658
1658
  summary: The easiest way to automate beta deployments and releases for your iOS and