xref: /aosp_15_r20/external/vulkan-validation-layers/scripts/check_code_format.sh (revision b7893ccf7851cd6a48cc5a1e965257d8a5cdcc70)
1*b7893ccfSSadaf Ebrahimi#!/bin/bash
2*b7893ccfSSadaf Ebrahimi# Copyright (c) 2017-2019 Google Inc.
3*b7893ccfSSadaf Ebrahimi# Copyright (c) 2019 LunarG, Inc.
4*b7893ccfSSadaf Ebrahimi
5*b7893ccfSSadaf Ebrahimi# Licensed under the Apache License, Version 2.0 (the "License");
6*b7893ccfSSadaf Ebrahimi# you may not use this file except in compliance with the License.
7*b7893ccfSSadaf Ebrahimi# You may obtain a copy of the License at
8*b7893ccfSSadaf Ebrahimi#
9*b7893ccfSSadaf Ebrahimi#     http://www.apache.org/licenses/LICENSE-2.0
10*b7893ccfSSadaf Ebrahimi#
11*b7893ccfSSadaf Ebrahimi# Unless required by applicable law or agreed to in writing, software
12*b7893ccfSSadaf Ebrahimi# distributed under the License is distributed on an "AS IS" BASIS,
13*b7893ccfSSadaf Ebrahimi# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*b7893ccfSSadaf Ebrahimi# See the License for the specific language governing permissions and
15*b7893ccfSSadaf Ebrahimi# limitations under the License.
16*b7893ccfSSadaf Ebrahimi#
17*b7893ccfSSadaf Ebrahimi# Script to determine if source code in Pull Request is properly formatted.
18*b7893ccfSSadaf Ebrahimi# Exits with non 0 exit code if formatting is needed.
19*b7893ccfSSadaf Ebrahimi#
20*b7893ccfSSadaf Ebrahimi# This script assumes to be invoked at the project root directory.
21*b7893ccfSSadaf Ebrahimi
22*b7893ccfSSadaf EbrahimiRED='\033[0;31m'
23*b7893ccfSSadaf EbrahimiGREEN='\033[0;32m'
24*b7893ccfSSadaf EbrahimiNC='\033[0m' # No Color
25*b7893ccfSSadaf EbrahimiFOUND_ERROR=0
26*b7893ccfSSadaf Ebrahimi
27*b7893ccfSSadaf EbrahimiFILES_TO_CHECK=$(git diff --name-only master | grep -v -E "^include/vulkan" | grep -E ".*\.(cpp|cc|c\+\+|cxx|c|h|hpp)$")
28*b7893ccfSSadaf EbrahimiCOPYRIGHTED_FILES_TO_CHECK=$(git diff --name-only master | grep -v -E "^include/vulkan")
29*b7893ccfSSadaf Ebrahimi
30*b7893ccfSSadaf Ebrahimiif [ -z "${FILES_TO_CHECK}" ]; then
31*b7893ccfSSadaf Ebrahimi  echo -e "${GREEN}No source code to check for formatting.${NC}"
32*b7893ccfSSadaf Ebrahimielse
33*b7893ccfSSadaf Ebrahimi  # Check source files in PR for clang-format errors
34*b7893ccfSSadaf Ebrahimi  FORMAT_DIFF=$(git diff -U0 master -- ${FILES_TO_CHECK} | python ./scripts/clang-format-diff.py -p1 -style=file)
35*b7893ccfSSadaf Ebrahimi
36*b7893ccfSSadaf Ebrahimi  if [ ! -z "${FORMAT_DIFF}" ]; then
37*b7893ccfSSadaf Ebrahimi    echo -e "${RED}Found formatting errors!${NC}"
38*b7893ccfSSadaf Ebrahimi    echo "${FORMAT_DIFF}"
39*b7893ccfSSadaf Ebrahimi    FOUND_ERROR=1
40*b7893ccfSSadaf Ebrahimi  fi
41*b7893ccfSSadaf Ebrahimi
42*b7893ccfSSadaf Ebrahimi  # Check files in PR out-of-date copyright notices
43*b7893ccfSSadaf Ebrahimi  if [ -z "${COPYRIGHTED_FILES_TO_CHECK}" ]; then
44*b7893ccfSSadaf Ebrahimi    echo -e "${GREEN}No source code to check for copyright dates.${NC}"
45*b7893ccfSSadaf Ebrahimi  else
46*b7893ccfSSadaf Ebrahimi    THISYEAR=$(date +"%Y")
47*b7893ccfSSadaf Ebrahimi    # Look for current year in copyright lines
48*b7893ccfSSadaf Ebrahimi    for AFILE in ${COPYRIGHTED_FILES_TO_CHECK}
49*b7893ccfSSadaf Ebrahimi    do
50*b7893ccfSSadaf Ebrahimi      COPYRIGHT_INFO=$(cat ${AFILE} | grep -E "Copyright (.)*LunarG")
51*b7893ccfSSadaf Ebrahimi      if [ ! -z "${COPYRIGHT_INFO}" ]; then
52*b7893ccfSSadaf Ebrahimi        if ! echo "$COPYRIGHT_INFO" | grep -q "$THISYEAR" ; then
53*b7893ccfSSadaf Ebrahimi          echo -e "${RED} "$AFILE" has an out-of-date copyright notice.${NC}"
54*b7893ccfSSadaf Ebrahimi          FOUND_ERROR=1
55*b7893ccfSSadaf Ebrahimi        fi
56*b7893ccfSSadaf Ebrahimi      fi
57*b7893ccfSSadaf Ebrahimi    done
58*b7893ccfSSadaf Ebrahimi  fi
59*b7893ccfSSadaf Ebrahimifi
60*b7893ccfSSadaf Ebrahimi
61*b7893ccfSSadaf Ebrahimiif [ $FOUND_ERROR  -gt 0 ]; then
62*b7893ccfSSadaf Ebrahimi  exit 1
63*b7893ccfSSadaf Ebrahimielse
64*b7893ccfSSadaf Ebrahimi  echo -e "${GREEN}All source code in PR properly formatted.${NC}"
65*b7893ccfSSadaf Ebrahimi  exit 0
66*b7893ccfSSadaf Ebrahimifi
67