class Fastlane::Cryptex::GitHelper
Public Class Methods
branch_exists?(branch)
click to toggle source
Checks if a specific branch exists in the git repo
# File lib/fastlane/plugin/cryptex/git_helper.rb, line 111 def self.branch_exists?(branch) return unless @dir result = Dir.chdir(@dir) do FastlaneCore::CommandExecutor.execute(command: "git branch --list origin/#{branch.shellescape} --no-color -r", print_all: $verbose, print_command: $verbose) end return !result.empty? end
checkout_branch(branch)
click to toggle source
Create and checkout an specific branch in the git repo
# File lib/fastlane/plugin/cryptex/git_helper.rb, line 85 def self.checkout_branch(branch) return unless @dir commands = [] if branch_exists?(branch) # Checkout the branch if it already exists commands << "git checkout #{branch.shellescape}" else # If a new branch is being created, we create it as an 'orphan' to not inherit changes from the master branch. commands << "git checkout --orphan #{branch.shellescape}" # We also need to reset the working directory to not transfer any uncommitted changes to the new branch. commands << "git reset --hard" end UI.message "Checking out branch #{branch}..." Dir.chdir(@dir) do commands.each do |command| FastlaneCore::CommandExecutor.execute(command: command, print_all: $verbose, print_command: $verbose) end end end
clear_changes()
click to toggle source
# File lib/fastlane/plugin/cryptex/git_helper.rb, line 76 def self.clear_changes return unless @dir FileUtils.rm_rf(@dir) UI.success "🔒 Successfully encrypted certificates repo" # so the user is happy @dir = nil end
clone(git_url, shallow_clone, manual_password: nil, skip_docs: false, branch: "master", digest: nil)
click to toggle source
# File lib/fastlane/plugin/cryptex/git_helper.rb, line 4 def self.clone(git_url, shallow_clone, manual_password: nil, skip_docs: false, branch: "master", digest: nil) return @dir if @dir @dir = Dir.mktmpdir command = "git clone '#{git_url}' '#{@dir}'" command << " --depth 1" if shallow_clone UI.message "Cloning remote git repo..." begin FastlaneCore::CommandExecutor.execute(command: "GIT_TERMINAL_PROMPT=0 #{command}", print_all: $verbose, print_command: $verbose) rescue StandardError UI.error("Error cloning Repo") UI.error("Run the following command manually to make sure you're properly authenticated:") UI.command(command) UI.user_error!("Error cloning cryptex git repo, please make sure you have access to the repository - see instructions above") end UI.user_error!("Error cloning repo, make sure you have access to it '#{git_url}'") unless File.directory?(@dir) checkout_branch(branch) unless branch == "master" copy_readme(@dir) unless skip_docs Cryptex::Encrypt.new.decrypt_repo(path: @dir, git_url: git_url, manual_password: manual_password, digest: digest) return @dir end
commit_changes(path, message, git_url, branch = "master", digest: nil)
click to toggle source
# File lib/fastlane/plugin/cryptex/git_helper.rb, line 49 def self.commit_changes(path, message, git_url, branch = "master", digest: nil) Dir.chdir(path) do return if `git status`.include?("nothing to commit") Cryptex::Encrypt.new.encrypt_repo(path: path, git_url: git_url, digest: digest) File.write("cryptex_version.txt", Cryptex::VERSION) # unencrypted commands = [] commands << "git add -A" commands << "git commit -m #{message.shellescape}" commands << "GIT_TERMINAL_PROMPT=0 git push origin #{branch.shellescape}" UI.message "Pushing changes to remote git repo..." commands.each do |command| FastlaneCore::CommandExecutor.execute(command: command, print_all: $verbose, print_command: $verbose) end end FileUtils.rm_rf(path) @dir = nil rescue StandardError => ex UI.error("Couldn't commit or push changes back to git...") UI.error(ex) end
copy_readme(directory)
click to toggle source
Copies the README.md into the git repo
# File lib/fastlane/plugin/cryptex/git_helper.rb, line 123 def self.copy_readme(directory) template = File.read("#{Cryptex::ROOT}/assets/READMETemplate.md") File.write(File.join(directory, "README.md"), template) end
cryptex_version(workspace)
click to toggle source
# File lib/fastlane/plugin/cryptex/git_helper.rb, line 42 def self.cryptex_version(workspace) path = File.join(workspace, "cryptex_version.txt") if File.exist?(path) Gem::Version.new(File.read(path)) end end
generate_commit_message(params)
click to toggle source
# File lib/fastlane/plugin/cryptex/git_helper.rb, line 34 def self.generate_commit_message(params) # 'Automatic commit via fastlane' [ "[fastlane]", "Updated" ].join(" ") end