Class: Match::Storage::Interface
- Inherits:
-
Object
- Object
- Match::Storage::Interface
- Defined in:
- match/lib/match/storage/interface.rb
Direct Known Subclasses
Constant Summary collapse
- MATCH_VERSION_FILE_NAME =
"match_version.txt"
Instance Attribute Summary collapse
-
#working_directory ⇒ Object
To make debugging easier, we have a custom exception here.
Instance Method Summary collapse
-
#clear_changes ⇒ Object
Call this method to reset any changes made locally to the files.
-
#configure ⇒ Object
Call this method after creating a new object to configure the given Storage object.
- #delete_files(files_to_delete: [], custom_message: nil) ⇒ Object
-
#download ⇒ Object
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.
-
#save_changes!(files_to_commit: nil, files_to_delete: nil, custom_message: nil) ⇒ Object
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.
- #skip_docs ⇒ Object
- #upload_files(files_to_upload: [], custom_message: nil) ⇒ Object
Instance Attribute Details
#working_directory ⇒ Object
To make debugging easier, we have a custom exception here
9 10 11 |
# File 'match/lib/match/storage/interface.rb', line 9 def working_directory @working_directory end |
Instance Method Details
#clear_changes ⇒ Object
Call this method to reset any changes made locally to the files
86 87 88 89 90 91 |
# File 'match/lib/match/storage/interface.rb', line 86 def clear_changes return unless @working_directory FileUtils.rm_rf(self.working_directory) self.working_directory = nil end |
#configure ⇒ Object
Call this method after creating a new object to configure the given Storage object. This method will take different paramters depending on specific class being used
22 23 24 |
# File 'match/lib/match/storage/interface.rb', line 22 def configure not_implemented(__method__) end |
#delete_files(files_to_delete: [], custom_message: nil) ⇒ Object
77 78 79 |
# File 'match/lib/match/storage/interface.rb', line 77 def delete_files(files_to_delete: [], custom_message: nil) not_implemented(__method__) end |
#download ⇒ Object
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
30 31 32 |
# File 'match/lib/match/storage/interface.rb', line 30 def download not_implemented(__method__) end |
#save_changes!(files_to_commit: nil, files_to_delete: nil, custom_message: nil) ⇒ Object
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
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'match/lib/match/storage/interface.rb', line 43 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.(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: ) elsif files_to_delete.count > 0 self.delete_files(files_to_delete: files_to_delete, custom_message: ) else UI.user_error!("Neither `files_to_commit` nor `files_to_delete` were provided to the `save_changes!` method call") end end end |
#skip_docs ⇒ Object
81 82 83 |
# File 'match/lib/match/storage/interface.rb', line 81 def skip_docs not_implemented(__method__) end |
#upload_files(files_to_upload: [], custom_message: nil) ⇒ Object
73 74 75 |
# File 'match/lib/match/storage/interface.rb', line 73 def upload_files(files_to_upload: [], custom_message: nil) not_implemented(__method__) end |