class Danger::LocalGitRepo
Attributes
Public Class Methods
Source
# File lib/danger/ci_source/local_git_repo.rb, line 45 def initialize(env = {}) @remote_info = find_remote_info(env) @found_pull_request = find_pull_request(env) self.repo_slug = remote_info.slug raise_error_for_missing_remote if remote_info.kind_of?(NoRepoInfo) self.pull_request_id = found_pull_request.pull_request_id if sha self.base_commit = commits.base self.head_commit = commits.head else self.base_commit = found_pull_request.base self.head_commit = found_pull_request.head end end
Source
# File lib/danger/ci_source/local_git_repo.rb, line 20 def self.validates_as_ci?(env) env.key? "DANGER_USE_LOCAL_GIT" end
Source
# File lib/danger/ci_source/local_git_repo.rb, line 24 def self.validates_as_pr?(_env) false end
Public Instance Methods
Source
# File lib/danger/ci_source/local_git_repo.rb, line 28 def git @git ||= GitRepo.new end
Source
# File lib/danger/ci_source/local_git_repo.rb, line 32 def run_git(command) git.exec(command).encode("UTF-8", "binary", invalid: :replace, undef: :replace, replace: "") end
Source
# File lib/danger/ci_source/local_git_repo.rb, line 36 def supported_request_sources @supported_request_sources ||= [ Danger::RequestSources::GitHub, Danger::RequestSources::BitbucketServer, Danger::RequestSources::BitbucketCloud, Danger::RequestSources::VSTS ] end
Private Instance Methods
Source
# File lib/danger/ci_source/local_git_repo.rb, line 112 def commits @_commits ||= Commits.new(run_git("rev-list --parents -n 1 #{sha}")) end
Source
# File lib/danger/ci_source/local_git_repo.rb, line 86 def find_pull_request(env) if given_pull_request_url?(env) PullRequestFinder.new( remote_info.id, remote_info.slug, remote: true, remote_url: env["LOCAL_GIT_PR_URL"] ).call(env: env) else PullRequestFinder.new( env.fetch("LOCAL_GIT_PR_ID") { "" }, remote_info.slug, remote: false, git_logs: run_git("log --oneline -1000000") ).call(env: env) end end
Source
# File lib/danger/ci_source/local_git_repo.rb, line 75 def find_remote_info(env) if given_pull_request_url?(env) FindRepoInfoFromURL.new(env["LOCAL_GIT_PR_URL"]).call else FindRepoInfoFromLogs.new( env["DANGER_GITHUB_HOST"] || "github.com", run_git("remote show origin -n") ).call end || NoRepoInfo.new end
Source
# File lib/danger/ci_source/local_git_repo.rb, line 104 def given_pull_request_url?(env) env["LOCAL_GIT_PR_URL"] && !env["LOCAL_GIT_PR_URL"].empty? end
Source
# File lib/danger/ci_source/local_git_repo.rb, line 70 def missing_remote_error_message "danger cannot find your git remote, please set a remote. " \ "And the repository must host on GitHub.com or GitHub Enterprise." end
Source
# File lib/danger/ci_source/local_git_repo.rb, line 66 def raise_error_for_missing_remote raise missing_remote_error_message end
Source
# File lib/danger/ci_source/local_git_repo.rb, line 108 def sha @_sha ||= found_pull_request.sha end