Class: Danger::LocalGitRepo
- Defined in:
- lib/danger/ci_source/local_git_repo.rb
Overview
ignore
Instance Attribute Summary collapse
-
#base_commit ⇒ Object
Returns the value of attribute base_commit.
-
#head_commit ⇒ Object
Returns the value of attribute head_commit.
Attributes inherited from CI
#pull_request_id, #repo_slug, #repo_url
Class Method Summary collapse
Instance Method Summary collapse
- #git ⇒ Object
-
#initialize(env = {}) ⇒ LocalGitRepo
constructor
A new instance of LocalGitRepo.
- #run_git(command) ⇒ Object
- #supported_request_sources ⇒ Object
Methods inherited from CI
available_ci_sources, inherited, #supports?, validates_as_pr?
Constructor Details
#initialize(env = {}) ⇒ LocalGitRepo
Returns a new instance of LocalGitRepo.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/danger/ci_source/local_git_repo.rb', line 27 def initialize(env = {}) github_host = env["DANGER_GITHUB_HOST"] || "github.com" # get the remote URL remote = run_git("remote show origin -n").lines.grep(/Fetch URL/)[0].split(": ", 2)[1] if remote remote_url_matches = remote.match(%r{#{Regexp.escape github_host}(:|/)(?<repo_slug>.+/.+?)(?:\.git)?$}) if !remote_url_matches.nil? and remote_url_matches["repo_slug"] self.repo_slug = remote_url_matches["repo_slug"] else puts "Danger local requires a repository hosted on GitHub.com or GitHub Enterprise." end end specific_pr = env["LOCAL_GIT_PR_ID"] pr_ref = specific_pr ? "##{specific_pr}" : "" pr_command = "log --merges --oneline" # get the most recent PR merge pr_merge = run_git(pr_command.strip).lines.grep(Regexp.new("Merge pull request " + pr_ref))[0] if pr_merge.to_s.empty? if specific_pr raise "Could not find the pull request (#{specific_pr}) inside the git history for this repo." else raise "No recent pull requests found for this repo, danger requires at least one PR for the local mode." end end self.pull_request_id = pr_merge.match("#([0-9]+)")[1] sha = pr_merge.split(" ")[0] parents = run_git("rev-list --parents -n 1 #{sha}").strip.split(" ") self.base_commit = parents[0] self.head_commit = parents[1] end |
Instance Attribute Details
#base_commit ⇒ Object
Returns the value of attribute base_commit.
9 10 11 |
# File 'lib/danger/ci_source/local_git_repo.rb', line 9 def base_commit @base_commit end |
#head_commit ⇒ Object
Returns the value of attribute head_commit.
9 10 11 |
# File 'lib/danger/ci_source/local_git_repo.rb', line 9 def head_commit @head_commit end |
Class Method Details
.validates_as_ci?(env) ⇒ Boolean
11 12 13 |
# File 'lib/danger/ci_source/local_git_repo.rb', line 11 def self.validates_as_ci?(env) env.key? "DANGER_USE_LOCAL_GIT" end |
Instance Method Details
#git ⇒ Object
15 16 17 |
# File 'lib/danger/ci_source/local_git_repo.rb', line 15 def git @git ||= GitRepo.new end |
#run_git(command) ⇒ Object
19 20 21 |
# File 'lib/danger/ci_source/local_git_repo.rb', line 19 def run_git(command) git.exec command end |
#supported_request_sources ⇒ Object
23 24 25 |
# File 'lib/danger/ci_source/local_git_repo.rb', line 23 def supported_request_sources @supported_request_sources ||= [Danger::RequestSources::GitHub] end |