summaryrefslogtreecommitdiff
path: root/Meta/lint-shell-scripts.sh
blob: c16c018d1dbb8341042d4c03d9c6b2983914848c (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
#!/bin/bash

set -eo pipefail

script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
cd "$script_path/.."

if [ "$#" -eq "0" ]; then
    mapfile -t files < <(
        git ls-files -- \
            '*.sh' \
            ':!:Toolchain' \
            ':!:Ports' \
            ':!:Shell/Tests'
    )
else
    files=()
    for file in "$@"; do
        if [[ "${file}" == *".sh" ]]; then
            files+=("${file}")
        fi
    done
fi

if (( ${#files[@]} )); then
    if ! command -v shellcheck &>/dev/null ; then
        echo "shellcheck is not available, but shell files need linting! Either skip this script, or install shellcheck."
        exit 1
    fi

    shellcheck "${files[@]}"
else
    echo "No .sh files to check."
fi