class Match::Storage::Interface

Constants

MATCH_VERSION_FILE_NAME

Attributes

working_directory[RW]

The working directory in which we download all the profiles and decrypt/encrypt them

Public Instance Methods

clear_changes() click to toggle source

Call this method to reset any changes made locally to the files

# File match/lib/match/storage/interface.rb, line 111
def clear_changes
  return unless @working_directory

  FileUtils.rm_rf(self.working_directory)
  self.working_directory = nil
end
configure() click to toggle source

Call this method after creating a new object to configure the given Storage object. This method will take different parameters depending on specific class being used

# File match/lib/match/storage/interface.rb, line 27
def configure
  not_implemented(__method__)
end
delete_files(files_to_delete: [], custom_message: nil) click to toggle source
# File match/lib/match/storage/interface.rb, line 91
def delete_files(files_to_delete: [], custom_message: nil)
  not_implemented(__method__)
end
download() click to toggle source

Call this method for the initial clone/download of the user's certificates & profiles As part of this method, the `self.working_directory` attribute will be set

# File match/lib/match/storage/interface.rb, line 35
def download
  not_implemented(__method__)
end
generate_matchfile_content(template: nil) click to toggle source

Implement this for the `fastlane match init` command This method must return the content of the Matchfile that should be generated

# File match/lib/match/storage/interface.rb, line 106
def generate_matchfile_content(template: nil)
  not_implemented(__method__)
end
human_readable_description() click to toggle source

Returns a short string describing + identifing the current storage backend. This will be printed when nuking a storage

# File match/lib/match/storage/interface.rb, line 41
def human_readable_description
  not_implemented(__method__)
end
list_files(file_name: "", file_ext: "") click to toggle source
# File match/lib/match/storage/interface.rb, line 99
def list_files(file_name: "", file_ext: "")
  not_implemented(__method__)
end
prefixed_working_directory() click to toggle source

To make debugging easier, we have a custom exception here

# File match/lib/match/storage/interface.rb, line 12
def prefixed_working_directory
  not_implemented(__method__)
end
save_changes!(files_to_commit: nil, files_to_delete: nil, custom_message: nil) click to toggle source

Call this method after locally modifying the files This will commit the changes and push it back to the given remote server This method is blocking, meaning it might take multiple seconds or longer to run @parameter files_to_commit [Array] Array to paths to files

that should be committed to the storage provider

@parameter custom_message: [String] Custom change message

that's optional, is used for commit title
# File match/lib/match/storage/interface.rb, line 54
def save_changes!(files_to_commit: nil, files_to_delete: nil, custom_message: nil)
  # Custom init to `[]` in case `nil` is passed
  files_to_commit ||= []
  files_to_delete ||= []

  Dir.chdir(File.expand_path(self.working_directory)) do
    if files_to_commit.count > 0 # everything that isn't `match nuke`
      UI.user_error!("You can't provide both `files_to_delete` and `files_to_commit` right now") if files_to_delete.count > 0

      if !File.exist?(MATCH_VERSION_FILE_NAME) || File.read(MATCH_VERSION_FILE_NAME) != Fastlane::VERSION.to_s
        files_to_commit << MATCH_VERSION_FILE_NAME
        File.write(MATCH_VERSION_FILE_NAME, Fastlane::VERSION) # stored unencrypted
      end

      template = File.read("#{Match::ROOT}/lib/assets/READMETemplate.md")
      readme_path = "README.md"
      if (!File.exist?(readme_path) || File.read(readme_path) != template) && !self.skip_docs
        files_to_commit << readme_path
        File.write(readme_path, template)
      end

      self.upload_files(files_to_upload: files_to_commit, custom_message: custom_message)
      UI.message("Finished uploading files to #{self.human_readable_description}")
    elsif files_to_delete.count > 0
      self.delete_files(files_to_delete: files_to_delete, custom_message: custom_message)
      UI.message("Finished deleting files from #{self.human_readable_description}")
    else
      UI.user_error!("Neither `files_to_commit` nor `files_to_delete` were provided to the `save_changes!` method call")
    end
  end
  self.clear_changes
end
skip_docs() click to toggle source
# File match/lib/match/storage/interface.rb, line 95
def skip_docs
  not_implemented(__method__)
end
upload_files(files_to_upload: [], custom_message: nil) click to toggle source
# File match/lib/match/storage/interface.rb, line 87
def upload_files(files_to_upload: [], custom_message: nil)
  not_implemented(__method__)
end