fastlane 2.67.0.beta.20171127010003 → 2.67.0.beta.20171128010003

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: f6b5ef73d577dc43879a34f7008c1e7d9dbeb7f4
4
- data.tar.gz: 5a49e328f6b77e1325491aff07acc0341f888db3
3
+ metadata.gz: d92b3d6ba645ac912f3cdca875dae7ef62e56253
4
+ data.tar.gz: 82cbe2ce21f20e2b1e293ca10bcf4a225e799e20
5
5
  SHA512:
6
- metadata.gz: a83c7035d57622f1f0ba6580641da80b7090399c6f8665a0d2e9810e706963ce9cbdb10b753dd925cccd004a9d77112bcd793fb71bf4feb477676e57eebf8de4
7
- data.tar.gz: 18a62af3c2abb50605ef5d6f092a4353ccbd64e0ce53220db75f378d81294efba2a7276ad8e89b287bb489625c0e835da94feb56a5021346d36a9a0069fa247d
6
+ metadata.gz: c8c24e1621c5a651b25c426793998bf24061af17343c8ac0483c6ed86a9ff1a33aca439143aef136617fae07f16846116a4e0a5cbef87ebea4347a99a248c6d0
7
+ data.tar.gz: c5653893d9d9e5fd495990681ade68aa559b84c6d6b820637b11f1eb47fe5a3f335df156e60562acf450fd75b470edf6cc7e08ef8d7888070df576dbd28dfd98
@@ -44,7 +44,7 @@ module Deliver
44
44
  }
45
45
 
46
46
  # Localized app details values, that are editable in live state
47
- LOCALISED_LIVE_VALUES = [:description, :release_notes, :support_url, :marketing_url]
47
+ LOCALISED_LIVE_VALUES = [:description, :release_notes, :support_url, :marketing_url, :promotional_text]
48
48
 
49
49
  # Non localized app details values, that are editable in live state
50
50
  NON_LOCALISED_LIVE_VALUES = [:privacy_url]
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="/img/actions/frameit.png" height="110">
2
+ <img src="/img/actions/frameit.png" width="250">
3
3
  </p>
4
4
 
5
5
  ###### Quickly put your screenshots into the right device frames
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="/img/actions/match.png" height="110">
2
+ <img src="/img/actions/match.png" width="250">
3
3
  </p>
4
4
 
5
5
  ###### Easily sync your certificates and profiles across your team using git
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="/img/actions/pem.png" height="110">
2
+ <img src="/img/actions/pem.png" width="250">
3
3
  </p>
4
4
 
5
5
  ###### Automatically generate and renew your push notification profiles
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="/img/actions/precheck.png" height="110">
2
+ <img src="/img/actions/precheck.png" width="250">
3
3
  </p>
4
4
 
5
5
  Precheck
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="/img/actions/produce.png" height="110">
2
+ <img src="/img/actions/produce.png" width="250">
3
3
  </p>
4
4
 
5
5
  ###### Create new iOS apps on iTunes Connect and Dev Portal using your command line
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="/img/actions/scan.png" height="110">
2
+ <img src="/img/actions/scan.png" width="250">
3
3
  </p>
4
4
 
5
5
  ###### The easiest way to run tests of your iOS and Mac app
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="/img/actions/screengrab.png" height="110">
2
+ <img src="/img/actions/screengrab.png" width="250">
3
3
  </p>
4
4
 
5
5
  ###### Automated localized screenshots of your Android app on every device
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="/img/actions/sigh.png" height="110">
2
+ <img src="/img/actions/sigh.png" width="250">
3
3
  </p>
4
4
 
5
5
  ###### Because you would rather spend your time building stuff than fighting provisioning
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="/img/actions/snapshot.png" height="110">
2
+ <img src="/img/actions/snapshot.png" width="250">
3
3
  </p>
4
4
 
5
5
  ###### Automate taking localized screenshots of your iOS and tvOS apps on every device
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="/img/actions/supply.png" height="110">
2
+ <img src="/img/actions/supply.png" width="250">
3
3
  </p>
4
4
 
5
5
  ###### Command line tool for updating Android apps and their metadata on the Google Play Store
@@ -57,6 +57,8 @@ module Fastlane
57
57
  end
58
58
 
59
59
  begin
60
+ # need to call reload here or dsym_url is nil
61
+ build.reload
60
62
  download_url = build.dsym_url
61
63
  rescue Spaceship::TunesClient::ITunesConnectError => ex
62
64
  UI.error("Error accessing dSYM file for build\n\n#{build}\n\nException: #{ex}")
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.67.0.beta.20171127010003'.freeze
2
+ VERSION = '2.67.0.beta.20171128010003'.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
@@ -19,6 +19,18 @@ module FastlaneCore
19
19
  output = stdout.read
20
20
  end
21
21
 
