summaryrefslogtreecommitdiff
path: root/infra/nnfw/command/copyright-check
blob: 9401e69d3ef2460c460cd1b18326ad62ee51463b (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
54
55
#!/bin/bash

INVALID_EXIT=0

check_copyright_year() {
    DIRECTORIES_NOT_TO_BE_TESTED=$2
    YEAR=`date +"%Y"`
    CORRECT_COPYRIGHT="Copyright (c) $YEAR Samsung Electronics Co"
    FILE_EXT_TO_SEARCH="\.h$\|\.hpp$\|\.cc$\|\.cpp$\|\.cl$"

    # Check newly added files
    #this also includes files, that were moved here from another dir
    NEW_FILES_OF_SUBDIR_TO_CHECK=$(git whatchanged --diff-filter=A --since "01/01/2019"\
                                    --oneline --name-only --pretty=format: . | sort | uniq\
                                    | grep $FILE_EXT_TO_SEARCH)
    ARR=($NEW_FILES_OF_SUBDIR_TO_CHECK)
    for s in ${DIRECTORIES_NOT_TO_BE_TESTED[@]}; do
        if [[ $s = $TEST_DIR* ]]; then
            skip=${s#$TEST_DIR/}/
            ARR=(${ARR[*]//$skip*})
        fi
    done
    NEW_FILES_OF_SUBDIR_TO_CHECK=${ARR[*]}
    if [[ ${#NEW_FILES_OF_SUBDIR_TO_CHECK} -ne 0 ]]; then
        for f in $NEW_FILES_OF_SUBDIR_TO_CHECK; do
            [[ -f "$f" ]] || continue

            CREATED_YEAR=$(git log --follow --format=%aD $f | tail -1)
            [[ $CREATED_YEAR != *"$YEAR"* ]] && continue

            COPYRIGHT_YEAR=$(sed -rn  '0,/.*Copyright \(c\) ([^ ]+).*/ s//\1/p' $f)
            if [[ $COPYRIGHT_YEAR != $YEAR ]]; then
                [[ -z "$COPYRIGHT_YEAR" ]] && COPYRIGHT_YEAR="None"
                echo "Copyright year of $f is incorrect: expected $YEAR, found $COPYRIGHT_YEAR"
                INVALID_EXIT=1
            elif ! grep -q "$CORRECT_COPYRIGHT" $f; then
                echo "Copyright format of $f is incorrect: expected $CORRECT_COPYRIGHT"
                INVALID_EXIT=1
            fi
        done
    fi
}

DIRECTORIES_NOT_TO_BE_TESTED=()

for DIR_NOT_TO_BE_TESTED in $(find -name '.FORMATDENY' -exec dirname {} \;); do
    DIRECTORIES_NOT_TO_BE_TESTED+=("$DIR_NOT_TO_BE_TESTED")
done

check_copyright_year $DIRECTORIES_NOT_TO_BE_TESTED

if [[ $INVALID_EXIT -ne 0 ]]; then
    echo "[FAILED] Invalid copyright check exit."
    exit 1
fi