Sha256: f50f864ad0d397dd061ccac588506bb1ebec9b93225be07bfbc7ddf49235b5c7

Contents?: true

Size: 1.6 KB

Versions: 6

Compression:

Stored size: 1.6 KB

Contents

module CodeClimate
  module TestReporter
    class Git

      class << self
        def info
          {
            head:         head,
            committed_at: committed_at,
            branch:       branch_from_git,
          }
        end

        def branch_from_git_or_ci
          clean_service_branch || clean_git_branch || "master"
        end

        def clean_service_branch
          ci_branch = String(Ci.service_data[:branch])
          clean = ci_branch.strip.sub(/^origin\//, "")

          clean.size > 0 ? clean : nil
        end

        def clean_git_branch
          git_branch = String(branch_from_git)
          clean = git_branch.sub(/^origin\//, "") unless git_branch.start_with?("(")

          clean.size > 0 ? clean : nil
        end

        private

        def head
          git("log -1 --pretty=format:'%H'")
        end

        def committed_at
          committed_at = git('log -1 --pretty=format:%ct')
          committed_at.to_i.zero? ? nil : committed_at.to_i
        end

        def branch_from_git
          git('rev-parse --abbrev-ref HEAD').chomp
        end

        def git(command)
          `git --git-dir=#{git_dir}/.git #{command}`
        end

        def git_dir
          return configured_git_dir unless configured_git_dir.nil?
          rails_git_dir_present? ? Rails.root : '.'
        end

        def configured_git_dir
          CodeClimate::TestReporter.configuration.git_dir
        end

        def rails_git_dir_present?
          defined?(Rails) && !Rails.root.nil? &&
            File.directory?(File.expand_path('.git', Rails.root))
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
construi-0.6.0 vendor/bundle/ruby/1.9.1/gems/codeclimate-test-reporter-0.4.6/lib/code_climate/test_reporter/git.rb
construi-0.5.0 vendor/bundle/ruby/1.9.1/gems/codeclimate-test-reporter-0.4.6/lib/code_climate/test_reporter/git.rb
construi-0.4.0 vendor/bundle/ruby/1.9.1/gems/codeclimate-test-reporter-0.4.6/lib/code_climate/test_reporter/git.rb
construi-0.2.0 vendor/bundle/ruby/1.9.1/gems/codeclimate-test-reporter-0.4.6/lib/code_climate/test_reporter/git.rb
construi-0.1.0 vendor/bundle/ruby/1.9.1/gems/codeclimate-test-reporter-0.4.6/lib/code_climate/test_reporter/git.rb
codeclimate-test-reporter-0.4.6 lib/code_climate/test_reporter/git.rb