fastlane 2.101.1 β 2.102.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +70 -70
- data/deliver/lib/deliver/loader.rb +4 -2
- data/fastlane/lib/assets/ActionDetails.md.erb +1 -1
- data/fastlane/lib/assets/Actions.md.erb +3 -3
- data/fastlane/lib/fastlane/actions/appaloosa.rb +1 -1
- data/fastlane/lib/fastlane/actions/appetize.rb +1 -1
- data/fastlane/lib/fastlane/actions/apteligent.rb +1 -1
- data/fastlane/lib/fastlane/actions/chatwork.rb +1 -1
- data/fastlane/lib/fastlane/actions/cocoapods.rb +15 -11
- data/fastlane/lib/fastlane/actions/crashlytics.rb +1 -1
- data/fastlane/lib/fastlane/actions/create_pull_request.rb +1 -1
- data/fastlane/lib/fastlane/actions/docs/build_ios_app.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/get_certificates.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/get_push_certificate.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +15 -3
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +2 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +1 -1
- data/fastlane/lib/fastlane/actions/flock.rb +1 -1
- data/fastlane/lib/fastlane/actions/git_add.rb +4 -3
- data/fastlane/lib/fastlane/actions/gradle.rb +1 -1
- data/fastlane/lib/fastlane/actions/hipchat.rb +1 -1
- data/fastlane/lib/fastlane/actions/hockey.rb +1 -1
- data/fastlane/lib/fastlane/actions/ifttt.rb +1 -1
- data/fastlane/lib/fastlane/actions/installr.rb +1 -1
- data/fastlane/lib/fastlane/actions/nexus_upload.rb +1 -1
- data/fastlane/lib/fastlane/actions/onesignal.rb +1 -1
- data/fastlane/lib/fastlane/actions/run_tests.rb +4 -0
- data/fastlane/lib/fastlane/actions/slack.rb +1 -1
- data/fastlane/lib/fastlane/actions/splunkmint.rb +1 -1
- data/fastlane/lib/fastlane/actions/testfairy.rb +1 -1
- data/fastlane/lib/fastlane/actions/tryouts.rb +1 -1
- data/fastlane/lib/fastlane/actions/twitter.rb +1 -1
- data/fastlane/lib/fastlane/actions/typetalk.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_urban_airship_configuration.rb +1 -1
- data/fastlane/lib/fastlane/fast_file.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +13 -11
- 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/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane_core/lib/fastlane_core/command_executor.rb +1 -4
- data/fastlane_core/lib/fastlane_core/fastlane_pty.rb +6 -1
- data/pilot/lib/pilot/options.rb +1 -0
- data/pilot/lib/pilot/tester_manager.rb +1 -1
- data/scan/lib/scan/runner.rb +3 -0
- data/screengrab/lib/screengrab/runner.rb +5 -1
- data/snapshot/lib/snapshot/options.rb +1 -0
- data/spaceship/README.md +1 -1
- data/spaceship/lib/spaceship/test_flight/client.rb +4 -0
- data/spaceship/lib/spaceship/test_flight/tester.rb +1 -1
- data/supply/lib/supply/client.rb +1 -1
- data/supply/lib/supply/setup.rb +14 -4
- metadata +16 -17
- data/fastlane/lib/fastlane/actions/.google_play_track_version_codes.rb.swp +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d91692ae9b538be8c778211d301175472ee11ac1
|
|
4
|
+
data.tar.gz: 0abd168e6c72123dace0c10dd681ef8bc303a8cf
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: de17c43a5234fda93caf06a0568b840ff13eba6d0b9a4edc6ad46e9ac64d579767dee7b53ff09eb5d229b672761e936ab592283a5b73412ad93eadf6e3f4bfa3
|
|
7
|
+
data.tar.gz: be5ae50297529093037da1e7ecf14fab30f0e2675cfe2174d86ce520d4e3dd3e94416af11193a3f9249ad06fab7fa4e66d0ab85104867f560be9aa979f45d70a
|
data/README.md
CHANGED
|
@@ -32,29 +32,11 @@ 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/
|
|
38
|
-
</a>
|
|
39
|
-
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
|
40
|
-
</td>
|
|
41
|
-
<td id='jan-piotrowski'>
|
|
42
|
-
<a href='https://github.com/janpio'>
|
|
43
|
-
<img src='https://github.com/janpio.png?size=140'>
|
|
44
|
-
</a>
|
|
45
|
-
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
|
46
|
-
</td>
|
|
47
|
-
<td id='danielle-tomlinson'>
|
|
48
|
-
<a href='https://github.com/DanToml'>
|
|
49
|
-
<img src='https://github.com/DanToml.png?size=140'>
|
|
50
|
-
</a>
|
|
51
|
-
<h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
|
|
52
|
-
</td>
|
|
53
|
-
<td id='jorge-revuelta-h'>
|
|
54
|
-
<a href='https://github.com/minuscorp'>
|
|
55
|
-
<img src='https://github.com/minuscorp.png?size=140'>
|
|
35
|
+
<td id='kohki-miki'>
|
|
36
|
+
<a href='https://github.com/giginet'>
|
|
37
|
+
<img src='https://github.com/giginet.png?size=140'>
|
|
56
38
|
</a>
|
|
57
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
39
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
|
58
40
|
</td>
|
|
59
41
|
<td id='maksym-grebenets'>
|
|
60
42
|
<a href='https://github.com/mgrebenets'>
|
|
@@ -62,13 +44,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
62
44
|
</a>
|
|
63
45
|
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
|
64
46
|
</td>
|
|
65
|
-
|
|
66
|
-
<
|
|
67
|
-
<
|
|
68
|
-
<a href='https://github.com/hjanuschka'>
|
|
69
|
-
<img src='https://github.com/hjanuschka.png?size=140'>
|
|
47
|
+
<td id='iulian-onofrei'>
|
|
48
|
+
<a href='https://github.com/revolter'>
|
|
49
|
+
<img src='https://github.com/revolter.png?size=140'>
|
|
70
50
|
</a>
|
|
71
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
51
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
|
52
|
+
</td>
|
|
53
|
+
<td id='jΓ©rΓ΄me-lacoste'>
|
|
54
|
+
<a href='https://github.com/lacostej'>
|
|
55
|
+
<img src='https://github.com/lacostej.png?size=140'>
|
|
56
|
+
</a>
|
|
57
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>JΓ©rΓ΄me Lacoste</a></h4>
|
|
72
58
|
</td>
|
|
73
59
|
<td id='joshua-liebowitz'>
|
|
74
60
|
<a href='https://github.com/taquitos'>
|
|
@@ -76,11 +62,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
76
62
|
</a>
|
|
77
63
|
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
|
78
64
|
</td>
|
|
79
|
-
|
|
80
|
-
<
|
|
81
|
-
<
|
|
65
|
+
</tr>
|
|
66
|
+
<tr>
|
|
67
|
+
<td id='jimmy-dee'>
|
|
68
|
+
<a href='https://github.com/jdee'>
|
|
69
|
+
<img src='https://github.com/jdee.png?size=140'>
|
|
82
70
|
</a>
|
|
83
|
-
<h4 align='center'
|
|
71
|
+
<h4 align='center'>Jimmy Dee</h4>
|
|
72
|
+
</td>
|
|
73
|
+
<td id='manu-wallner'>
|
|
74
|
+
<a href='https://github.com/milch'>
|
|
75
|
+
<img src='https://github.com/milch.png?size=140'>
|
|
76
|
+
</a>
|
|
77
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
|
78
|
+
</td>
|
|
79
|
+
<td id='andrew-mcburney'>
|
|
80
|
+
<a href='https://github.com/AndrewMcBurney'>
|
|
81
|
+
<img src='https://github.com/AndrewMcBurney.png?size=140'>
|
|
82
|
+
</a>
|
|
83
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
|
84
84
|
</td>
|
|
85
85
|
<td id='aaron-brager'>
|
|
86
86
|
<a href='https://github.com/getaaron'>
|
|
@@ -88,51 +88,57 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
88
88
|
</a>
|
|
89
89
|
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
|
90
90
|
</td>
|
|
91
|
-
<td id='kohki-miki'>
|
|
92
|
-
<a href='https://github.com/giginet'>
|
|
93
|
-
<img src='https://github.com/giginet.png?size=140'>
|
|
94
|
-
</a>
|
|
95
|
-
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
|
96
|
-
</td>
|
|
97
|
-
</tr>
|
|
98
|
-
<tr>
|
|
99
91
|
<td id='stefan-natchev'>
|
|
100
92
|
<a href='https://github.com/snatchev'>
|
|
101
93
|
<img src='https://github.com/snatchev.png?size=140'>
|
|
102
94
|
</a>
|
|
103
95
|
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
|
104
96
|
</td>
|
|
105
|
-
|
|
106
|
-
<
|
|
107
|
-
<
|
|
97
|
+
</tr>
|
|
98
|
+
<tr>
|
|
99
|
+
<td id='olivier-halligon'>
|
|
100
|
+
<a href='https://github.com/AliSoftware'>
|
|
101
|
+
<img src='https://github.com/AliSoftware.png?size=140'>
|
|
108
102
|
</a>
|
|
109
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
103
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
|
110
104
|
</td>
|
|
111
|
-
<td id='
|
|
112
|
-
<a href='https://github.com/
|
|
113
|
-
<img src='https://github.com/
|
|
105
|
+
<td id='helmut-januschka'>
|
|
106
|
+
<a href='https://github.com/hjanuschka'>
|
|
107
|
+
<img src='https://github.com/hjanuschka.png?size=140'>
|
|
114
108
|
</a>
|
|
115
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
109
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
|
116
110
|
</td>
|
|
117
|
-
<td id='
|
|
118
|
-
<a href='https://github.com/
|
|
119
|
-
<img src='https://github.com/
|
|
111
|
+
<td id='felix-krause'>
|
|
112
|
+
<a href='https://github.com/KrauseFx'>
|
|
113
|
+
<img src='https://github.com/KrauseFx.png?size=140'>
|
|
120
114
|
</a>
|
|
121
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
115
|
+
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
|
122
116
|
</td>
|
|
123
|
-
<td id='
|
|
124
|
-
<a href='https://github.com/
|
|
125
|
-
<img src='https://github.com/
|
|
117
|
+
<td id='danielle-tomlinson'>
|
|
118
|
+
<a href='https://github.com/DanToml'>
|
|
119
|
+
<img src='https://github.com/DanToml.png?size=140'>
|
|
126
120
|
</a>
|
|
127
|
-
<h4 align='center'>
|
|
121
|
+
<h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
|
|
122
|
+
</td>
|
|
123
|
+
<td id='jan-piotrowski'>
|
|
124
|
+
<a href='https://github.com/janpio'>
|
|
125
|
+
<img src='https://github.com/janpio.png?size=140'>
|
|
126
|
+
</a>
|
|
127
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</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='josh-holtz'>
|
|
132
|
+
<a href='https://github.com/joshdholtz'>
|
|
133
|
+
<img src='https://github.com/joshdholtz.png?size=140'>
|
|
134
134
|
</a>
|
|
135
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
135
|
+
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
|
136
|
+
</td>
|
|
137
|
+
<td id='jorge-revuelta-h'>
|
|
138
|
+
<a href='https://github.com/minuscorp'>
|
|
139
|
+
<img src='https://github.com/minuscorp.png?size=140'>
|
|
140
|
+
</a>
|
|
141
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
|
136
142
|
</td>
|
|
137
143
|
<td id='matthew-ellis'>
|
|
138
144
|
<a href='https://github.com/matthewellis'>
|
|
@@ -146,17 +152,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
146
152
|
</a>
|
|
147
153
|
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
|
148
154
|
</td>
|
|
149
|
-
<td id='
|
|
150
|
-
<a href='https://github.com/
|
|
151
|
-
<img src='https://github.com/
|
|
152
|
-
</a>
|
|
153
|
-
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
|
154
|
-
</td>
|
|
155
|
-
<td id='jΓ©rΓ΄me-lacoste'>
|
|
156
|
-
<a href='https://github.com/lacostej'>
|
|
157
|
-
<img src='https://github.com/lacostej.png?size=140'>
|
|
155
|
+
<td id='fumiya-nakamura'>
|
|
156
|
+
<a href='https://github.com/nafu'>
|
|
157
|
+
<img src='https://github.com/nafu.png?size=140'>
|
|
158
158
|
</a>
|
|
159
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
159
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
|
160
160
|
</td>
|
|
161
161
|
</tr>
|
|
162
162
|
</table>
|
|
@@ -14,10 +14,12 @@ module Deliver
|
|
|
14
14
|
|
|
15
15
|
SPECIAL_DIR_NAMES = [APPLE_TV_DIR_NAME, IMESSAGE_DIR_NAME, DEFAULT_DIR_NAME].freeze
|
|
16
16
|
|
|
17
|
-
#
|
|
17
|
+
# Some exception directories may exist from other actions that should not be iterated through
|
|
18
18
|
SUPPLY_DIR_NAME = "android".freeze
|
|
19
|
+
FRAMEIT_FONTS_DIR_NAME = "fonts".freeze
|
|
20
|
+
META_DIR_NAMES = UploadMetadata::ALL_META_SUB_DIRS.map(&:downcase)
|
|
19
21
|
|
|
20
|
-
EXCEPTION_DIRECTORIES =
|
|
22
|
+
EXCEPTION_DIRECTORIES = (META_DIR_NAMES << SUPPLY_DIR_NAME << FRAMEIT_FONTS_DIR_NAME).freeze
|
|
21
23
|
|
|
22
24
|
def self.language_folders(root, ignore_validation)
|
|
23
25
|
folders = Dir.glob(File.join(root, '*'))
|
|
@@ -32,11 +32,11 @@ For _fastlane_ plugins, check out the [available plugins](https://docs.fastlane.
|
|
|
32
32
|
<%- @categories.each do |category, actions| %>
|
|
33
33
|
# <%= category %>
|
|
34
34
|
|
|
35
|
-
Action | Description
|
|
36
|
-
|
|
35
|
+
Action | Description | Supported Platforms
|
|
36
|
+
---|---|---
|
|
37
37
|
<%- actions.sort.to_h.each do |_number_of_launches, action| -%>
|
|
38
38
|
<%- link = "/actions/#{action.action_name}/" -%>
|
|
39
|
-
<a href="<%= link %>"><%= action.action_name %></a> | <%= action.description %>
|
|
39
|
+
<a href="<%= link %>"><%= action.action_name %></a> | <%= action.description %> | <%= [:ios, :android, :mac].find_all { |a| action.is_supported?(a) }.join(", ") %>
|
|
40
40
|
<%- end %><%# End of actions.sort... %>
|
|
41
41
|
|
|
42
42
|
<%- end %><%# End of categories.each %>
|
|
@@ -168,7 +168,7 @@ module Fastlane
|
|
|
168
168
|
#####################################################
|
|
169
169
|
|
|
170
170
|
def self.description
|
|
171
|
-
'Upload your app to Appaloosa Store'
|
|
171
|
+
'Upload your app to [Appaloosa Store](https://www.appaloosa-store.com/)'
|
|
172
172
|
end
|
|
173
173
|
|
|
174
174
|
def self.details
|
|
@@ -87,7 +87,7 @@ module Fastlane
|
|
|
87
87
|
private_class_method :parse_response
|
|
88
88
|
|
|
89
89
|
def self.description
|
|
90
|
-
"Upload your app to Appetize.io to stream it in
|
|
90
|
+
"Upload your app to [Appetize.io](https://appetize.io/) to stream it in browser"
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
def self.details
|
|
@@ -59,7 +59,7 @@ module Fastlane
|
|
|
59
59
|
#####################################################
|
|
60
60
|
|
|
61
61
|
def self.description
|
|
62
|
-
"Upload dSYM file to Apteligent (Crittercism)"
|
|
62
|
+
"Upload dSYM file to [Apteligent (Crittercism)](http://www.apteligent.com/)"
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
def self.available_options
|
|
@@ -52,16 +52,6 @@ module Fastlane
|
|
|
52
52
|
|
|
53
53
|
def self.available_options
|
|
54
54
|
[
|
|
55
|
-
FastlaneCore::ConfigItem.new(key: :clean,
|
|
56
|
-
env_name: "FL_COCOAPODS_CLEAN",
|
|
57
|
-
description: "Remove SCM directories",
|
|
58
|
-
is_string: false,
|
|
59
|
-
default_value: true),
|
|
60
|
-
FastlaneCore::ConfigItem.new(key: :integrate,
|
|
61
|
-
env_name: "FL_COCOAPODS_INTEGRATE",
|
|
62
|
-
description: "Integrate the Pods libraries into the Xcode project(s)",
|
|
63
|
-
is_string: false,
|
|
64
|
-
default_value: true),
|
|
65
55
|
FastlaneCore::ConfigItem.new(key: :repo_update,
|
|
66
56
|
env_name: "FL_COCOAPODS_REPO_UPDATE",
|
|
67
57
|
description: "Add `--repo-update` flag to `pod install` command",
|
|
@@ -107,7 +97,21 @@ module Fastlane
|
|
|
107
97
|
optional: true,
|
|
108
98
|
is_string: false,
|
|
109
99
|
default_value: false,
|
|
110
|
-
type: Boolean)
|
|
100
|
+
type: Boolean),
|
|
101
|
+
|
|
102
|
+
# Deprecated
|
|
103
|
+
FastlaneCore::ConfigItem.new(key: :clean,
|
|
104
|
+
env_name: "FL_COCOAPODS_CLEAN",
|
|
105
|
+
description: "(Option removed from cocoapods) Remove SCM directories",
|
|
106
|
+
deprecated: true,
|
|
107
|
+
is_string: false,
|
|
108
|
+
default_value: true),
|
|
109
|
+
FastlaneCore::ConfigItem.new(key: :integrate,
|
|
110
|
+
env_name: "FL_COCOAPODS_INTEGRATE",
|
|
111
|
+
description: "(Option removed from cocoapods) Integrate the Pods libraries into the Xcode project(s)",
|
|
112
|
+
deprecated: true,
|
|
113
|
+
is_string: false,
|
|
114
|
+
default_value: true)
|
|
111
115
|
]
|
|
112
116
|
# Please don't add a version parameter to the `cocoapods` action. If you need to specify a version when running
|
|
113
117
|
# `cocoapods`, please start using a Gemfile and lock the version there
|
|
@@ -111,7 +111,7 @@ module Fastlane
|
|
|
111
111
|
def self.example_code
|
|
112
112
|
[
|
|
113
113
|
'create_pull_request(
|
|
114
|
-
api_token: ENV["
|
|
114
|
+
api_token: "secret", # optional, defaults to ENV["GITHUB_API_TOKEN"]
|
|
115
115
|
repo: "fastlane/fastlane",
|
|
116
116
|
title: "Amazing new feature",
|
|
117
117
|
head: "my-feature", # optional, defaults to current branch name
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
-------
|
|
14
14
|
|
|
15
|
-
<h5 align="center"><
|
|
15
|
+
<h5 align="center"><em>gym</em> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate beta deployments and releases for your iOS and Android apps.</h5>
|
|
16
16
|
|
|
17
17
|
# What's gym?
|
|
18
18
|
|
|
@@ -16,7 +16,7 @@ _frameit_ allows you to put a gorgeous device frame around your iOS and macOS sc
|
|
|
16
16
|
|
|
17
17
|
-------
|
|
18
18
|
|
|
19
|
-
<h5 align="center"><
|
|
19
|
+
<h5 align="center"><em>frameit</em> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate beta deployments and releases for your iOS and Android apps.</h5>
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
# Features
|
|
@@ -56,7 +56,7 @@ Here is a nice gif, that shows _frameit_ in action:
|
|
|
56
56
|
|
|
57
57
|

|
|
58
58
|
|
|
59
|
-
<h5 align="center">The <
|
|
59
|
+
<h5 align="center">The <em>frameit</em> 2.0 update was kindly sponsored by <a href="https://mindnode.com/">MindNode</a>, seen in the screenshots above.</h5>
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
The first time that _frameit_ is executed the frames will be downloaded automatically. Originally the frames are coming from [Facebook frameset](http://facebook.design/devices) and they are kept on [this repo](https://github.com/fastlane/frameit-frames).
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
-------
|
|
14
14
|
|
|
15
|
-
<h5 align="center"><
|
|
15
|
+
<h5 align="center"><em>cert</em> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate beta deployments and releases for your iOS and Android apps.</h5>
|
|
16
16
|
|
|
17
17
|

|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ In the gif we used `cert && sigh`, which will first create an iOS code signing c
|
|
|
20
20
|
|
|
21
21
|
# Usage
|
|
22
22
|
|
|
23
|
-
**Note**: It is recommended to use [_match_](/actions/match) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your certificates. Use _cert_ directly only if you want full control over what's going on and know more about codesigning.
|
|
23
|
+
**Note**: It is recommended to use [_match_](/actions/match/) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your certificates. Use _cert_ directly only if you want full control over what's going on and know more about codesigning.
|
|
24
24
|
|
|
25
25
|
```no-highlight
|
|
26
26
|
fastlane cert
|
|
@@ -24,7 +24,7 @@ To automate iOS Provisioning profiles you can use [_match_](https://docs.fastlan
|
|
|
24
24
|
|
|
25
25
|
-------
|
|
26
26
|
|
|
27
|
-
<h5 align="center"><
|
|
27
|
+
<h5 align="center"><em>pem</em> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate beta deployments and releases for your iOS and Android apps.</h5>
|
|
28
28
|
|
|
29
29
|
# Features
|
|
30
30
|
Well, it's actually just one: Generate the _pem_ file for your server.
|
|
@@ -20,7 +20,7 @@ _match_ is the implementation of the https://codesigning.guide concept. _match_
|
|
|
20
20
|
|
|
21
21
|
-------
|
|
22
22
|
|
|
23
|
-
<h5 align="center"><
|
|
23
|
+
<h5 align="center"><em>match</em> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate beta deployments and releases for your iOS and Android apps.</h5>
|
|
24
24
|
|
|
25
25
|
## Why match?
|
|
26
26
|
|
|
@@ -146,6 +146,18 @@ end
|
|
|
146
146
|
|
|
147
147
|
Then all your team has to do is `fastlane certificates` and keys, certs and profiles for all targets will be synced.
|
|
148
148
|
|
|
149
|
+
#### Handle multiple apps per developer/distribution certificate
|
|
150
|
+
If you want to use a single developer and/or distribution certificate for multiple apps belonging to the same development team, you may use the same signing identities repository and branch to store the signing identities for your apps:
|
|
151
|
+
|
|
152
|
+
Matchfile for both App #1 and #2:
|
|
153
|
+
|
|
154
|
+
```ruby-skip-tests
|
|
155
|
+
git_url("https://github.com/example/example-repo.git")
|
|
156
|
+
git_branch("master")
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
_match_ will reuse certificates and will create separate provisioning profiles for each app.
|
|
160
|
+
|
|
149
161
|
#### Passphrase
|
|
150
162
|
|
|
151
163
|
When running _match_ for the first time on a new machine, it will ask you for the passphrase for the Git repository. This is an additional layer of security: each of the files will be encrypted using `openssl`. Make sure to remember the password, as you'll need it when you run match on a different machine.
|
|
@@ -332,7 +344,7 @@ _match_ stores the certificate (`.cer`) and the private key (`.p12`) files separ
|
|
|
332
344
|
Decrypt your cert found in `certs/<type>/<unique-id>.cer` as a pem file:
|
|
333
345
|
|
|
334
346
|
```no-highlight
|
|
335
|
-
openssl aes-256-cbc -k "<password>" -in "certs/<type>/<unique-id>.cer" -out "cert.
|
|
347
|
+
openssl aes-256-cbc -k "<password>" -in "certs/<type>/<unique-id>.cer" -out "cert.der" -a -d
|
|
336
348
|
openssl x509 -inform der -in cert.der -out cert.pem
|
|
337
349
|
```
|
|
338
350
|
|
|
@@ -345,7 +357,7 @@ openssl aes-256-cbc -k "<password>" -in "certs/distribution/<unique-id>.p12" -ou
|
|
|
345
357
|
Generate an encrypted p12 file with the same or new password:
|
|
346
358
|
|
|
347
359
|
```no-highlight
|
|
348
|
-
openssl pkcs12 -export -out "cert.p12" -inkey "key.pem
|
|
360
|
+
openssl pkcs12 -export -out "cert.p12" -inkey "key.pem" -in "cert.pem" -password pass:<password>
|
|
349
361
|
```
|
|
350
362
|
|
|
351
363
|
## Is this secure?
|
|
@@ -24,9 +24,9 @@ _deliver_ uploads screenshots, metadata and binaries to App Store Connect. Use _
|
|
|
24
24
|
- Easily implement a real Continuous Deployment process using [_fastlane_](https://fastlane.tools)
|
|
25
25
|
- Store the configuration in git to easily deploy from **any** Mac, including your Continuous Integration server
|
|
26
26
|
- Get a HTML preview of the fetched metadata before uploading the app metadata and screenshots to iTC
|
|
27
|
-
- Automatically uses [_precheck_](/actions/precheck) to ensure your app has the highest chances of passing app review the first time
|
|
27
|
+
- Automatically uses [_precheck_](/actions/precheck/) to ensure your app has the highest chances of passing app review the first time
|
|
28
28
|
|
|
29
|
-
To upload builds to TestFlight check out [_pilot_](/actions/pilot).
|
|
29
|
+
To upload builds to TestFlight check out [_pilot_](/actions/pilot/).
|
|
30
30
|
|
|
31
31
|
# Quick Start
|
|
32
32
|
|
|
@@ -65,7 +65,7 @@ The previous p12 configuration is still currently supported.
|
|
|
65
65
|
- `cd [your_project_folder]`
|
|
66
66
|
- `fastlane supply init`
|
|
67
67
|
- Make changes to the downloaded metadata, add images, screenshots and/or an APK
|
|
68
|
-
- `fastlane supply
|
|
68
|
+
- `fastlane supply`
|
|
69
69
|
|
|
70
70
|
## Available Commands
|
|
71
71
|
|
|
@@ -22,7 +22,7 @@ _pilot_ uses [spaceship.airforce](https://spaceship.airforce) to interact with A
|
|
|
22
22
|
|
|
23
23
|
-------
|
|
24
24
|
|
|
25
|
-
<h5 align="center"><
|
|
25
|
+
<h5 align="center"><em>pilot</em> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate beta deployments and releases for your iOS and Android apps.</h5>
|
|
26
26
|
|
|
27
27
|
# Usage
|
|
28
28
|
|
|
@@ -6,7 +6,7 @@ module Fastlane
|
|
|
6
6
|
|
|
7
7
|
if params[:pathspec]
|
|
8
8
|
paths = params[:pathspec]
|
|
9
|
-
|
|
9
|
+
success_message = "Successfully added from \"#{paths}\" πΎ."
|
|
10
10
|
elsif params[:path]
|
|
11
11
|
if params[:path].kind_of?(String)
|
|
12
12
|
paths = shell_escape(params[:path], should_escape)
|
|
@@ -15,13 +15,14 @@ module Fastlane
|
|
|
15
15
|
shell_escape(p, should_escape)
|
|
16
16
|
end.join(' ')
|
|
17
17
|
end
|
|
18
|
-
|
|
18
|
+
success_message = "Successfully added \"#{paths}\" πΎ."
|
|
19
19
|
else
|
|
20
20
|
paths = "."
|
|
21
|
-
|
|
21
|
+
success_message = "Successfully added all files πΎ."
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
result = Actions.sh("git add #{paths}", log: FastlaneCore::Globals.verbose?).chomp
|
|
25
|
+
UI.success(success_message)
|
|
25
26
|
return result
|
|
26
27
|
end
|
|
27
28
|
|
|
@@ -107,7 +107,7 @@ module Fastlane
|
|
|
107
107
|
is_string: true),
|
|
108
108
|
FastlaneCore::ConfigItem.new(key: :flavor,
|
|
109
109
|
env_name: 'FL_GRADLE_FLAVOR',
|
|
110
|
-
description: 'The flavor that you want the task for, e.g. `MyFlavor`. If you are running the `assemble` task in a multi-flavor project, and you rely on Actions.lane_context[
|
|
110
|
+
description: 'The flavor that you want the task for, e.g. `MyFlavor`. If you are running the `assemble` task in a multi-flavor project, and you rely on Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] then you must specify a flavor here or else this value will be undefined',
|
|
111
111
|
optional: true,
|
|
112
112
|
is_string: true),
|
|
113
113
|
FastlaneCore::ConfigItem.new(key: :build_type,
|
|
@@ -28,7 +28,7 @@ module Fastlane
|
|
|
28
28
|
#####################################################
|
|
29
29
|
|
|
30
30
|
def self.description
|
|
31
|
-
"Connect to the IFTTT Maker Channel
|
|
31
|
+
"Connect to the [IFTTT Maker Channel](https://ifttt.com/maker)"
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def self.details
|
|
@@ -4,6 +4,7 @@ module Fastlane
|
|
|
4
4
|
SCAN_DERIVED_DATA_PATH = :SCAN_DERIVED_DATA_PATH
|
|
5
5
|
SCAN_GENERATED_PLIST_FILE = :SCAN_GENERATED_PLIST_FILE
|
|
6
6
|
SCAN_GENERATED_PLIST_FILES = :SCAN_GENERATED_PLIST_FILES
|
|
7
|
+
SCAN_ZIP_BUILD_PRODUCTS_PATH = :SCAN_ZIP_BUILD_PRODUCTS_PATH
|
|
7
8
|
end
|
|
8
9
|
|
|
9
10
|
class RunTestsAction < Action
|
|
@@ -21,6 +22,9 @@ module Fastlane
|
|
|
21
22
|
values[:destination] = destination # restore destination value
|
|
22
23
|
Scan::Manager.new.work(values)
|
|
23
24
|
|
|
25
|
+
zip_build_products_path = Scan.cache[:zip_build_products_path]
|
|
26
|
+
Actions.lane_context[SharedValues::SCAN_ZIP_BUILD_PRODUCTS_PATH] = zip_build_products_path if zip_build_products_path
|
|
27
|
+
|
|
24
28
|
return true
|
|
25
29
|
rescue FastlaneCore::Interface::FastlaneBuildFailure => ex
|
|
26
30
|
# Specifically catching FastlaneBuildFailure to prevent build/compile errors from being
|
|
@@ -29,7 +29,7 @@ module Fastlane
|
|
|
29
29
|
content.scan(/^\s*require (.*)/).each do |current|
|
|
30
30
|
gem_name = current.last
|
|
31
31
|
next if gem_name.include?(".") # these are local gems
|
|
32
|
-
UI.important("You have
|
|
32
|
+
UI.important("You have required a gem, if this is a third party gem, please use `fastlane_require #{gem_name}` to ensure the gem is installed locally.")
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
parse(content, @path)
|
|
@@ -991,26 +991,26 @@ func clubmate() {
|
|
|
991
991
|
let command = RubyCommand(commandID: "", methodName: "clubmate", className: nil, args: [])
|
|
992
992
|
_ = runner.executeCommand(command)
|
|
993
993
|
}
|
|
994
|
-
func cocoapods(
|
|
995
|
-
integrate: Bool = true,
|
|
996
|
-
repoUpdate: Bool = false,
|
|
994
|
+
func cocoapods(repoUpdate: Bool = false,
|
|
997
995
|
silent: Bool = false,
|
|
998
996
|
verbose: Bool = false,
|
|
999
997
|
ansi: Bool = true,
|
|
1000
998
|
useBundleExec: Bool = true,
|
|
1001
999
|
podfile: String? = nil,
|
|
1002
1000
|
errorCallback: String? = nil,
|
|
1003
|
-
tryRepoUpdateOnError: Bool = false
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1001
|
+
tryRepoUpdateOnError: Bool = false,
|
|
1002
|
+
clean: Bool = true,
|
|
1003
|
+
integrate: Bool = true) {
|
|
1004
|
+
let command = RubyCommand(commandID: "", methodName: "cocoapods", className: nil, args: [RubyCommand.Argument(name: "repo_update", value: repoUpdate),
|
|
1007
1005
|
RubyCommand.Argument(name: "silent", value: silent),
|
|
1008
1006
|
RubyCommand.Argument(name: "verbose", value: verbose),
|
|
1009
1007
|
RubyCommand.Argument(name: "ansi", value: ansi),
|
|
1010
1008
|
RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
|
|
1011
1009
|
RubyCommand.Argument(name: "podfile", value: podfile),
|
|
1012
1010
|
RubyCommand.Argument(name: "error_callback", value: errorCallback),
|
|
1013
|
-
RubyCommand.Argument(name: "try_repo_update_on_error", value: tryRepoUpdateOnError)
|
|
1011
|
+
RubyCommand.Argument(name: "try_repo_update_on_error", value: tryRepoUpdateOnError),
|
|
1012
|
+
RubyCommand.Argument(name: "clean", value: clean),
|
|
1013
|
+
RubyCommand.Argument(name: "integrate", value: integrate)])
|
|
1014
1014
|
_ = runner.executeCommand(command)
|
|
1015
1015
|
}
|
|
1016
1016
|
@discardableResult func commitGithubFile(repositoryName: String,
|
|
@@ -1651,14 +1651,16 @@ func googlePlayTrackVersionCodes(packageName: String,
|
|
|
1651
1651
|
issuer: String? = nil,
|
|
1652
1652
|
jsonKey: String? = nil,
|
|
1653
1653
|
jsonKeyData: String? = nil,
|
|
1654
|
-
rootUrl: String? = nil
|
|
1654
|
+
rootUrl: String? = nil,
|
|
1655
|
+
timeout: Int = 300) {
|
|
1655
1656
|
let command = RubyCommand(commandID: "", methodName: "google_play_track_version_codes", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
|
|
1656
1657
|
RubyCommand.Argument(name: "track", value: track),
|
|
1657
1658
|
RubyCommand.Argument(name: "key", value: key),
|
|
1658
1659
|
RubyCommand.Argument(name: "issuer", value: issuer),
|
|
1659
1660
|
RubyCommand.Argument(name: "json_key", value: jsonKey),
|
|
1660
1661
|
RubyCommand.Argument(name: "json_key_data", value: jsonKeyData),
|
|
1661
|
-
RubyCommand.Argument(name: "root_url", value: rootUrl)
|
|
1662
|
+
RubyCommand.Argument(name: "root_url", value: rootUrl),
|
|
1663
|
+
RubyCommand.Argument(name: "timeout", value: timeout)])
|
|
1662
1664
|
_ = runner.executeCommand(command)
|
|
1663
1665
|
}
|
|
1664
1666
|
func gradle(task: String,
|
|
@@ -4069,4 +4071,4 @@ let screengrabfile: Screengrabfile = Screengrabfile()
|
|
|
4069
4071
|
let snapshotfile: Snapshotfile = Snapshotfile()
|
|
4070
4072
|
// Please don't remove the lines below
|
|
4071
4073
|
// They are used to detect outdated files
|
|
4072
|
-
// FastlaneRunnerAPIVersion [0.9.
|
|
4074
|
+
// FastlaneRunnerAPIVersion [0.9.26]
|
|
@@ -48,7 +48,7 @@ module FastlaneCore
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
begin
|
|
51
|
-
FastlaneCore::FastlanePty.spawn(command) do |command_stdout, command_stdin, pid|
|
|
51
|
+
status = FastlaneCore::FastlanePty.spawn(command) do |command_stdout, command_stdin, pid|
|
|
52
52
|
begin
|
|
53
53
|
command_stdout.each do |l|
|
|
54
54
|
line = l.strip # strip so that \n gets removed
|
|
@@ -66,8 +66,6 @@ module FastlaneCore
|
|
|
66
66
|
rescue Errno::EIO
|
|
67
67
|
# This is expected on some linux systems, that indicates that the subcommand finished
|
|
68
68
|
# and we kept trying to read, ignore it
|
|
69
|
-
ensure
|
|
70
|
-
Process.wait(pid)
|
|
71
69
|
end
|
|
72
70
|
end
|
|
73
71
|
rescue => ex
|
|
@@ -84,7 +82,6 @@ module FastlaneCore
|
|
|
84
82
|
end
|
|
85
83
|
|
|
86
84
|
# Exit status for build command, should be 0 if build succeeded
|
|
87
|
-
status = $?.exitstatus
|
|
88
85
|
if status != 0
|
|
89
86
|
o = output.join("\n")
|
|
90
87
|
puts(o) # the user has the right to see the raw output
|
|
@@ -6,8 +6,13 @@ module FastlaneCore
|
|
|
6
6
|
def self.spawn(command, &block)
|
|
7
7
|
require 'pty'
|
|
8
8
|
PTY.spawn(command) do |command_stdout, command_stdin, pid|
|
|
9
|
-
|
|
9
|
+
begin
|
|
10
|
+
block.call(command_stdout, command_stdin, pid)
|
|
11
|
+
ensure
|
|
12
|
+
Process.wait(pid)
|
|
13
|
+
end
|
|
10
14
|
end
|
|
15
|
+
$?.exitstatus
|
|
11
16
|
rescue LoadError
|
|
12
17
|
require 'open3'
|
|
13
18
|
Open3.popen2e(command) do |command_stdin, command_stdout, p| # note the inversion
|
data/pilot/lib/pilot/options.rb
CHANGED
|
@@ -22,6 +22,7 @@ module Pilot
|
|
|
22
22
|
description: "The bundle identifier of the app to upload or manage testers (optional)",
|
|
23
23
|
optional: true,
|
|
24
24
|
code_gen_sensitive: true,
|
|
25
|
+
# This incorrect env name is here for backwards compatibility
|
|
25
26
|
default_value: ENV["TESTFLIGHT_APP_IDENTITIFER"] || CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier),
|
|
26
27
|
default_value_dynamic: true),
|
|
27
28
|
FastlaneCore::ConfigItem.new(key: :app_platform,
|
|
@@ -205,7 +205,7 @@ module Pilot
|
|
|
205
205
|
end
|
|
206
206
|
|
|
207
207
|
if tester.latest_installed_date
|
|
208
|
-
rows << ["Latest Version", tester.
|
|
208
|
+
rows << ["Latest Version", "#{tester.latest_install_info['latestInstalledShortVersion']} (#{tester.latest_install_info['latestInstalledVersion']})"]
|
|
209
209
|
rows << ["Latest Install Date", tester.pretty_install_date]
|
|
210
210
|
end
|
|
211
211
|
|
data/scan/lib/scan/runner.rb
CHANGED
|
@@ -105,6 +105,9 @@ module Scan
|
|
|
105
105
|
output_directory = File.absolute_path(Scan.config[:output_directory])
|
|
106
106
|
output_path = File.join(output_directory, "build_products.zip")
|
|
107
107
|
|
|
108
|
+
# Caching path for action to put into lane_context
|
|
109
|
+
Scan.cache[:zip_build_products_path] = output_path
|
|
110
|
+
|
|
108
111
|
# Zips build products and moves it to output directory
|
|
109
112
|
UI.message("Zipping build products")
|
|
110
113
|
FastlaneCore::Helper.zip_directory(path, output_path, contents_only: true, print: false)
|
|
@@ -136,9 +136,13 @@ module Screengrab
|
|
|
136
136
|
end
|
|
137
137
|
|
|
138
138
|
def determine_external_screenshots_path(device_serial)
|
|
139
|
-
|
|
139
|
+
# macOS evaluates $foo in `echo $foo` before executing the command,
|
|
140
|
+
# Windows doesn't - hence the double backslash vs. single backslash
|
|
141
|
+
command = Helper.windows? ? "shell echo \$EXTERNAL_STORAGE " : "shell echo \\$EXTERNAL_STORAGE"
|
|
142
|
+
device_ext_storage = run_adb_command("adb -s #{device_serial} #{command}",
|
|
140
143
|
print_all: true,
|
|
141
144
|
print_command: true)
|
|
145
|
+
device_ext_storage = device_ext_storage.strip
|
|
142
146
|
File.join(device_ext_storage, @config[:app_package_name], 'screengrab')
|
|
143
147
|
end
|
|
144
148
|
|
|
@@ -122,6 +122,7 @@ module Snapshot
|
|
|
122
122
|
optional: true,
|
|
123
123
|
description: "The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)",
|
|
124
124
|
code_gen_sensitive: true,
|
|
125
|
+
# This incorrect env name is here for backwards compatibility
|
|
125
126
|
default_value: ENV["SNAPSHOT_APP_IDENTITIFER"] || CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier),
|
|
126
127
|
default_value_dynamic: true),
|
|
127
128
|
FastlaneCore::ConfigItem.new(key: :add_photos,
|
data/spaceship/README.md
CHANGED
|
@@ -49,7 +49,7 @@ Get in contact with the creators on Twitter: [@FastlaneTools](https://twitter.co
|
|
|
49
49
|
|
|
50
50
|
-------
|
|
51
51
|
|
|
52
|
-
<h5 align="center"><
|
|
52
|
+
<h5 align="center"><em>spaceship</em> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate beta deployments and releases for your iOS and Android apps.</h5>
|
|
53
53
|
|
|
54
54
|
# What's spaceship?
|
|
55
55
|
|
|
@@ -74,7 +74,7 @@ module Spaceship
|
|
|
74
74
|
def pretty_install_date
|
|
75
75
|
return nil unless latest_installed_date
|
|
76
76
|
|
|
77
|
-
Time.at((latest_installed_date / 1000)).strftime("%m
|
|
77
|
+
Time.at((latest_installed_date / 1000)).strftime("%Y-%m-%d %H:%M")
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
# @return (Array) Returns all beta testers available for this account
|
data/supply/lib/supply/client.rb
CHANGED
data/supply/lib/supply/setup.rb
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
module Supply
|
|
2
2
|
class Setup
|
|
3
3
|
def perform_download
|
|
4
|
+
UI.message("π Downloading metadata, images, screenshots...")
|
|
5
|
+
|
|
4
6
|
if File.exist?(metadata_path)
|
|
5
7
|
UI.important("Metadata already exists at path '#{metadata_path}'")
|
|
6
8
|
return
|
|
@@ -22,10 +24,12 @@ module Supply
|
|
|
22
24
|
|
|
23
25
|
client.abort_current_edit
|
|
24
26
|
|
|
25
|
-
UI.success("Successfully stored metadata in '#{metadata_path}'")
|
|
27
|
+
UI.success("β
Successfully stored metadata in '#{metadata_path}'")
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
def store_metadata(listing)
|
|
31
|
+
UI.message("π Downloading metadata (#{listing.language})")
|
|
32
|
+
|
|
29
33
|
containing = File.join(metadata_path, listing.language)
|
|
30
34
|
FileUtils.mkdir_p(containing)
|
|
31
35
|
|
|
@@ -37,6 +41,8 @@ module Supply
|
|
|
37
41
|
end
|
|
38
42
|
|
|
39
43
|
def download_images(listing)
|
|
44
|
+
UI.message("πΌοΈ Downloading images (#{listing.language})")
|
|
45
|
+
|
|
40
46
|
# We cannot download existing screenshots as they are compressed
|
|
41
47
|
# But we can at least download the images
|
|
42
48
|
require 'net/http'
|
|
@@ -44,12 +50,12 @@ module Supply
|
|
|
44
50
|
IMAGES_TYPES.each do |image_type|
|
|
45
51
|
if ['featureGraphic'].include?(image_type)
|
|
46
52
|
# we don't get all files in full resolution :(
|
|
47
|
-
UI.message("Due to a limitation of the Google Play API, there is no way for `supply` to download your existing feature graphic. Please copy your feature graphic to `metadata/android/#{listing.language}/images/featureGraphic.png`")
|
|
53
|
+
UI.message("π΅ Due to a limitation of the Google Play API, there is no way for `supply` to download your existing feature graphic. Please copy your feature graphic to `metadata/android/#{listing.language}/images/featureGraphic.png`")
|
|
48
54
|
next
|
|
49
55
|
end
|
|
50
56
|
|
|
51
57
|
begin
|
|
52
|
-
UI.message("Downloading
|
|
58
|
+
UI.message("Downloading `#{image_type}` for #{listing.language}...")
|
|
53
59
|
|
|
54
60
|
url = client.fetch_images(image_type: image_type, language: listing.language).last
|
|
55
61
|
next unless url
|
|
@@ -64,6 +70,8 @@ module Supply
|
|
|
64
70
|
end
|
|
65
71
|
|
|
66
72
|
def create_screenshots_folder(listing)
|
|
73
|
+
UI.message("π± Downloading screenshots (#{listing.language})")
|
|
74
|
+
|
|
67
75
|
containing = File.join(metadata_path, listing.language)
|
|
68
76
|
|
|
69
77
|
FileUtils.mkdir_p(File.join(containing, IMAGES_FOLDER_NAME))
|
|
@@ -71,10 +79,12 @@ module Supply
|
|
|
71
79
|
FileUtils.mkdir_p(File.join(containing, IMAGES_FOLDER_NAME, screenshot_type))
|
|
72
80
|
end
|
|
73
81
|
|
|
74
|
-
UI.message("Due to a limitation of the Google Play API, there is no way for `supply` to download your existing screenshots. Please copy your screenshots into `metadata/android/#{listing.language}/images/`")
|
|
82
|
+
UI.message("π΅ Due to a limitation of the Google Play API, there is no way for `supply` to download your existing screenshots. Please copy your screenshots into `metadata/android/#{listing.language}/images/`")
|
|
75
83
|
end
|
|
76
84
|
|
|
77
85
|
def store_apk_listing(apk_listing)
|
|
86
|
+
UI.message("π¨ Downloading changelogs (#{apk_listing.language}, #{apk_listing.apk_version_code})")
|
|
87
|
+
|
|
78
88
|
containing = File.join(metadata_path, apk_listing.language, CHANGELOGS_FOLDER_NAME)
|
|
79
89
|
unless File.exist?(containing)
|
|
80
90
|
FileUtils.mkdir_p(containing)
|
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.102.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
- Stefan Natchev
|
|
8
7
|
- JΓ©rΓ΄me Lacoste
|
|
9
|
-
-
|
|
10
|
-
- Joshua Liebowitz
|
|
11
|
-
- Maksym Grebenets
|
|
12
|
-
- Manu Wallner
|
|
8
|
+
- Matthew Ellis
|
|
13
9
|
- Jorge Revuelta H
|
|
10
|
+
- Helmut Januschka
|
|
14
11
|
- Aaron Brager
|
|
15
|
-
-
|
|
16
|
-
- Josh Holtz
|
|
17
|
-
- Luka Mirosevic
|
|
18
|
-
- Olivier Halligon
|
|
19
|
-
- Matthew Ellis
|
|
12
|
+
- Andrew McBurney
|
|
20
13
|
- Danielle Tomlinson
|
|
21
|
-
- Iulian Onofrei
|
|
22
|
-
- Fumiya Nakamura
|
|
23
|
-
- Felix Krause
|
|
24
14
|
- Jimmy Dee
|
|
25
|
-
-
|
|
15
|
+
- Luka Mirosevic
|
|
16
|
+
- Felix Krause
|
|
26
17
|
- Jan Piotrowski
|
|
18
|
+
- Josh Holtz
|
|
19
|
+
- Kohki Miki
|
|
20
|
+
- Fumiya Nakamura
|
|
21
|
+
- Joshua Liebowitz
|
|
22
|
+
- Maksym Grebenets
|
|
23
|
+
- Stefan Natchev
|
|
24
|
+
- Iulian Onofrei
|
|
25
|
+
- Manu Wallner
|
|
26
|
+
- Olivier Halligon
|
|
27
27
|
autorequire:
|
|
28
28
|
bindir: bin
|
|
29
29
|
cert_chain: []
|
|
30
|
-
date: 2018-08-
|
|
30
|
+
date: 2018-08-16 00:00:00.000000000 Z
|
|
31
31
|
dependencies:
|
|
32
32
|
- !ruby/object:Gem::Dependency
|
|
33
33
|
name: slack-notifier
|
|
@@ -940,7 +940,6 @@ files:
|
|
|
940
940
|
- fastlane/lib/fastlane.rb
|
|
941
941
|
- fastlane/lib/fastlane/action.rb
|
|
942
942
|
- fastlane/lib/fastlane/action_collector.rb
|
|
943
|
-
- fastlane/lib/fastlane/actions/.google_play_track_version_codes.rb.swp
|
|
944
943
|
- fastlane/lib/fastlane/actions/README.md
|
|
945
944
|
- fastlane/lib/fastlane/actions/actions_helper.rb
|
|
946
945
|
- fastlane/lib/fastlane/actions/adb.rb
|
|
Binary file
|