Sha256: bae9f528a862f72e6145cbcd0031c4b3f2a2c0240668bbcf04c112a66fd60d58

Contents?: true

Size: 1.57 KB

Versions: 3

Compression:

Stored size: 1.57 KB

Contents

namespace :commit_msg do
  def check_msg_for_ekohe_format?(commit_msg_arr)
    def_ekohe_msg_summary_reg = /^(FEATURE|BUG|MISC|REFACTOR)(\s#\d+)* - ([A-Z].*)[^.]$/
    def_ekohe_msg_format = 'FEAUTER|BUG|MISC|REFACTOR #issue_num - Summary'
    def_ekohe_body_reg = /^- ([a-z].*)[^.]$/
    def_ekohe_body_format = '- detail'

    summary = commit_msg_arr[0] || ''
    second_line = commit_msg_arr[1] || ''
    body = commit_msg_arr[2..-1] || []

    valid = summary.start_with?('Merge branch') || def_ekohe_msg_summary_reg.match(summary)
    unless valid
      puts "Commit message summary \"#{summary}\" format isn't correct."
      puts "Expected format: \"#{def_ekohe_msg_format}\""
      return false
    end

    valid = second_line.strip.empty?
    unless valid
      puts 'Commit message the first line after summary should be blank.'
      return false
    end

    body.each do |line|
      next if def_ekohe_body_reg.match(line)
      puts "Commit message body line \"#{line}\" format isn't correct."
      puts "Expected format: \"#{def_ekohe_body_format}\""
      return false
    end
    true
  end

  desc 'Check commit msg style for ekohe format'
  task :check_msg_for_ekohe_format do |t|
    Githook::Util.log_task(t.name)

    commit_msg_file = Githook::Util.commit_msg_file
    commit_msg = Githook::Util.get_commit_msg(commit_msg_file)
    puts 'commit-msg:'
    puts commit_msg.join("\n")

    # can't use return in block
    # can't "exit 0" in advance, else will abort later tasks
    # but we can "exit 1" in advance
    exit 1 unless check_msg_for_ekohe_format?(commit_msg)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
git-hook-0.2.1 lib/githook/tasks/3-commit-msg.rake
git-hook-0.2.0 lib/githook/tasks/3-commit-msg.rake
git-hook-0.1.9 lib/githook/tasks/3-commit-msg.rake