fastlane 2.105.2 → 2.106.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 +73 -72
- data/bin/fastlane +24 -1
- data/deliver/lib/deliver/app_screenshot.rb +7 -0
- data/deliver/lib/deliver/submit_for_review.rb +14 -1
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +1 -1
- data/fastlane/lib/fastlane/actions/download_from_play_store.rb +61 -0
- data/fastlane/lib/fastlane/actions/modify_services.rb +7 -5
- data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +2 -2
- data/fastlane/lib/fastlane/actions/register_device.rb +6 -4
- data/fastlane/lib/fastlane/actions/register_devices.rb +9 -8
- data/fastlane/lib/fastlane/actions/upload_to_play_store.rb +12 -0
- data/fastlane/lib/fastlane/helper/crashlytics_helper.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +24 -6
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +3 -4
- 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.rb +0 -1
- data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
- data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +13 -10
- data/frameit/lib/frameit/editor.rb +3 -2
- data/frameit/lib/frameit/frame_downloader.rb +1 -1
- data/match/lib/match.rb +2 -2
- data/match/lib/match/change_password.rb +31 -18
- data/match/lib/match/commands_generator.rb +20 -7
- data/match/lib/match/encryption.rb +18 -0
- data/match/lib/match/encryption/interface.rb +17 -0
- data/match/lib/match/encryption/openssl.rb +155 -0
- data/match/lib/match/generator.rb +5 -5
- data/match/lib/match/module.rb +5 -1
- data/match/lib/match/nuke.rb +33 -15
- data/match/lib/match/options.rb +11 -12
- data/match/lib/match/runner.rb +59 -38
- data/match/lib/match/storage.rb +16 -0
- data/match/lib/match/storage/git_storage.rb +228 -0
- data/match/lib/match/storage/interface.rb +50 -0
- data/snapshot/lib/snapshot/screenshot_rotate.rb +3 -8
- data/spaceship/README.md +10 -1
- data/spaceship/lib/spaceship/api/.DS_Store +0 -0
- data/spaceship/lib/spaceship/api/.base.rb.swp +0 -0
- data/spaceship/lib/spaceship/du/du_client.rb +2 -0
- data/spaceship/lib/spaceship/portal/device.rb +0 -1
- data/spaceship/lib/spaceship/portal/portal_client.rb +7 -1
- data/spaceship/lib/spaceship/spaceauth_runner.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_details.rb +1 -1
- data/spaceship/lib/spaceship/tunes/device_type.rb +1 -1
- metadata +46 -20
- data/fastlane_core/lib/fastlane_core/itunes_search_api.rb +0 -50
- data/match/lib/match/encrypt.rb +0 -133
- data/match/lib/match/git_helper.rb +0 -209
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'storage/interface'
|
2
|
+
require_relative 'storage/git_storage'
|
3
|
+
|
4
|
+
module Match
|
5
|
+
module Storage
|
6
|
+
def self.for_mode(storage_mode, params)
|
7
|
+
if storage_mode == "git"
|
8
|
+
return Storage::GitStorage.configure(params)
|
9
|
+
elsif storage_mode == "google_cloud"
|
10
|
+
# return Storage::GoogleCloudStorage
|
11
|
+
else
|
12
|
+
UI.user_error!("Invalid storage mode '#{storage_mode}'")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,228 @@
|
|
1
|
+
require 'fastlane_core/command_executor'
|
2
|
+
|
3
|
+
require_relative '../module'
|
4
|
+
require_relative './interface'
|
5
|
+
|
6
|
+
module Match
|
7
|
+
module Storage
|
8
|
+
# Store the code signing identities in a git repo
|
9
|
+
class GitStorage < Interface
|
10
|
+
MATCH_VERSION_FILE_NAME = "match_version.txt"
|
11
|
+
|
12
|
+
# User provided values
|
13
|
+
attr_accessor :git_url
|
14
|
+
attr_accessor :shallow_clone
|
15
|
+
attr_accessor :skip_docs
|
16
|
+
attr_accessor :branch
|
17
|
+
attr_accessor :git_full_name
|
18
|
+
attr_accessor :git_user_email
|
19
|
+
attr_accessor :clone_branch_directly
|
20
|
+
attr_accessor :type
|
21
|
+
attr_accessor :platform
|
22
|
+
|
23
|
+
def self.configure(params)
|
24
|
+
return self.new(
|
25
|
+
type: params[:type].to_s,
|
26
|
+
platform: params[:platform].to_s,
|
27
|
+
git_url: params[:git_url],
|
28
|
+
shallow_clone: params[:shallow_clone],
|
29
|
+
skip_docs: params[:skip_docs],
|
30
|
+
branch: params[:git_branch],
|
31
|
+
git_full_name: params[:git_full_name],
|
32
|
+
git_user_email: params[:git_user_email],
|
33
|
+
clone_branch_directly: params[:clone_branch_directly]
|
34
|
+
)
|
35
|
+
end
|
36
|
+
|
37
|
+
def initialize(type: nil,
|
38
|
+
platform: nil,
|
39
|
+
git_url: nil,
|
40
|
+
shallow_clone: nil,
|
41
|
+
skip_docs: false,
|
42
|
+
branch: "master",
|
43
|
+
git_full_name: nil,
|
44
|
+
git_user_email: nil,
|
45
|
+
clone_branch_directly: false)
|
46
|
+
self.git_url = git_url
|
47
|
+
self.shallow_clone = shallow_clone
|
48
|
+
self.skip_docs = skip_docs
|
49
|
+
self.branch = branch
|
50
|
+
self.git_full_name = git_full_name
|
51
|
+
self.git_user_email = git_user_email
|
52
|
+
self.clone_branch_directly = clone_branch_directly
|
53
|
+
|
54
|
+
self.type = type if type
|
55
|
+
self.platform = platform if platform
|
56
|
+
end
|
57
|
+
|
58
|
+
def download
|
59
|
+
# Check if we already have a functional working_directory
|
60
|
+
return self.working_directory if @working_directory
|
61
|
+
|
62
|
+
# No existing working directory, creating a new one now
|
63
|
+
self.working_directory = Dir.mktmpdir
|
64
|
+
|
65
|
+
command = "git clone '#{self.git_url}' '#{self.working_directory}'"
|
66
|
+
if self.shallow_clone
|
67
|
+
command << " --depth 1 --no-single-branch"
|
68
|
+
elsif self.clone_branch_directly
|
69
|
+
command += " -b #{self.branch.shellescape} --single-branch"
|
70
|
+
end
|
71
|
+
|
72
|
+
UI.message("Cloning remote git repo...")
|
73
|
+
if self.branch && !self.clone_branch_directly
|
74
|
+
UI.message("If cloning the repo takes too long, you can use the `clone_branch_directly` option in match.")
|
75
|
+
end
|
76
|
+
|
77
|
+
begin
|
78
|
+
# GIT_TERMINAL_PROMPT will fail the `git clone` command if user credentials are missing
|
79
|
+
FastlaneCore::CommandExecutor.execute(command: "GIT_TERMINAL_PROMPT=0 #{command}",
|
80
|
+
print_all: FastlaneCore::Globals.verbose?,
|
81
|
+
print_command: FastlaneCore::Globals.verbose?)
|
82
|
+
rescue
|
83
|
+
UI.error("Error cloning certificates repo, please make sure you have read access to the repository you want to use")
|
84
|
+
if self.branch && self.clone_branch_directly
|
85
|
+
UI.error("You passed '#{self.branch}' as branch in combination with the `clone_branch_directly` flag. Please remove `clone_branch_directly` flag on the first run for _match_ to create the branch.")
|
86
|
+
end
|
87
|
+
UI.error("Run the following command manually to make sure you're properly authenticated:")
|
88
|
+
UI.command(command)
|
89
|
+
UI.user_error!("Error cloning certificates git repo, please make sure you have access to the repository - see instructions above")
|
90
|
+
end
|
91
|
+
|
92
|
+
add_user_config(self.git_full_name, self.git_user_email)
|
93
|
+
|
94
|
+
unless File.directory?(self.working_directory)
|
95
|
+
UI.user_error!("Error cloning repo, make sure you have access to it '#{self.git_url}'")
|
96
|
+
end
|
97
|
+
|
98
|
+
checkout_branch unless self.branch == "master"
|
99
|
+
end
|
100
|
+
|
101
|
+
def save_changes!(files_to_commit: [], custom_message: nil)
|
102
|
+
Dir.chdir(File.expand_path(self.working_directory)) do
|
103
|
+
commands = []
|
104
|
+
|
105
|
+
if files_to_commit.count > 0 # e.g. for nuke this is treated differently
|
106
|
+
if !File.exist?(MATCH_VERSION_FILE_NAME) || File.read(MATCH_VERSION_FILE_NAME) != Fastlane::VERSION.to_s
|
107
|
+
files_to_commit << MATCH_VERSION_FILE_NAME
|
108
|
+
File.write(MATCH_VERSION_FILE_NAME, Fastlane::VERSION) # stored unencrypted
|
109
|
+
end
|
110
|
+
|
111
|
+
template = File.read("#{Match::ROOT}/lib/assets/READMETemplate.md")
|
112
|
+
readme_path = "README.md"
|
113
|
+
if (!File.exist?(readme_path) || File.read(readme_path) != template) && !self.skip_docs
|
114
|
+
files_to_commit << readme_path
|
115
|
+
File.write(readme_path, template)
|
116
|
+
end
|
117
|
+
|
118
|
+
# `git add` each file we want to commit
|
119
|
+
# - Fixes https://github.com/fastlane/fastlane/issues/8917
|
120
|
+
# - Fixes https://github.com/fastlane/fastlane/issues/8793
|
121
|
+
# - Replaces, closes and fixes https://github.com/fastlane/fastlane/pull/8919
|
122
|
+
commands += files_to_commit.map do |current_file|
|
123
|
+
"git add #{current_file.shellescape}"
|
124
|
+
end
|
125
|
+
else
|
126
|
+
# No specific list given, e.g. this happens on `fastlane match nuke`
|
127
|
+
# We just want to run `git add -A` to commit everything
|
128
|
+
commands << "git add -A"
|
129
|
+
end
|
130
|
+
commit_message = custom_message || generate_commit_message
|
131
|
+
commands << "git commit -m #{commit_message.shellescape}"
|
132
|
+
commands << "GIT_TERMINAL_PROMPT=0 git push origin #{self.branch.shellescape}"
|
133
|
+
|
134
|
+
UI.message("Pushing changes to remote git repo...")
|
135
|
+
|
136
|
+
begin
|
137
|
+
commands.each do |command|
|
138
|
+
FastlaneCore::CommandExecutor.execute(command: command,
|
139
|
+
print_all: FastlaneCore::Globals.verbose?,
|
140
|
+
print_command: FastlaneCore::Globals.verbose?)
|
141
|
+
end
|
142
|
+
|
143
|
+
self.clear_changes
|
144
|
+
rescue => ex
|
145
|
+
UI.error("Couldn't commit or push changes back to git...")
|
146
|
+
UI.error(ex)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
def clear_changes
|
152
|
+
return unless @working_directory
|
153
|
+
|
154
|
+
FileUtils.rm_rf(self.working_directory)
|
155
|
+
self.working_directory = nil
|
156
|
+
end
|
157
|
+
|
158
|
+
# Generate the commit message based on the user's parameters
|
159
|
+
def generate_commit_message
|
160
|
+
[
|
161
|
+
"[fastlane]",
|
162
|
+
"Updated",
|
163
|
+
self.type,
|
164
|
+
"and platform",
|
165
|
+
self.platform
|
166
|
+
].join(" ")
|
167
|
+
end
|
168
|
+
|
169
|
+
private
|
170
|
+
|
171
|
+
# Create and checkout an specific branch in the git repo
|
172
|
+
def checkout_branch
|
173
|
+
return unless self.working_directory
|
174
|
+
|
175
|
+
commands = []
|
176
|
+
if branch_exists?(self.branch)
|
177
|
+
# Checkout the branch if it already exists
|
178
|
+
commands << "git checkout #{self.branch.shellescape}"
|
179
|
+
else
|
180
|
+
# If a new branch is being created, we create it as an 'orphan' to not inherit changes from the master branch.
|
181
|
+
commands << "git checkout --orphan #{self.branch.shellescape}"
|
182
|
+
# We also need to reset the working directory to not transfer any uncommitted changes to the new branch.
|
183
|
+
commands << "git reset --hard"
|
184
|
+
end
|
185
|
+
|
186
|
+
UI.message("Checking out branch #{self.branch}...")
|
187
|
+
|
188
|
+
Dir.chdir(self.working_directory) do
|
189
|
+
commands.each do |command|
|
190
|
+
FastlaneCore::CommandExecutor.execute(command: command,
|
191
|
+
print_all: FastlaneCore::Globals.verbose?,
|
192
|
+
print_command: FastlaneCore::Globals.verbose?)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
# Checks if a specific branch exists in the git repo
|
198
|
+
def branch_exists?(branch)
|
199
|
+
return unless self.working_directory
|
200
|
+
|
201
|
+
result = Dir.chdir(self.working_directory) do
|
202
|
+
FastlaneCore::CommandExecutor.execute(command: "git --no-pager branch --list origin/#{branch.shellescape} --no-color -r",
|
203
|
+
print_all: FastlaneCore::Globals.verbose?,
|
204
|
+
print_command: FastlaneCore::Globals.verbose?)
|
205
|
+
end
|
206
|
+
return !result.empty?
|
207
|
+
end
|
208
|
+
|
209
|
+
def add_user_config(user_name, user_email)
|
210
|
+
# Add git config if needed
|
211
|
+
commands = []
|
212
|
+
commands << "git config user.name \"#{user_name}\"" unless user_name.nil?
|
213
|
+
commands << "git config user.email \"#{user_email}\"" unless user_email.nil?
|
214
|
+
|
215
|
+
return if commands.empty?
|
216
|
+
|
217
|
+
UI.message("Add git user config to local git repo...")
|
218
|
+
Dir.chdir(self.working_directory) do
|
219
|
+
commands.each do |command|
|
220
|
+
FastlaneCore::CommandExecutor.execute(command: command,
|
221
|
+
print_all: FastlaneCore::Globals.verbose?,
|
222
|
+
print_command: FastlaneCore::Globals.verbose?)
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Match
|
2
|
+
module Storage
|
3
|
+
class Interface
|
4
|
+
# The working directory in which we download all the profiles
|
5
|
+
# and decrypt/encrypt them
|
6
|
+
attr_accessor :working_directory
|
7
|
+
|
8
|
+
# To make debugging easier, we have a custom exception here
|
9
|
+
def working_directory
|
10
|
+
if @working_directory.nil?
|
11
|
+
raise "`working_directory` for the current storage provider is `nil` as the `#download` method was never called"
|
12
|
+
end
|
13
|
+
return @working_directory
|
14
|
+
end
|
15
|
+
|
16
|
+
# Call this method after creating a new object to configure
|
17
|
+
# the given Storage object. This method will take
|
18
|
+
# different paramters depending on specific class being used
|
19
|
+
def configure
|
20
|
+
not_implemented(__method__)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Call this method for the initial clone/download of the
|
24
|
+
# user's certificates & profiles
|
25
|
+
# As part of this method, the `self.working_directory` attribute
|
26
|
+
# will be set
|
27
|
+
def download
|
28
|
+
not_implemented(__method__)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Call this method after locally modifying the files
|
32
|
+
# This will commit the changes and push it back to the
|
33
|
+
# given remote server
|
34
|
+
# This method is blocking, meaning it might take multiple
|
35
|
+
# seconds or longer to run
|
36
|
+
# @parameter files_to_commit [Array] Array to paths to files
|
37
|
+
# that should be committed to the storage provider
|
38
|
+
# @parameter custom_message: [String] Custom change message
|
39
|
+
# that's optional, is used for commit title
|
40
|
+
def save_changes!(files_to_commit: [], custom_message: nil)
|
41
|
+
not_implemented(__method__)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Call this method to reset any changes made locally to the files
|
45
|
+
def clear_changes
|
46
|
+
not_implemented(__method__)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -25,16 +25,11 @@ module Snapshot
|
|
25
25
|
command = "sips -r 180 '#{file}'"
|
26
26
|
end
|
27
27
|
|
28
|
+
# Only rotate if we need to
|
28
29
|
next unless command
|
29
30
|
|
30
|
-
#
|
31
|
-
FastlaneCore::
|
32
|
-
command_stdout.sync
|
33
|
-
command_stdout.each do |line|
|
34
|
-
# We need to read this otherwise things hang
|
35
|
-
end
|
36
|
-
::Process.wait(pid)
|
37
|
-
end
|
31
|
+
# Rotate
|
32
|
+
FastlaneCore::CommandExecutor.execute(command: command, print_all: false, print_command: false)
|
38
33
|
end
|
39
34
|
end
|
40
35
|
end
|
data/spaceship/README.md
CHANGED
@@ -113,7 +113,7 @@ This requires you to install `pry` using `sudo gem install pry`. `pry` is not in
|
|
113
113
|
|
114
114
|
## 2 Step Verification
|
115
115
|
|
116
|
-
When your Apple account has 2 factor verification enabled, you'll automatically be asked to verify your identity
|
116
|
+
When your Apple account has 2 factor verification enabled, you'll automatically be asked to verify your identity. If you have a trusted device configured for your account, then a code will appear on the device. If you don't have any devices configured, but have trusted a phone number, then a code will be sent to your phone. The resulting session will be stored in `~/.fastlane/spaceship/[email]/cookie`. The session should be valid for about one month, however there is no way to test this without actually waiting for over a month.
|
117
117
|
|
118
118
|
### Support for CI machines
|
119
119
|
|
@@ -133,6 +133,15 @@ export FASTLANE_SESSION='---\n- !ruby/object:HTTP::Cookie\n name: DES5c148586df
|
|
133
133
|
|
134
134
|
Copy everything from `---\n` to your CI server and provide it as environment variable named `FASTLANE_SESSION`.
|
135
135
|
|
136
|
+
#### Bypass trusted device and use SMS for verification
|
137
|
+
|
138
|
+
If you have a trusted device configured, Apple will not send a SMS code to your phone for your Apple account when you try to generate a web session with _fastlane_. Instead, a code will be displayed on one of your account's trusted devices. This can be problematic if you are trying to authenticate but don't have access to a trusted device. Take the following steps to circumvent the device and use SMS instead:
|
139
|
+
|
140
|
+
- Attempt to generate a web session with `fastlane spaceauth -u [email]` and wait for security code prompt to appear
|
141
|
+
- Open a browser to [appleid.apple.com](https://appleid.apple.com) or an address that requires you to login with your Apple ID, and logout of any previous session
|
142
|
+
- Login with your Apple ID and request a code be sent to the desired phone when prompted for a security code
|
143
|
+
- Use the code sent to phone with _fastlane_ instead of with the browser
|
144
|
+
|
136
145
|
#### Transporter
|
137
146
|
|
138
147
|
If you want to upload builds to TestFlight/App Store Connect from your CI, you have to generate an application specific password:
|
Binary file
|
Binary file
|
@@ -102,6 +102,7 @@ module Spaceship
|
|
102
102
|
# rubocop:enable Layout/ExtraSpacing
|
103
103
|
{
|
104
104
|
watch: "MZPFT.SortedN27ScreenShot",
|
105
|
+
watchSeries4: "MZPFT.SortedN131ScreenShot",
|
105
106
|
ipad: "MZPFT.SortedTabletScreenShot",
|
106
107
|
ipadPro: "MZPFT.SortedJ99ScreenShot",
|
107
108
|
ipad105: "MZPFT.SortedJ207ScreenShot",
|
@@ -134,6 +135,7 @@ module Spaceship
|
|
134
135
|
# rubocop:enable Layout/ExtraSpacing
|
135
136
|
{
|
136
137
|
watch: [[312, 390]],
|
138
|
+
watchSeries4: [[368, 448]],
|
137
139
|
ipad: [[1024, 748], [1024, 768], [2048, 1496], [2048, 1536], [768, 1004], [768, 1024], [1536, 2008], [1536, 2048]],
|
138
140
|
ipadPro: [[2048, 2732], [2732, 2048]],
|
139
141
|
ipad105: [[1668, 2224], [2224, 1668]],
|
@@ -532,7 +532,13 @@ module Spaceship
|
|
532
532
|
register: 'single'
|
533
533
|
})
|
534
534
|
|
535
|
-
parse_response(req, 'devices')
|
535
|
+
devices = parse_response(req, 'devices')
|
536
|
+
return devices.first unless devices.empty?
|
537
|
+
|
538
|
+
validation_messages = parse_response(req, 'validationMessages').map { |message| message["validationUserMessage"] }.compact.uniq
|
539
|
+
|
540
|
+
raise UnexpectedResponse.new, validation_messages.join('\n') unless validation_messages.empty?
|
541
|
+
raise UnexpectedResponse.new, "Couldn't register new device, got this: #{parse_response(req)}"
|
536
542
|
end
|
537
543
|
|
538
544
|
def disable_device!(device_id, device_udid, mac: false)
|
@@ -44,7 +44,7 @@ module Spaceship
|
|
44
44
|
|
45
45
|
# We remove all the un-needed cookies
|
46
46
|
cookies.select! do |cookie|
|
47
|
-
cookie.name.start_with?("
|
47
|
+
cookie.name.start_with?("myacinfo") || cookie.name == 'dqsid'
|
48
48
|
end
|
49
49
|
|
50
50
|
yaml = cookies.to_yaml.gsub("\n", "\\n")
|
@@ -23,7 +23,7 @@ module Spaceship
|
|
23
23
|
# @return (Hash) A hash representing the privacy URL in all languages
|
24
24
|
attr_reader :privacy_url
|
25
25
|
|
26
|
-
# @return (Hash)
|
26
|
+
# @return (Hash) A hash prepresenting the privacy URL in all languages for Apple TV
|
27
27
|
attr_reader :apple_tv_privacy_policy
|
28
28
|
|
29
29
|
# Categories (e.g. MZGenre.Business)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Spaceship
|
2
2
|
module Tunes
|
3
3
|
class DeviceType
|
4
|
-
@types = ['iphone4', 'iphone35', 'iphone6', 'iphone6Plus', 'iphone58', 'iphone65', 'ipad', 'ipadPro', 'ipad105', 'watch', 'appleTV', 'desktop']
|
4
|
+
@types = ['iphone4', 'iphone35', 'iphone6', 'iphone6Plus', 'iphone58', 'iphone65', 'ipad', 'ipadPro', 'ipad105', 'watch', 'watchSeries4', 'appleTV', 'desktop']
|
5
5
|
class << self
|
6
6
|
attr_accessor :types
|
7
7
|
|
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.106.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
- Joshua Liebowitz
|
9
|
-
- Maksym Grebenets
|
10
|
-
- Jorge Revuelta H
|
7
|
+
- Manu Wallner
|
11
8
|
- Olivier Halligon
|
12
|
-
-
|
13
|
-
-
|
9
|
+
- Felix Krause
|
10
|
+
- Danielle Tomlinson
|
11
|
+
- Fumiya Nakamura
|
12
|
+
- Maksym Grebenets
|
13
|
+
- Luka Mirosevic
|
14
|
+
- Iulian Onofrei
|
14
15
|
- Jérôme Lacoste
|
16
|
+
- Kohki Miki
|
17
|
+
- Jorge Revuelta H
|
18
|
+
- Stefan Natchev
|
19
|
+
- Helmut Januschka
|
20
|
+
- Aaron Brager
|
15
21
|
- Andrew McBurney
|
16
|
-
-
|
17
|
-
- Fumiya Nakamura
|
22
|
+
- Jimmy Dee
|
18
23
|
- Josh Holtz
|
19
|
-
-
|
24
|
+
- Joshua Liebowitz
|
20
25
|
- Jan Piotrowski
|
21
|
-
-
|
22
|
-
- Stefan Natchev
|
23
|
-
- Luka Mirosevic
|
24
|
-
- Danielle Tomlinson
|
25
|
-
- Iulian Onofrei
|
26
|
-
- Manu Wallner
|
26
|
+
- Matthew Ellis
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2018-
|
30
|
+
date: 2018-10-10 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: slack-notifier
|
@@ -633,6 +633,26 @@ dependencies:
|
|
633
633
|
- - "~>"
|
634
634
|
- !ruby/object:Gem::Version
|
635
635
|
version: '0.1'
|
636
|
+
- !ruby/object:Gem::Dependency
|
637
|
+
name: bootsnap
|
638
|
+
requirement: !ruby/object:Gem::Requirement
|
639
|
+
requirements:
|
640
|
+
- - ">="
|
641
|
+
- !ruby/object:Gem::Version
|
642
|
+
version: 1.3.1
|
643
|
+
- - "<"
|
644
|
+
- !ruby/object:Gem::Version
|
645
|
+
version: 1.4.0
|
646
|
+
type: :runtime
|
647
|
+
prerelease: false
|
648
|
+
version_requirements: !ruby/object:Gem::Requirement
|
649
|
+
requirements:
|
650
|
+
- - ">="
|
651
|
+
- !ruby/object:Gem::Version
|
652
|
+
version: 1.3.1
|
653
|
+
- - "<"
|
654
|
+
- !ruby/object:Gem::Version
|
655
|
+
version: 1.4.0
|
636
656
|
- !ruby/object:Gem::Dependency
|
637
657
|
name: rake
|
638
658
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1009,6 +1029,7 @@ files:
|
|
1009
1029
|
- fastlane/lib/fastlane/actions/dotgpg_environment.rb
|
1010
1030
|
- fastlane/lib/fastlane/actions/download.rb
|
1011
1031
|
- fastlane/lib/fastlane/actions/download_dsyms.rb
|
1032
|
+
- fastlane/lib/fastlane/actions/download_from_play_store.rb
|
1012
1033
|
- fastlane/lib/fastlane/actions/dsym_zip.rb
|
1013
1034
|
- fastlane/lib/fastlane/actions/echo.rb
|
1014
1035
|
- fastlane/lib/fastlane/actions/ensure_git_branch.rb
|
@@ -1312,7 +1333,6 @@ files:
|
|
1312
1333
|
- fastlane_core/lib/fastlane_core/ios_app_identifier_guesser.rb
|
1313
1334
|
- fastlane_core/lib/fastlane_core/ipa_file_analyser.rb
|
1314
1335
|
- fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb
|
1315
|
-
- fastlane_core/lib/fastlane_core/itunes_search_api.rb
|
1316
1336
|
- fastlane_core/lib/fastlane_core/itunes_transporter.rb
|
1317
1337
|
- fastlane_core/lib/fastlane_core/keychain_importer.rb
|
1318
1338
|
- fastlane_core/lib/fastlane_core/languages.rb
|
@@ -1386,15 +1406,19 @@ files:
|
|
1386
1406
|
- match/lib/match.rb
|
1387
1407
|
- match/lib/match/change_password.rb
|
1388
1408
|
- match/lib/match/commands_generator.rb
|
1389
|
-
- match/lib/match/
|
1409
|
+
- match/lib/match/encryption.rb
|
1410
|
+
- match/lib/match/encryption/interface.rb
|
1411
|
+
- match/lib/match/encryption/openssl.rb
|
1390
1412
|
- match/lib/match/generator.rb
|
1391
|
-
- match/lib/match/git_helper.rb
|
1392
1413
|
- match/lib/match/module.rb
|
1393
1414
|
- match/lib/match/nuke.rb
|
1394
1415
|
- match/lib/match/options.rb
|
1395
1416
|
- match/lib/match/runner.rb
|
1396
1417
|
- match/lib/match/setup.rb
|
1397
1418
|
- match/lib/match/spaceship_ensure.rb
|
1419
|
+
- match/lib/match/storage.rb
|
1420
|
+
- match/lib/match/storage/git_storage.rb
|
1421
|
+
- match/lib/match/storage/interface.rb
|
1398
1422
|
- match/lib/match/table_printer.rb
|
1399
1423
|
- match/lib/match/utils.rb
|
1400
1424
|
- pem/README.md
|
@@ -1530,6 +1554,8 @@ files:
|
|
1530
1554
|
- spaceship/lib/assets/languageMapping.json
|
1531
1555
|
- spaceship/lib/assets/languageMappingReadable.json
|
1532
1556
|
- spaceship/lib/spaceship.rb
|
1557
|
+
- spaceship/lib/spaceship/api/.DS_Store
|
1558
|
+
- spaceship/lib/spaceship/api/.base.rb.swp
|
1533
1559
|
- spaceship/lib/spaceship/babosa_fix.rb
|
1534
1560
|
- spaceship/lib/spaceship/base.rb
|
1535
1561
|
- spaceship/lib/spaceship/client.rb
|