fastlane 2.105.2 → 2.106.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +73 -72
  3. data/bin/fastlane +24 -1
  4. data/deliver/lib/deliver/app_screenshot.rb +7 -0
  5. data/deliver/lib/deliver/submit_for_review.rb +14 -1
  6. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +1 -1
  7. data/fastlane/lib/fastlane/actions/download_from_play_store.rb +61 -0
  8. data/fastlane/lib/fastlane/actions/modify_services.rb +7 -5
  9. data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +2 -2
  10. data/fastlane/lib/fastlane/actions/register_device.rb +6 -4
  11. data/fastlane/lib/fastlane/actions/register_devices.rb +9 -8
  12. data/fastlane/lib/fastlane/actions/upload_to_play_store.rb +12 -0
  13. data/fastlane/lib/fastlane/helper/crashlytics_helper.rb +1 -1
  14. data/fastlane/lib/fastlane/version.rb +1 -1
  15. data/fastlane/swift/Deliverfile.swift +1 -1
  16. data/fastlane/swift/Fastlane.swift +24 -6
  17. data/fastlane/swift/Gymfile.swift +1 -1
  18. data/fastlane/swift/Matchfile.swift +1 -1
  19. data/fastlane/swift/MatchfileProtocol.swift +3 -4
  20. data/fastlane/swift/Precheckfile.swift +1 -1
  21. data/fastlane/swift/Scanfile.swift +1 -1
  22. data/fastlane/swift/Screengrabfile.swift +1 -1
  23. data/fastlane/swift/Snapshotfile.swift +1 -1
  24. data/fastlane_core/lib/fastlane_core.rb +0 -1
  25. data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
  26. data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
  27. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +13 -10
  28. data/frameit/lib/frameit/editor.rb +3 -2
  29. data/frameit/lib/frameit/frame_downloader.rb +1 -1
  30. data/match/lib/match.rb +2 -2
  31. data/match/lib/match/change_password.rb +31 -18
  32. data/match/lib/match/commands_generator.rb +20 -7
  33. data/match/lib/match/encryption.rb +18 -0
  34. data/match/lib/match/encryption/interface.rb +17 -0
  35. data/match/lib/match/encryption/openssl.rb +155 -0
  36. data/match/lib/match/generator.rb +5 -5
  37. data/match/lib/match/module.rb +5 -1
  38. data/match/lib/match/nuke.rb +33 -15
  39. data/match/lib/match/options.rb +11 -12
  40. data/match/lib/match/runner.rb +59 -38
  41. data/match/lib/match/storage.rb +16 -0
  42. data/match/lib/match/storage/git_storage.rb +228 -0
  43. data/match/lib/match/storage/interface.rb +50 -0
  44. data/snapshot/lib/snapshot/screenshot_rotate.rb +3 -8
  45. data/spaceship/README.md +10 -1
  46. data/spaceship/lib/spaceship/api/.DS_Store +0 -0
  47. data/spaceship/lib/spaceship/api/.base.rb.swp +0 -0
  48. data/spaceship/lib/spaceship/du/du_client.rb +2 -0
  49. data/spaceship/lib/spaceship/portal/device.rb +0 -1
  50. data/spaceship/lib/spaceship/portal/portal_client.rb +7 -1
  51. data/spaceship/lib/spaceship/spaceauth_runner.rb +1 -1
  52. data/spaceship/lib/spaceship/tunes/app_details.rb +1 -1
  53. data/spaceship/lib/spaceship/tunes/device_type.rb +1 -1
  54. metadata +46 -20
  55. data/fastlane_core/lib/fastlane_core/itunes_search_api.rb +0 -50
  56. data/match/lib/match/encrypt.rb +0 -133
  57. 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
- # Only rotate if we need to
31
- FastlaneCore::FastlanePty.spawn(command) do |command_stdout, command_stdin, pid|
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
@@ -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 using 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.
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:
@@ -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]],
@@ -155,7 +155,6 @@ module Spaceship
155
155
  return existing if existing
156
156
 
157
157
  # It is valid to have the same name for multiple devices
158
-
159
158
  device = client.create_device!(name, udid, mac: mac)
160
159
 
161
160
  # Update self with the new device
@@ -532,7 +532,13 @@ module Spaceship
532
532
  register: 'single'
533
533
  })
534
534
 
535
- parse_response(req, 'devices').first
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?("DES5") || cookie.name == 'dqsid'
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) Some bla bla about privacy
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.105.2
4
+ version: 2.106.0
5
5
  platform: ruby
6
6
  authors:
7
- - Aaron Brager
8
- - Joshua Liebowitz
9
- - Maksym Grebenets
10
- - Jorge Revuelta H
7
+ - Manu Wallner
11
8
  - Olivier Halligon
12
- - Kohki Miki
13
- - Jimmy Dee
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
- - Matthew Ellis
17
- - Fumiya Nakamura
22
+ - Jimmy Dee
18
23
  - Josh Holtz
19
- - Helmut Januschka
24
+ - Joshua Liebowitz
20
25
  - Jan Piotrowski
21
- - Felix Krause
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-09-23 00:00:00.000000000 Z
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/encrypt.rb
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