b0VIM 8.2D`y,#joshholtzJoshs-MacBook-Air.local~joshholtz/Developer/fastlane/fastlane/match/lib/match/storage/interface.rb 3210#"! UtpV!Wad6V|8dZY ] Q / % $ f R . $ # v b O + ! t P F E q P TGwvn^] V&\2xi end self.clear_changes end end UI.user_error!("Neither `files_to_commit` nor `files_to_delete` were provided to the `save_changes!` method call") else UI.message("Finished deleting files from #{self.human_readable_description}") self.delete_files(files_to_delete: files_to_delete, custom_message: custom_message) elsif files_to_delete.count > 0 UI.message("Finished uploading files to #{self.human_readable_description}") self.upload_files(files_to_upload: files_to_commit, custom_message: custom_message) end File.write(readme_path, template) files_to_commit << readme_path if (!File.exist?(readme_path) || File.read(readme_path) != template) && !self.skip_docs readme_path = "README.md" template = File.read("#{Match::ROOT}/lib/assets/READMETemplate.md") end File.write(MATCH_VERSION_FILE_NAME, Fastlane::VERSION) # stored unencrypted files_to_commit << MATCH_VERSION_FILE_NAME if !File.exist?(MATCH_VERSION_FILE_NAME) || File.read(MATCH_VERSION_FILE_NAME) != Fastlane::VERSION.to_s UI.user_error!("You can't provide both `files_to_delete` and `files_to_commit` right now") if files_to_delete.count > 0 if files_to_commit.count > 0 # everything that isn't `match nuke` Dir.chdir(File.expand_path(self.working_directory)) do files_to_delete ||= [] files_to_commit ||= [] # Custom init to `[]` in case `nil` is passed def save_changes!(files_to_commit: nil, files_to_delete: nil, custom_message: nil) # that's optional, is used for commit title # @parameter custom_message: [String] Custom change message # that should be committed to the storage provider # @parameter files_to_commit [Array] Array to paths to files # seconds or longer to run # This method is blocking, meaning it might take multiple # given remote server # This will commit the changes and push it back to the # Call this method after locally modifying the files end not_implemented(__method__) def human_readable_description # storage backend. This will be printed when nuking a storage # Returns a short string describing + identifing the current end not_implemented(__method__) def download # will be set # As part of this method, the `self.working_directory` attribute # user's certificates & profiles # Call this method for the initial clone/download of the end not_implemented(__method__) def configure # different parameters depending on specific class being used # the given Storage object. This method will take # Call this method after creating a new object to configure end return @working_directory end raise "`working_directory` for the current storage provider is `nil` as the `#download` method was never called" if @working_directory.nil? def working_directory # To make debugging easier, we have a custom exception here end not_implemented(__method__) def prefixed_working_directory # To make debugging easier, we have a custom exception here attr_accessor :working_directory # and decrypt/encrypt them # The working directory in which we download all the profiles MATCH_VERSION_FILE_NAME = "match_version.txt" class Interface module Storagemodule Matchrequire_relative '../module'ad !O+!  }|?  ~ 6  end end end end self.working_directory = nil FileUtils.rm_rf(self.working_directory) return unless @working_directory def clear_changes # Call this method to reset any changes made locally to the files end not_implemented(__method__) def generate_matchfile_content(template: nil) # that should be generated # This method must return the content of the Matchfile # Implement this for the `fastlane match init` command end not_implemented(__method__) def list_files(file_name: "", file_ext: "") end not_implemented(__method__) def skip_docs end not_implemented(__method__) def delete_files(files_to_delete: [], custom_message: nil) end not_implemented(__method__) def upload_files(files_to_upload: [], custom_message: nil)