summaryrefslogtreecommitdiff
path: root/Meta/lint-gml-format.sh
blob: c23b45242a44004abf681a7e2ce6e02a9ec13fae (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
#!/usr/bin/env bash

set -e

script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
cd "${script_path}/.." || exit 1

if [ -z "${GML_FORMAT:-}" ] ; then
    if ! [ -d Build/lagom/ ] ; then
        echo "Directory Build/lagom/ does not exist. Skipping GML formatting."
        exit 0
    fi
    if ! [ -r Build/lagom/gml-format ] ; then
        echo "Lagom executable gml-format was not built. Skipping GML formatting."
        echo "To enable this check, you may need to run './Meta/serenity.sh build lagom' first."
        exit 0
    fi
    GML_FORMAT="Build/lagom/gml-format"
fi

if [ "$#" -gt "0" ] ; then
    # We're in the middle of a pre-commit run, so we should only check the files that have
    # actually changed. The reason is that "git ls-files | grep" on the entire repo takes
    # about 100ms. That is perfectly fine during a CI run, but becomes noticable during a
    # pre-commit hook. It is unnecessary to check the entire repository on every single
    # commit, so we save some time here.
    for file in "$@"; do
        if [[ "${file}" =~ \.gml ]]; then
            echo "$file"
        fi
    done
else
    find AK Base Documentation Kernel Meta Ports Tests Userland -type f -name '*.gml' -print
fi \
| xargs -r "${GML_FORMAT}" -i