#!/bin/bash
#
#  Copyright (c) 2019, The OpenThread Authors.
#  All rights reserved.
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions are met:
#  1. Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
#  2. Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#  3. Neither the name of the copyright holder nor the
#     names of its contributors may be used to endorse or promote products
#     derived from this software without specific prior written permission.
#
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#  POSSIBILITY OF SUCH DAMAGE.
#

#
# The script to check or format source code of OpenThread.
#
# Format c/c++, markdown, python, and shell:
#
#     script/make-pretty
#
# Format c/c++ only:
#
#     script/make-pretty clang
#     script/make-pretty clang-format
#     script/make-pretty clang-tidy
#
# Format markdown only:
#
#     script/make-pretty markdown
#
# Format python only:
#
#     script/make-pretty python
#
# Format shell only:
#
#     script/make-pretty shell
#
# Check only:
#
#     script/make-pretty check clang
#     script/make-pretty check clang-format
#     script/make-pretty check clang-tidy
#     script/make-pretty check markdown
#     script/make-pretty check python
#     script/make-pretty check shell
#

set -euo pipefail

OT_BUILD_JOBS=$(getconf _NPROCESSORS_ONLN)
readonly OT_BUILD_JOBS

OT_EXCLUDE_DIRS=(third_party doc/site)
readonly OT_EXCLUDE_DIRS

OT_CLANG_SOURCES=('*.c' '*.cc' '*.cpp' '*.h' '*.hpp')
readonly OT_CLANG_SOURCES

OT_MARKDOWN_SOURCES=('*.md')
readonly OT_MARKDOWN_SOURCES

OT_PYTHON_SOURCES=('*.py')
readonly OT_PYTHON_SOURCES

OT_CLANG_TIDY_FIX_DIRS=('examples' 'include' 'src' 'tests')
readonly OT_CLANG_TIDY_FIX_DIRS

OT_CLANG_TIDY_BUILD_OPTS=(
    '-DCMAKE_EXPORT_COMPILE_COMMANDS=ON'
    '-DOT_ANYCAST_LOCATOR=ON'
    '-DOT_APP_RCP=OFF'
    '-DOT_MTD=OFF'
    '-DOT_RCP=OFF'
    '-DOT_PLATFORM=simulation'
    '-DOT_BACKBONE_ROUTER=ON'
    '-DOT_BORDER_AGENT=ON'
    '-DOT_BORDER_ROUTER=ON'
    '-DOT_BORDER_ROUTING=ON'
    '-DOT_CHANNEL_MANAGER=ON'
    '-DOT_CHANNEL_MONITOR=ON'
    '-DOT_COAP=ON'
    '-DOT_COAP_BLOCK=ON'
    '-DOT_COAP_OBSERVE=ON'
    '-DOT_COAPS=ON'
    '-DOT_COMMISSIONER=ON'
    '-DOT_CSL_RECEIVER=ON'
    '-DOT_DATASET_UPDATER=ON'
    '-DOT_DHCP6_CLIENT=ON'
    '-DOT_DHCP6_SERVER=ON'
    '-DOT_DIAGNOSTIC=ON'
    '-DOT_DNS_CLIENT=ON'
    '-DOT_DNS_DSO=ON'
    '-DOT_DNS_UPSTREAM_QUERY=ON'
    '-DOT_DNSSD_SERVER=ON'
    '-DOT_DUA=ON'
    '-DOT_MLR=ON'
    '-DOT_ECDSA=ON'
    '-DOT_HISTORY_TRACKER=ON'
    '-DOT_IP6_FRAGM=ON'
    '-DOT_JAM_DETECTION=ON'
    '-DOT_JOINER=ON'
    '-DOT_LINK_RAW=ON'
    '-DOT_LINK_METRICS_INITIATOR=ON'
    '-DOT_LINK_METRICS_SUBJECT=ON'
    '-DOT_MAC_FILTER=ON'
    '-DOT_MESH_DIAG=ON'
    '-DOT_NAT64_BORDER_ROUTING=ON'
    '-DOT_NAT64_TRANSLATOR=ON'
    '-DOT_NETDATA_PUBLISHER=ON'
    '-DOT_NETDIAG_CLIENT=ON'
    '-DOT_PING_SENDER=ON'
    '-DOT_REFERENCE_DEVICE=ON'
    '-DOT_SERVICE=ON'
    '-DOT_SLAAC=ON'
    '-DOT_SNTP_CLIENT=ON'
    '-DOT_SRP_CLIENT=ON'
    '-DOT_SRP_SERVER=ON'
    '-DOT_THREAD_VERSION=1.3'
    '-DOT_TREL=ON'
    '-DOT_COVERAGE=ON'
    '-DOT_LOG_LEVEL_DYNAMIC=ON'
    '-DOT_COMPILE_WARNING_AS_ERROR=ON'
    '-DOT_UPTIME=ON'
)
readonly OT_CLANG_TIDY_BUILD_OPTS

OT_CLANG_TIDY_CHECKS="\
-*,\
google-explicit-constructor,\
google-readability-casting,\
misc-unused-using-decls,\
modernize-loop-convert,\
modernize-use-bool-literals,\
modernize-use-equals-default,\
modernize-use-equals-delete,\
modernize-use-nullptr,\
readability-avoid-const-params-in-decls,\
readability-else-after-return,\
readability-inconsistent-declaration-parameter-name,\
readability-make-member-function-const,\
readability-redundant-control-flow,\
readability-redundant-member-init,\
readability-simplify-boolean-expr,\
readability-static-accessed-through-instance,\
"
readonly OT_CLANG_TIDY_CHECKS

