fastlane 2.103.1 → 2.104.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +80 -80
- data/deliver/lib/deliver/submit_for_review.rb +17 -3
- data/fastlane/lib/assets/Actions.md.erb +4 -3
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +1 -14
- data/fastlane/lib/fastlane/actions/run_tests.rb +9 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +5 -1
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +3 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane_core/lib/fastlane_core/.command_executor.rb.swp +0 -0
- data/fastlane_core/lib/fastlane_core/command_executor.rb +3 -0
- data/fastlane_core/lib/fastlane_core/fastlane_pty.rb +21 -0
- data/fastlane_core/lib/fastlane_core/helper.rb +9 -3
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +2 -0
- data/scan/lib/scan/detect_values.rb +22 -16
- data/scan/lib/scan/options.rb +5 -0
- data/scan/lib/scan/runner.rb +1 -1
- metadata +18 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea532950502bd5448c144045cec72c59174c2935
|
4
|
+
data.tar.gz: f0005241440286c16af2d5ca3ce6895a0c0bafbe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0818efee4e51ddc9c23988da1448596aff4481650ecc381d61536be9d3d947694b05ff2c4450aa49f65e7c442a83731ac1fad55da3060f8a180764c7b5922f4e'
|
7
|
+
data.tar.gz: 1e196366b4e2579baa59c17c55307b02600b76d942562a39849c1ee69512ad494d9f844dcde3e11dfade0872a01978f324d526f03c8ac40f7e5433e29c79e9ae
|
data/README.md
CHANGED
@@ -32,131 +32,131 @@ 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='
|
36
|
-
<a href='https://github.com/
|
37
|
-
<img src='https://github.com/
|
35
|
+
<td id='maksym-grebenets'>
|
36
|
+
<a href='https://github.com/mgrebenets'>
|
37
|
+
<img src='https://github.com/mgrebenets.png?size=140'>
|
38
38
|
</a>
|
39
|
-
<h4 align='center'><a href='https://twitter.com/
|
39
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
40
40
|
</td>
|
41
|
-
<td id='
|
42
|
-
<a href='https://github.com/
|
43
|
-
<img src='https://github.com/
|
41
|
+
<td id='matthew-ellis'>
|
42
|
+
<a href='https://github.com/matthewellis'>
|
43
|
+
<img src='https://github.com/matthewellis.png?size=140'>
|
44
44
|
</a>
|
45
|
-
<h4 align='center'><a href='https://twitter.com/
|
45
|
+
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
46
46
|
</td>
|
47
|
-
<td id='
|
48
|
-
<a href='https://github.com/
|
49
|
-
<img src='https://github.com/
|
47
|
+
<td id='jimmy-dee'>
|
48
|
+
<a href='https://github.com/jdee'>
|
49
|
+
<img src='https://github.com/jdee.png?size=140'>
|
50
50
|
</a>
|
51
|
-
<h4 align='center'
|
51
|
+
<h4 align='center'>Jimmy Dee</h4>
|
52
52
|
</td>
|
53
|
-
<td id='
|
54
|
-
<a href='https://github.com/
|
55
|
-
<img src='https://github.com/
|
53
|
+
<td id='josh-holtz'>
|
54
|
+
<a href='https://github.com/joshdholtz'>
|
55
|
+
<img src='https://github.com/joshdholtz.png?size=140'>
|
56
56
|
</a>
|
57
|
-
<h4 align='center'><a href='https://twitter.com/
|
57
|
+
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
58
58
|
</td>
|
59
|
-
<td id='
|
60
|
-
<a href='https://github.com/
|
61
|
-
<img src='https://github.com/
|
59
|
+
<td id='joshua-liebowitz'>
|
60
|
+
<a href='https://github.com/taquitos'>
|
61
|
+
<img src='https://github.com/taquitos.png?size=140'>
|
62
62
|
</a>
|
63
|
-
<h4 align='center'><a href='https://twitter.com/
|
63
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
64
64
|
</td>
|
65
65
|
</tr>
|
66
66
|
<tr>
|
67
|
-
<td id='iulian-onofrei'>
|
68
|
-
<a href='https://github.com/revolter'>
|
69
|
-
<img src='https://github.com/revolter.png?size=140'>
|
70
|
-
</a>
|
71
|
-
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
72
|
-
</td>
|
73
|
-
<td id='andrew-mcburney'>
|
74
|
-
<a href='https://github.com/AndrewMcBurney'>
|
75
|
-
<img src='https://github.com/AndrewMcBurney.png?size=140'>
|
76
|
-
</a>
|
77
|
-
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
78
|
-
</td>
|
79
67
|
<td id='felix-krause'>
|
80
68
|
<a href='https://github.com/KrauseFx'>
|
81
69
|
<img src='https://github.com/KrauseFx.png?size=140'>
|
82
70
|
</a>
|
83
71
|
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
84
72
|
</td>
|
85
|
-
<td id='
|
86
|
-
<a href='https://github.com/
|
87
|
-
<img src='https://github.com/
|
73
|
+
<td id='stefan-natchev'>
|
74
|
+
<a href='https://github.com/snatchev'>
|
75
|
+
<img src='https://github.com/snatchev.png?size=140'>
|
88
76
|
</a>
|
89
|
-
<h4 align='center'>
|
77
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
90
78
|
</td>
|
91
|
-
<td id='
|
92
|
-
<a href='https://github.com/
|
93
|
-
<img src='https://github.com/
|
79
|
+
<td id='helmut-januschka'>
|
80
|
+
<a href='https://github.com/hjanuschka'>
|
81
|
+
<img src='https://github.com/hjanuschka.png?size=140'>
|
94
82
|
</a>
|
95
|
-
<h4 align='center'><a href='https://twitter.com/
|
83
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
84
|
+
</td>
|
85
|
+
<td id='fumiya-nakamura'>
|
86
|
+
<a href='https://github.com/nafu'>
|
87
|
+
<img src='https://github.com/nafu.png?size=140'>
|
88
|
+
</a>
|
89
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
90
|
+
</td>
|
91
|
+
<td id='jorge-revuelta-h'>
|
92
|
+
<a href='https://github.com/minuscorp'>
|
93
|
+
<img src='https://github.com/minuscorp.png?size=140'>
|
94
|
+
</a>
|
95
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
96
96
|
</td>
|
97
97
|
</tr>
|
98
98
|
<tr>
|
99
|
-
<td id='
|
100
|
-
<a href='https://github.com/
|
101
|
-
<img src='https://github.com/
|
99
|
+
<td id='olivier-halligon'>
|
100
|
+
<a href='https://github.com/AliSoftware'>
|
101
|
+
<img src='https://github.com/AliSoftware.png?size=140'>
|
102
102
|
</a>
|
103
|
-
<h4 align='center'><a href='https://twitter.com/
|
103
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
104
104
|
</td>
|
105
|
-
<td id='
|
106
|
-
<a href='https://github.com/
|
107
|
-
<img src='https://github.com/
|
105
|
+
<td id='jan-piotrowski'>
|
106
|
+
<a href='https://github.com/janpio'>
|
107
|
+
<img src='https://github.com/janpio.png?size=140'>
|
108
108
|
</a>
|
109
|
-
<h4 align='center'><a href='https://twitter.com/
|
109
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
110
110
|
</td>
|
111
|
-
<td id='
|
112
|
-
<a href='https://github.com/
|
113
|
-
<img src='https://github.com/
|
111
|
+
<td id='jérôme-lacoste'>
|
112
|
+
<a href='https://github.com/lacostej'>
|
113
|
+
<img src='https://github.com/lacostej.png?size=140'>
|
114
114
|
</a>
|
115
|
-
<h4 align='center'><a href='https://twitter.com/
|
115
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
116
116
|
</td>
|
117
|
-
<td id='
|
118
|
-
<a href='https://github.com/
|
119
|
-
<img src='https://github.com/
|
117
|
+
<td id='andrew-mcburney'>
|
118
|
+
<a href='https://github.com/AndrewMcBurney'>
|
119
|
+
<img src='https://github.com/AndrewMcBurney.png?size=140'>
|
120
120
|
</a>
|
121
|
-
<h4 align='center'><a href='https://twitter.com/
|
121
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
122
122
|
</td>
|
123
|
-
<td id='
|
124
|
-
<a href='https://github.com/
|
125
|
-
<img src='https://github.com/
|
123
|
+
<td id='iulian-onofrei'>
|
124
|
+
<a href='https://github.com/revolter'>
|
125
|
+
<img src='https://github.com/revolter.png?size=140'>
|
126
126
|
</a>
|
127
|
-
<h4 align='center'><a href='https://twitter.com/
|
127
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
128
128
|
</td>
|
129
129
|
</tr>
|
130
130
|
<tr>
|
131
|
-
<td id='
|
132
|
-
<a href='https://github.com/
|
133
|
-
<img src='https://github.com/
|
131
|
+
<td id='luka-mirosevic'>
|
132
|
+
<a href='https://github.com/lmirosevic'>
|
133
|
+
<img src='https://github.com/lmirosevic.png?size=140'>
|
134
134
|
</a>
|
135
|
-
<h4 align='center'><a href='https://twitter.com/
|
135
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
136
136
|
</td>
|
137
|
-
<td id='
|
138
|
-
<a href='https://github.com/
|
139
|
-
<img src='https://github.com/
|
137
|
+
<td id='manu-wallner'>
|
138
|
+
<a href='https://github.com/milch'>
|
139
|
+
<img src='https://github.com/milch.png?size=140'>
|
140
140
|
</a>
|
141
|
-
<h4 align='center'><a href='https://twitter.com/
|
141
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
142
142
|
</td>
|
143
|
-
<td id='
|
144
|
-
<a href='https://github.com/
|
145
|
-
<img src='https://github.com/
|
143
|
+
<td id='aaron-brager'>
|
144
|
+
<a href='https://github.com/getaaron'>
|
145
|
+
<img src='https://github.com/getaaron.png?size=140'>
|
146
146
|
</a>
|
147
|
-
<h4 align='center'><a href='https://twitter.com/
|
147
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
148
148
|
</td>
|
149
|
-
<td id='
|
150
|
-
<a href='https://github.com/
|
151
|
-
<img src='https://github.com/
|
149
|
+
<td id='danielle-tomlinson'>
|
150
|
+
<a href='https://github.com/DanToml'>
|
151
|
+
<img src='https://github.com/DanToml.png?size=140'>
|
152
152
|
</a>
|
153
|
-
<h4 align='center'><a href='https://twitter.com/
|
153
|
+
<h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
|
154
154
|
</td>
|
155
|
-
<td id='
|
156
|
-
<a href='https://github.com/
|
157
|
-
<img src='https://github.com/
|
155
|
+
<td id='kohki-miki'>
|
156
|
+
<a href='https://github.com/giginet'>
|
157
|
+
<img src='https://github.com/giginet.png?size=140'>
|
158
158
|
</a>
|
159
|
-
<h4 align='center'><a href='https://twitter.com/
|
159
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
160
160
|
</td>
|
161
161
|
</tr>
|
162
162
|
</table>
|
@@ -55,12 +55,26 @@ module Deliver
|
|
55
55
|
UI.user_error!("Could not find app with app identifier") unless app
|
56
56
|
|
57
57
|
start = Time.now
|
58
|
+
build = nil
|
58
59
|
|
59
60
|
loop do
|
60
|
-
|
61
|
-
|
61
|
+
latest_build = find_build(app.latest_version.candidate_builds)
|
62
|
+
|
63
|
+
# Sometimes latest build will disappear and a different build would get selected
|
64
|
+
# Only set build if no latest build found or if same build versions as previously fetched build
|
65
|
+
# Issue: https://github.com/fastlane/fastlane/issues/10945
|
66
|
+
if build.nil? || (latest_build && latest_build.train_version == build.train_version && latest_build.build_version == build.build_version)
|
67
|
+
build = latest_build
|
68
|
+
end
|
69
|
+
|
70
|
+
return build if build && build.processing == false
|
71
|
+
|
72
|
+
if build
|
73
|
+
UI.message("Waiting App Store Connect processing for build #{build.train_version} (#{build.build_version})... this might take a while...")
|
74
|
+
else
|
75
|
+
UI.message("Waiting App Store Connect processing for build... this might take a while...")
|
76
|
+
end
|
62
77
|
|
63
|
-
UI.message("Waiting App Store Connect processing for build #{build.train_version} (#{build.build_version})... this might take a while...")
|
64
78
|
if (Time.now - start) > (60 * 5)
|
65
79
|
UI.message("")
|
66
80
|
UI.message("You can tweet: \"App Store Connect #iosprocessingtime #{((Time.now - start) / 60).round} minutes\"")
|
@@ -3,7 +3,7 @@ This file is auto-generated and will be re-generated every time the docs are upd
|
|
3
3
|
To modify it, go to its source at https://github.com/fastlane/fastlane/blob/master/fastlane/lib/assets/Actions.md.erb
|
4
4
|
-->
|
5
5
|
|
6
|
-
{!docs/setup-fastlane-header.md!}
|
6
|
+
{!docs/includes/setup-fastlane-header.md!}
|
7
7
|
|
8
8
|
# fastlane actions
|
9
9
|
|
@@ -22,12 +22,13 @@ You can import another `Fastfile` by using the `import` action. This is useful i
|
|
22
22
|
import './path/to/other/Fastfile'
|
23
23
|
```
|
24
24
|
|
25
|
-
For _fastlane_ plugins, check out the [available plugins](
|
25
|
+
For _fastlane_ plugins, check out the [available plugins](/plugins/available-plugins/) page.
|
26
|
+
If you want to create your own action, check out the [local actions](/create-action/#local-actions) page.
|
26
27
|
|
27
28
|
<%- @categories.each do |category, actions| -%>
|
28
29
|
- [<%= category %>](#<%= category.gsub(" ", "-").downcase %>)
|
29
30
|
<%- end -%>
|
30
|
-
- [Plugins](
|
31
|
+
- [Plugins](/plugins/available-plugins/)
|
31
32
|
|
32
33
|
<%- @categories.each do |category, actions| %>
|
33
34
|
# <%= category %>
|
@@ -33,20 +33,7 @@ _supply_ uploads app metadata, screenshots, binaries, and app bundles to Google
|
|
33
33
|
|
34
34
|
Setup consists of setting up your Google Developers Service Account
|
35
35
|
|
36
|
-
|
37
|
-
1. Select **Settings** tab, followed by the **API access** tab
|
38
|
-
1. Click the **Create Service Account** button and follow the **Google API Console** link in the dialog
|
39
|
-
1. Click the **Create Service account** button at the top of the developers console screen
|
40
|
-
1. Provide a name for the service account
|
41
|
-
1. Click **Select a role** and choose **Service Accounts > Service Account User**
|
42
|
-
1. Check the **Furnish a new private key** checkbox
|
43
|
-
1. Select **JSON** as the Key type
|
44
|
-
1. Click **Create** to close the dialog
|
45
|
-
1. Make a note of the file name of the JSON file downloaded to your computer
|
46
|
-
1. Back on the Google Play developer console, click **Done** to close the dialog
|
47
|
-
1. Click on **Grant Access** for the newly added service account
|
48
|
-
1. Choose **Release Manager** from the **Role** dropdown
|
49
|
-
1. Click **Add user** to close the dialog
|
36
|
+
{!docs/includes/google-credentials.md!}
|
50
37
|
|
51
38
|
### Migrating Google credential format (from .p12 key file to .json)
|
52
39
|
|
@@ -77,7 +77,15 @@ module Fastlane
|
|
77
77
|
private_class_method
|
78
78
|
|
79
79
|
def self.test_summary_filenames(derived_data_path)
|
80
|
-
|
80
|
+
files = []
|
81
|
+
|
82
|
+
# Xcode < 10
|
83
|
+
files += Dir["#{derived_data_path}/**/Logs/Test/*TestSummaries.plist"]
|
84
|
+
|
85
|
+
# Xcode 10
|
86
|
+
files += Dir["#{derived_data_path}/**/Logs/Test/*.xcresult/TestSummaries.plist"]
|
87
|
+
|
88
|
+
return files
|
81
89
|
end
|
82
90
|
|
83
91
|
def self.example_code
|
@@ -2602,6 +2602,7 @@ func runTests(workspace: String? = nil,
|
|
2602
2602
|
device: String? = nil,
|
2603
2603
|
toolchain: String? = nil,
|
2604
2604
|
devices: [String]? = nil,
|
2605
|
+
skipDetectDevices: Bool = false,
|
2605
2606
|
scheme: String? = nil,
|
2606
2607
|
clean: Bool = false,
|
2607
2608
|
codeCoverage: Bool? = nil,
|
@@ -2644,6 +2645,7 @@ func runTests(workspace: String? = nil,
|
|
2644
2645
|
RubyCommand.Argument(name: "device", value: device),
|
2645
2646
|
RubyCommand.Argument(name: "toolchain", value: toolchain),
|
2646
2647
|
RubyCommand.Argument(name: "devices", value: devices),
|
2648
|
+
RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
|
2647
2649
|
RubyCommand.Argument(name: "scheme", value: scheme),
|
2648
2650
|
RubyCommand.Argument(name: "clean", value: clean),
|
2649
2651
|
RubyCommand.Argument(name: "code_coverage", value: codeCoverage),
|
@@ -2728,6 +2730,7 @@ func scan(workspace: String? = scanfile.workspace,
|
|
2728
2730
|
device: String? = scanfile.device,
|
2729
2731
|
toolchain: String? = scanfile.toolchain,
|
2730
2732
|
devices: [String]? = scanfile.devices,
|
2733
|
+
skipDetectDevices: Bool = scanfile.skipDetectDevices,
|
2731
2734
|
scheme: String? = scanfile.scheme,
|
2732
2735
|
clean: Bool = scanfile.clean,
|
2733
2736
|
codeCoverage: Bool? = scanfile.codeCoverage,
|
@@ -2770,6 +2773,7 @@ func scan(workspace: String? = scanfile.workspace,
|
|
2770
2773
|
RubyCommand.Argument(name: "device", value: device),
|
2771
2774
|
RubyCommand.Argument(name: "toolchain", value: toolchain),
|
2772
2775
|
RubyCommand.Argument(name: "devices", value: devices),
|
2776
|
+
RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
|
2773
2777
|
RubyCommand.Argument(name: "scheme", value: scheme),
|
2774
2778
|
RubyCommand.Argument(name: "clean", value: clean),
|
2775
2779
|
RubyCommand.Argument(name: "code_coverage", value: codeCoverage),
|
@@ -4073,4 +4077,4 @@ let screengrabfile: Screengrabfile = Screengrabfile()
|
|
4073
4077
|
let snapshotfile: Snapshotfile = Snapshotfile()
|
4074
4078
|
// Please don't remove the lines below
|
4075
4079
|
// They are used to detect outdated files
|
4076
|
-
// FastlaneRunnerAPIVersion [0.9.
|
4080
|
+
// FastlaneRunnerAPIVersion [0.9.28]
|
@@ -4,6 +4,7 @@ protocol ScanfileProtocol: class {
|
|
4
4
|
var device: String? { get }
|
5
5
|
var toolchain: String? { get }
|
6
6
|
var devices: [String]? { get }
|
7
|
+
var skipDetectDevices: Bool { get }
|
7
8
|
var scheme: String? { get }
|
8
9
|
var clean: Bool { get }
|
9
10
|
var codeCoverage: Bool? { get }
|
@@ -49,6 +50,7 @@ extension ScanfileProtocol {
|
|
49
50
|
var device: String? { return nil }
|
50
51
|
var toolchain: String? { return nil }
|
51
52
|
var devices: [String]? { return nil }
|
53
|
+
var skipDetectDevices: Bool { return false }
|
52
54
|
var scheme: String? { return nil }
|
53
55
|
var clean: Bool { return false }
|
54
56
|
var codeCoverage: Bool? { return nil }
|
@@ -90,4 +92,4 @@ extension ScanfileProtocol {
|
|
90
92
|
|
91
93
|
// Please don't remove the lines below
|
92
94
|
// They are used to detect outdated files
|
93
|
-
// FastlaneRunnerAPIVersion [0.9.
|
95
|
+
// FastlaneRunnerAPIVersion [0.9.4]
|
Binary file
|
@@ -64,6 +64,9 @@ module FastlaneCore
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
rescue => ex
|
67
|
+
# FastlanePty adds exit_status on to StandardError so every error will have a status code
|
68
|
+
status = ex.exit_status
|
69
|
+
|
67
70
|
# This could happen when the environment is wrong:
|
68
71
|
# > invalid byte sequence in US-ASCII (ArgumentError)
|
69
72
|
output << ex.to_s
|
@@ -1,7 +1,23 @@
|
|
1
1
|
# Source: Mix of https://github.com/fastlane/fastlane/pull/7202/files,
|
2
2
|
# https://github.com/fastlane/fastlane/pull/11384#issuecomment-356084518 and
|
3
3
|
# https://github.com/DragonBox/u3d/blob/59e471ad78ac00cb629f479dbe386c5ad2dc5075/lib/u3d_core/command_runner.rb#L88-L96
|
4
|
+
|
5
|
+
class StandardError
|
6
|
+
def exit_status
|
7
|
+
return -1
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
4
11
|
module FastlaneCore
|
12
|
+
class FastlanePtyError < StandardError
|
13
|
+
attr_reader :exit_status
|
14
|
+
def initialize(e, exit_status)
|
15
|
+
super(e)
|
16
|
+
set_backtrace(e.backtrace) if e
|
17
|
+
@exit_status = exit_status
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
5
21
|
class FastlanePty
|
6
22
|
def self.spawn(command)
|
7
23
|
require 'pty'
|
@@ -31,6 +47,11 @@ module FastlaneCore
|
|
31
47
|
command_stdout.close
|
32
48
|
p.value.exitstatus
|
33
49
|
end
|
50
|
+
rescue StandardError => e
|
51
|
+
# Wrapping any error in FastlanePtyError to allow
|
52
|
+
# callers to see and use $?.exitstatus that
|
53
|
+
# would usually get returned
|
54
|
+
raise FastlanePtyError.new(e, $?.exitstatus)
|
34
55
|
end
|
35
56
|
end
|
36
57
|
end
|
@@ -279,14 +279,20 @@ module FastlaneCore
|
|
279
279
|
end
|
280
280
|
|
281
281
|
# Zips directory
|
282
|
-
def self.zip_directory(path, output_path, contents_only: false, print: true)
|
282
|
+
def self.zip_directory(path, output_path, contents_only: false, overwrite: false, print: true)
|
283
|
+
if overwrite
|
284
|
+
overwrite_command = " && rm -f '#{output_path}'"
|
285
|
+
else
|
286
|
+
overwrite_command = ""
|
287
|
+
end
|
288
|
+
|
283
289
|
if contents_only
|
284
|
-
command = "cd '#{path}' && zip -r '#{output_path}' *"
|
290
|
+
command = "cd '#{path}'#{overwrite_command} && zip -r '#{output_path}' *"
|
285
291
|
else
|
286
292
|
containing_path = File.expand_path("..", path)
|
287
293
|
contents_path = File.basename(path)
|
288
294
|
|
289
|
-
command = "cd '#{containing_path}' && zip -r '#{output_path}' '#{contents_path}'"
|
295
|
+
command = "cd '#{containing_path}'#{overwrite_command} && zip -r '#{output_path}' '#{contents_path}'"
|
290
296
|
end
|
291
297
|
|
292
298
|
UI.command(command) unless print
|
@@ -166,27 +166,33 @@ module Scan
|
|
166
166
|
set_of_simulators.to_a
|
167
167
|
end
|
168
168
|
|
169
|
-
|
170
|
-
|
169
|
+
unless Scan.config[:skip_detect_devices]
|
170
|
+
default = lambda do
|
171
|
+
UI.error("Couldn't find any matching simulators for '#{devices}' - falling back to default simulator") if (devices || []).count > 0
|
171
172
|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
173
|
+
result = Array(
|
174
|
+
simulators
|
175
|
+
.select { |sim| sim.name == default_device_name }
|
176
|
+
.reverse # more efficient, because `simctl` prints higher versions first
|
177
|
+
.sort_by! { |sim| Gem::Version.new(sim.os_version) }
|
178
|
+
.last || simulators.first
|
179
|
+
)
|
179
180
|
|
180
|
-
|
181
|
+
UI.message("Found simulator \"#{result.first.name} (#{result.first.os_version})\"") if result.first
|
181
182
|
|
182
|
-
|
183
|
+
result
|
184
|
+
end
|
183
185
|
end
|
184
186
|
|
185
187
|
# grab the first unempty evaluated array
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
188
|
+
if default
|
189
|
+
Scan.devices = [matches, default].lazy.map { |x|
|
190
|
+
arr = x.call
|
191
|
+
arr unless arr.empty?
|
192
|
+
}.reject(&:nil?).first
|
193
|
+
else
|
194
|
+
Scan.devices = []
|
195
|
+
end
|
190
196
|
end
|
191
197
|
|
192
198
|
def self.min_xcode8?
|
@@ -205,7 +211,7 @@ module Scan
|
|
205
211
|
# building up the destination now
|
206
212
|
if Scan.devices && Scan.devices.count > 0
|
207
213
|
Scan.config[:destination] = Scan.devices.map { |d| "platform=#{d.os_type} Simulator,id=#{d.udid}" }
|
208
|
-
|
214
|
+
elsif Scan.project.mac_app?
|
209
215
|
Scan.config[:destination] = min_xcode8? ? ["platform=macOS"] : ["platform=OS X"]
|
210
216
|
end
|
211
217
|
end
|
data/scan/lib/scan/options.rb
CHANGED
@@ -61,6 +61,11 @@ module Scan
|
|
61
61
|
conflict_block: proc do |value|
|
62
62
|
UI.user_error!("You can't use 'device' and 'devices' options in one run")
|
63
63
|
end),
|
64
|
+
FastlaneCore::ConfigItem.new(key: :skip_detect_devices,
|
65
|
+
description: "Should skip auto detecting of devices if none were specified",
|
66
|
+
default_value: false,
|
67
|
+
type: Boolean,
|
68
|
+
optional: true),
|
64
69
|
FastlaneCore::ConfigItem.new(key: :scheme,
|
65
70
|
short_option: "-s",
|
66
71
|
optional: true,
|
data/scan/lib/scan/runner.rb
CHANGED
@@ -110,7 +110,7 @@ module Scan
|
|
110
110
|
|
111
111
|
# Zips build products and moves it to output directory
|
112
112
|
UI.message("Zipping build products")
|
113
|
-
FastlaneCore::Helper.zip_directory(path, output_path, contents_only: true, print: false)
|
113
|
+
FastlaneCore::Helper.zip_directory(path, output_path, contents_only: true, overwrite: true, print: false)
|
114
114
|
UI.message("Succesfully zipped build products: #{output_path}")
|
115
115
|
end
|
116
116
|
|
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.
|
4
|
+
version: 2.104.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- Stefan Natchev
|
7
8
|
- Helmut Januschka
|
8
|
-
- Felix Krause
|
9
|
-
- Jimmy Dee
|
10
|
-
- Andrew McBurney
|
11
|
-
- Luka Mirosevic
|
12
|
-
- Iulian Onofrei
|
13
9
|
- Danielle Tomlinson
|
10
|
+
- Jérôme Lacoste
|
14
11
|
- Aaron Brager
|
15
|
-
- Jorge Revuelta H
|
16
|
-
- Stefan Natchev
|
17
|
-
- Josh Holtz
|
18
12
|
- Olivier Halligon
|
19
|
-
-
|
20
|
-
- Fumiya Nakamura
|
21
|
-
- Manu Wallner
|
22
|
-
- Jérôme Lacoste
|
13
|
+
- Iulian Onofrei
|
23
14
|
- Joshua Liebowitz
|
24
|
-
-
|
15
|
+
- Josh Holtz
|
16
|
+
- Manu Wallner
|
25
17
|
- Maksym Grebenets
|
18
|
+
- Jan Piotrowski
|
19
|
+
- Andrew McBurney
|
26
20
|
- Kohki Miki
|
21
|
+
- Fumiya Nakamura
|
22
|
+
- Felix Krause
|
23
|
+
- Jimmy Dee
|
24
|
+
- Luka Mirosevic
|
25
|
+
- Matthew Ellis
|
26
|
+
- Jorge Revuelta H
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2018-09-
|
30
|
+
date: 2018-09-08 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: slack-notifier
|
@@ -475,7 +475,7 @@ dependencies:
|
|
475
475
|
requirements:
|
476
476
|
- - ">="
|
477
477
|
- !ruby/object:Gem::Version
|
478
|
-
version: 1.2.
|
478
|
+
version: 1.2.2
|
479
479
|
- - "<"
|
480
480
|
- !ruby/object:Gem::Version
|
481
481
|
version: 2.0.0
|
@@ -485,7 +485,7 @@ dependencies:
|
|
485
485
|
requirements:
|
486
486
|
- - ">="
|
487
487
|
- !ruby/object:Gem::Version
|
488
|
-
version: 1.2.
|
488
|
+
version: 1.2.2
|
489
489
|
- - "<"
|
490
490
|
- !ruby/object:Gem::Version
|
491
491
|
version: 2.0.0
|
@@ -1284,6 +1284,7 @@ files:
|
|
1284
1284
|
- fastlane_core/README.md
|
1285
1285
|
- fastlane_core/lib/assets/XMLTemplate.xml.erb
|
1286
1286
|
- fastlane_core/lib/fastlane_core.rb
|
1287
|
+
- fastlane_core/lib/fastlane_core/.command_executor.rb.swp
|
1287
1288
|
- fastlane_core/lib/fastlane_core/analytics/action_completion_context.rb
|
1288
1289
|
- fastlane_core/lib/fastlane_core/analytics/action_launch_context.rb
|
1289
1290
|
- fastlane_core/lib/fastlane_core/analytics/analytics_event_builder.rb
|