aboutsummaryrefslogtreecommitdiffstats
path: root/extras/scripts/check_commit_msg.sh
blob: 6869fbf6561064daad5bfca2ab4242722837ab99 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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
#/bin/env bash

KNOWN_FEATURES=$(cat MAINTAINERS | sed -ne 's/^I:[[:space:]]*//p')
FEATURES=$(git show -s --format=%s --no-color \
    | sed -ne 's/^\([a-z0-9_ -]*\):.*$/\1/p')
KNOWN_TYPES="feature fix refactor improvement style docs test make"
TYPE=$(git show -s --format=%b --no-color | sed -ne 's/^Type:[[:space:]]*//p')
ERR="=============================== ERROR ==============================="

# Chech that subject line contains at least one feature id
if [ $(echo ${FEATURES} | wc -w) -eq 0 ]; then
  echo $ERR
  echo "git commit 'Subject:' line must contain at least one known feature id."
  echo "feature id(s) must be listed before ':' and space delimited "
  echo "if more then one is listed."
  echo "Please refer to the MAINTAINERS file (I: lines) for known feature ids."
  echo $ERR
  exit 1
fi

# Check that feature ids in subject line are known
for i in ${FEATURES}; do
  is_known=false
  for j in ${KNOWN_FEATURES}; do
    [ "${i}" = "${j}" ] && is_known=true
  done
  if [ ${is_known} = "false" ] ; then
    echo $ERR
    echo "Unknown feature '${i}' in commit 'Subject:' line."
    echo "Feature must exist in MAINTAINERS file. If this commit introduces "
    echo "a new feature, then this commit must add an entry to the "
    echo "MAINTAINERS file."
    echo $ERR
    exit 1
  fi
done

# Check that Message body contains valid Type: entry
is_known=false
for i in ${KNOWN_TYPES}; do
  [ "${i}" = "${TYPE}" ] && is_known=true
done
if [ ${is_known} = "false" ] ; then
  echo $ERR
  echo "Unknown commit type '${TYPE}' in commit message body."
  echo "Commit message must contain known 'Type:' entry."
  echo "Known types are: ${KNOWN_TYPES}"
  echo $ERR
  exit 1
fi
echo "*******************************************************************"
echo "* VPP Commit Message Checkstyle Successfully Completed"
echo "*******************************************************************"