do_clang_format()
{
    echo -e '========================================'
    echo -e '     format c/c++ (clang-format)'
    echo -e '========================================'

    git ls-files "${OT_CLANG_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
        | xargs -n3 -P"$OT_BUILD_JOBS" script/clang-format -style=file -i -verbose
}

do_clang_format_check()
{
    echo -e '========================================'
    echo -e '     check c/c++ (clang-format)'
    echo -e '========================================'

    git ls-files "${OT_CLANG_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
        | xargs -n3 -P"$OT_BUILD_JOBS" script/clang-format-check
}

do_clang_tidy_fix()
{
    echo -e '========================================'
    echo -e '     format c/c++ (clang-tidy)'
    echo -e '========================================'

    (mkdir -p ./build/cmake-tidy \
        && cd ./build/cmake-tidy \
        && THREAD_VERSION=1.3 cmake "${OT_CLANG_TIDY_BUILD_OPTS[@]}" ../.. \
        && ../../script/clang-tidy -header-filter='.*' -checks="${OT_CLANG_TIDY_CHECKS}" -j"$OT_BUILD_JOBS" "${OT_CLANG_TIDY_FIX_DIRS[@]}" -fix)
}

do_clang_tidy_check()
{
    echo -e '========================================'
    echo -e '     check c/c++ (clang-tidy)'
    echo -e '========================================'

    (
        mkdir -p ./build/cmake-tidy \
            && cd ./build/cmake-tidy \
            && THREAD_VERSION=1.3 cmake "${OT_CLANG_TIDY_BUILD_OPTS[@]}" ../.. \
            && ../../script/clang-tidy -header-filter='.*' -checks="${OT_CLANG_TIDY_CHECKS}" -j"$OT_BUILD_JOBS" "${OT_CLANG_TIDY_FIX_DIRS[@]}" \
            | grep -v -E "third_party" >output.txt
        if grep -q "warning: \|error: " output.txt; then
            echo "You must pass the clang tidy checks before submitting a pull request"
            echo ""
            grep --color -E 'warning: |error: ' -A 5 output.txt
            exit 1
        fi
    )
}

do_markdown_format()
{
    echo -e '========================================'
    echo -e '     format markdown'
    echo -e '========================================'

    git ls-files "${OT_MARKDOWN_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
        | xargs -n10 -P"$OT_BUILD_JOBS" npx prettier@2.0.4 --write
}

do_markdown_check()
{
    echo -e '========================================'
    echo -e '     check markdown'
    echo -e '========================================'

    git ls-files "${OT_MARKDOWN_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
        | xargs -n10 -P"$OT_BUILD_JOBS" npx prettier@2.0.4 --check
}

do_python_format()
{
    echo -e '========================================'
    echo -e '     format python'
    echo -e '========================================'

    git ls-files "${OT_PYTHON_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
        | xargs -n10 -P"$OT_BUILD_JOBS" python3 -m yapf --verbose --style '{based_on_style: google, column_limit: 119}' -ipr
}

do_python_check()
{
    echo -e '========================================'
    echo -e '     check python'
    echo -e '========================================'

    git ls-files "${OT_PYTHON_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
        | xargs -n10 -P"$OT_BUILD_JOBS" python3 -m yapf --verbose --style '{based_on_style: google, column_limit: 119}' -dpr
}

do_shell_format()
{
    echo -e '========================================'
    echo -e '     format shell'
    echo -e '========================================'

    git ls-files | xargs shfmt -f | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
        | xargs -n10 -P"$OT_BUILD_JOBS" shfmt -i 4 -bn -ci -fn -s -w
}

do_shell_check()
{
    echo -e '========================================'
    echo -e '     check shell'
    echo -e '========================================'

    git ls-files | xargs shfmt -f | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
        | xargs -n10 -P"$OT_BUILD_JOBS" shfmt -i 4 -bn -ci -fn -s -d

    git ls-files | xargs shfmt -f | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
        | xargs -n10 -P"$OT_BUILD_JOBS" shellcheck
}

do_check()
{
    if [ $# == 0 ]; then
        do_clang_format_check
        do_clang_tidy_check
        do_markdown_check
        do_python_check
        do_shell_check
    elif [ "$1" == 'clang' ]; then
        do_clang_format_check
        do_clang_tidy_check
    elif [ "$1" == 'clang-format' ]; then
        do_clang_format_check
    elif [ "$1" == 'clang-tidy' ]; then
        do_clang_tidy_check
    elif [ "$1" == 'markdown' ]; then
        do_markdown_check
    elif [ "$1" == 'python' ]; then
        do_python_check
    elif [ "$1" == 'shell' ]; then
        do_shell_check
    else
        echo >&2 "Unsupported check: $1. Supported: clang, markdown, python, shell"
        # 128 for Invalid arguments
        exit 128
    fi
}

main()
{
    if [ $# == 0 ]; then
        do_clang_tidy_fix
        do_clang_format
        do_markdown_format
        do_python_format
        do_shell_format
    elif [ "$1" == 'clang' ]; then
        do_clang_tidy_fix
        do_clang_format
    elif [ "$1" == 'clang-format' ]; then
        do_clang_format
    elif [ "$1" == 'clang-tidy' ]; then
        do_clang_tidy_fix
    elif [ "$1" == 'markdown' ]; then
        do_markdown_format
    elif [ "$1" == 'python' ]; then
        do_python_format
    elif [ "$1" == 'shell' ]; then
        do_shell_format
    elif [ "$1" == 'check' ]; then
        shift
        do_check "$@"
    else
        echo >&2 "Unsupported action: $1. Supported: clang, markdown, python, shell"
        # 128 for Invalid arguments
        exit 128
    fi

}

main "$@"
