Sha256: 7be7adbe397a0e9f15db63b36d615f00e7f5b4ef05e72fed0dad016bb22d6dc7

Contents?: true

Size: 1.87 KB

Versions: 7

Compression:

Stored size: 1.87 KB

Contents

module Lolcommits
  class MercurialInfo
    def self.repo_root?(path = '.')
      File.directory?(File.join(path, '.hg'))
    end

    def self.local_name(path = '.')
      File.basename(File.dirname(Mercurial::Repository.open(path).dothg_path))
    end

    def initialize
      # mercurial sets HG_RESULT for post- hooks
      if ENV.key?('HG_RESULT') && ENV['HG_RESULT'] != '0'
        debug 'Aborting lolcommits hook from failed operation'
        exit 1
      end

      Mercurial.configure do |conf|
        conf.hg_binary_path = 'hg'
      end
      debug 'MercurialInfo: parsed the following values from commit:'
      debug "MercurialInfo: \t#{message}"
      debug "MercurialInfo: \t#{sha}"
      debug "MercurialInfo: \t#{repo_internal_path}"
      debug "MercurialInfo: \t#{repo}"
      debug "MercurialInfo: \t#{branch}"
      debug "MercurialInfo: \t#{commit_date}"
      debug "MercurialInfo: \t#{author_name}" if author_name
      debug "MercurialInfo: \t#{author_email}" if author_email
    end

    def branch
      @branch ||= last_commit.branch_name
    end

    def message
      @message ||= begin
        message = last_commit.message || ''
        message.split("\n").first
      end
    end

    def sha
      @sha ||= last_commit.id[0..10]
    end

    def repo_internal_path
      @repo_internal_path ||= repository.dothg_path
    end

    def url
      @url ||= repository.path
    end

    def repo
      @repo ||= File.basename(File.dirname(repo_internal_path))
    end

    def author_name
      @author_name ||= last_commit.author
    end

    def author_email
      @author_email ||= last_commit.author_email
    end

    def commit_date
      @commit_date ||= last_commit.date.utc
    end

    private

    def repository(path = '.')
      @repository ||= Mercurial::Repository.open(path)
    end

    def last_commit
      @commit ||= repository.commits.parent
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lolcommits-0.11.0 lib/lolcommits/backends/mercurial_info.rb
lolcommits-0.11.0.pre lib/lolcommits/backends/mercurial_info.rb
lolcommits-0.10.0 lib/lolcommits/backends/mercurial_info.rb
lolcommits-0.10.0.pre1 lib/lolcommits/backends/mercurial_info.rb
lolcommits-0.9.8 lib/lolcommits/backends/mercurial_info.rb
lolcommits-0.9.7 lib/lolcommits/backends/mercurial_info.rb
lolcommits-0.9.7.pre1 lib/lolcommits/backends/mercurial_info.rb