Module: RHC::GitHelpers
- Included in:
- Commands::App, Commands::GitClone, ContextHelpers, Wizard
- Defined in:
- lib/rhc/git_helpers.rb
Instance Method Summary collapse
- #git_clone_application(app) ⇒ Object
- #git_clone_deploy_hooks(repo_dir) ⇒ Object
-
#git_clone_repo(git_url, repo_dir) ⇒ Object
:nocov:.
-
#git_config_get(key) ⇒ Object
:nocov: These all call external binaries so test them in cucumber.
- #git_config_set(key, value) ⇒ Object
- #git_version ⇒ Object
- #has_git? ⇒ Boolean
Instance Method Details
#git_clone_application(app) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rhc/git_helpers.rb', line 29 def git_clone_application(app) repo_dir = .repo || app.name debug "Pulling new repo down" dir = git_clone_repo(app.git_url, repo_dir) debug "Configuring git repo" Dir.chdir(repo_dir) do git_config_set "pbox.app-id", app.id git_config_set "pbox.app-name", app.name git_config_set "pbox.domain-name", app.domain_id end git_clone_deploy_hooks(repo_dir) dir end |
#git_clone_deploy_hooks(repo_dir) ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/rhc/git_helpers.rb', line 20 def git_clone_deploy_hooks(repo_dir) debug "Deploy default hooks" Dir.chdir(repo_dir) do |dir| Dir.glob(".protonbox/git_hooks/*") do |hook| FileUtils.cp(hook, ".git/hooks/") end end end |
#git_clone_repo(git_url, repo_dir) ⇒ Object
:nocov:
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/rhc/git_helpers.rb', line 70 def git_clone_repo(git_url, repo_dir) # quote the repo to avoid input injection risk destination = (repo_dir ? " \"#{repo_dir}\"" : "") cmd = "git clone #{git_url}#{destination}" debug "Running #{cmd}" status, stdout, stderr = run_with_tee(cmd) if status != 0 case stderr when /fatal: destination path '[^']*' already exists and is not an empty directory./ raise RHC::GitDirectoryExists, "The directory you are cloning into already exists." when /^Permission denied \(.*?publickey.*?\).$/ raise RHC::GitPermissionDenied, "You don't have permission to access this repository. Check that your SSH public keys are correct." else raise RHC::GitException, "Unable to clone your repository. Called Git with: #{cmd}" end end File.(repo_dir) end |
#git_config_get(key) ⇒ Object
:nocov: These all call external binaries so test them in cucumber
48 49 50 51 52 53 54 55 |
# File 'lib/rhc/git_helpers.rb', line 48 def git_config_get(key) config_get_cmd = "git config --get #{key}" value = %x[#{config_get_cmd}].strip debug "Git config '#{config_get_cmd}' returned '#{value}'" value = nil if $?.exitstatus != 0 or value.empty? value end |
#git_config_set(key, value) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/rhc/git_helpers.rb', line 57 def git_config_set(key, value) unset_cmd = "git config --unset-all #{key}" config_cmd = "git config --add #{key} #{value}" debug "Adding #{key} = #{value} to git config" commands = [unset_cmd, config_cmd] commands.each do |cmd| debug "Running #{cmd} 2>&1" output = %x[#{cmd} 2>&1] raise RHC::GitException, "Error while adding config values to git - #{output}" unless output.empty? end end |
#git_version ⇒ Object
6 7 8 |
# File 'lib/rhc/git_helpers.rb', line 6 def git_version @git_version ||= `git --version 2>&1`.strip #:nocov: end |
#has_git? ⇒ Boolean
10 11 12 13 14 15 16 17 18 |
# File 'lib/rhc/git_helpers.rb', line 10 def has_git? @has_git ||= begin @git_version = nil git_version $?.success? rescue false end end |