22
+ runtime_info = ''
23
+ Open3.popen3('xcrun simctl list runtimes') do |stdin, stdout, stderr, wait_thr|
24
+ # This regex outputs the version info in the format "<platform> <version><exact version>"
25
+ runtime_info = stdout.read.lines.map { |v| v.sub(/(\w+ \S+)\s*\((\S+)\s[\S\s]*/, "\\1 \\2") }.drop(1)
26
+ end
27
+ exact_versions = Hash.new({})
28
+ runtime_info.each do |r|
29
+ platform, general, exact = r.split
30
+ exact_versions[platform] = {} unless exact_versions.include?(platform)
31
+ exact_versions[platform][general] = exact
32
+ end
33
+
22
34
  unless output.include?("== Devices ==")
23
35
  UI.error("xcrun simctl CLI broken, run `xcrun simctl list devices` and make sure it works")
24
36
  UI.user_error!("xcrun simctl not working.")
@@ -40,7 +52,7 @@ module FastlaneCore
40
52
  name = matches.join(' ')
41
53
 
42
54
  if matches.count && (os_type == requested_os_type || requested_os_type == "")
43
- @devices << Device.new(name: name, os_type: os_type, os_version: os_version, udid: udid, state: state, is_simulator: true)
55
+ @devices << Device.new(name: name, os_type: os_type, os_version: (exact_versions[os_type][os_version] || os_version), udid: udid, state: state, is_simulator: true)
44
56
  end
45
57
  end
46
58
  end
@@ -109,6 +121,13 @@ module FastlaneCore
109
121
  end
110
122
  end
111
123
 
124
+ def latest_simulator_version_for_device(device)
125
+ simulators.select { |s| s.name == device }
126
+ .sort_by { |s| Gem::Version.create(s.os_version) }
127
+ .last
128
+ .os_version
129
+ end
130
+
112
131
  # The code below works from Xcode 7 on
113
132
  # def all
114
133
  # UI.verbose("Fetching available devices")
@@ -31,7 +31,10 @@ module Snapshot
31
31
  # Break up the array of devices into chunks that can
32
32
  # be run simultaneously.
33
33
  if launcher_config.concurrent_simulators?
34
- device_batches = launcher_config.devices.each_slice(default_number_of_simultaneous_simulators).to_a
34
+ all_devices = launcher_config.devices
35
+ # We have to break up the concurrent simulators by device version too, otherwise there is an error (see #10969)
36
+ by_simulator_version = all_devices.group_by { |d| FastlaneCore::DeviceManager.latest_simulator_version_for_device(d) }.values
37
+ device_batches = by_simulator_version.flat_map { |a| a.each_slice(default_number_of_simultaneous_simulators).to_a }
35
38
  else
36
39
  # Put each device in it's own array to run tests one at a time
37
40
  device_batches = launcher_config.devices.map { |d| [d] }
@@ -714,7 +714,7 @@ module Spaceship
714
714
 
715
715
  # This is a cache of entity type (App, AppGroup, Certificate, Device) to csrf_tokens
716
716
  def csrf_cache
717
- @csrf_cache || {}
717
+ @csrf_cache ||= {}
718
718
  end
719
719
 
720
720
  # Ensures that there are csrf tokens for the appropriate entity type
@@ -145,27 +145,26 @@ module Spaceship::TestFlight
145
145
  def testers_for_app(app_id: nil)
146
146
  assert_required_params(__method__, binding)
147
147
  page_size = 40 # that's enforced by the iTC servers
148
- offset = nil
149
148
  resulting_array = []
150
149
  initial_url = "providers/#{team_id}/apps/#{app_id}/testers?limit=#{page_size}&sort=email&order=asc"
151
150
  response = request(:get, initial_url)
151
+ link_from_response = proc do |r|
152
+ # I weep for Swift nil chaining
153
+ (l = r.headers['link']) && (m = l.match(/<(.*)>/)) && m.captures.first
154
+ end
155
+ next_link = link_from_response.call(response)
152
156
  result = Array(handle_response(response))
153
157
  resulting_array += result
154
158
  return resulting_array if result.count == 0
155
- offset = result.last['id']
156
159
 
157
- loop do
158
- url = "providers/#{team_id}/apps/#{app_id}/testers?offset=added,#{offset}&limit=#{page_size}&sort=status,default&order=asc"
159
- url += "&offset=#{offset}" if offset
160
- response = request(:get, url)
160
+ until next_link.nil?
161
+ response = request(:get, next_link)
161
162
  result = Array(handle_response(response))
163
+ next_link = link_from_response.call(response)
162
164
 
163
165
  break if result.count == 0
164
- # If there are no more, the last response seems to be repeated
165
- break if offset == result.last['id']
166
166
 
167
167
  resulting_array += result
168
- offset = result.last['id']
169
168
  end
170
169
  return resulting_array.uniq
171
170
  end
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.67.0.beta.20171127010003
4
+ version: 2.67.0.beta.20171128010003
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2017-11-27 00:00:00.000000000 Z
18
+ date: 2017-11-28 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: slack-notifier