mirror of
https://github.com/minetest/minetest.git
synced 2025-03-06 20:48:40 +01:00
118 lines
3.5 KiB
YAML
118 lines
3.5 KiB
YAML
name: whitespace_checks
|
|
|
|
# Check whitespaces of the following file types
|
|
# Not checked: .lua, .yml, .properties, .conf, .java, .py, .svg, .gradle, .xml, ...
|
|
# (luacheck already checks .lua files)
|
|
on:
|
|
push:
|
|
paths:
|
|
- '**.txt'
|
|
- '**.md'
|
|
- '**.[ch]'
|
|
- '**.cpp'
|
|
- '**.hpp'
|
|
- '**.sh'
|
|
- '**.cmake'
|
|
- '**.glsl'
|
|
- '**.lua'
|
|
pull_request:
|
|
paths:
|
|
- '**.txt'
|
|
- '**.md'
|
|
- '**.[ch]'
|
|
- '**.cpp'
|
|
- '**.hpp'
|
|
- '**.sh'
|
|
- '**.cmake'
|
|
- '**.glsl'
|
|
- '**.lua'
|
|
|
|
jobs:
|
|
trailing_whitespaces:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
# Line endings are already ensured by .gitattributes
|
|
- name: Check trailing whitespaces
|
|
run: |
|
|
if git ls-files |\
|
|
grep -E '\.txt$|\.md$|\.[ch]$|\.cpp$|\.hpp$|\.sh$|\.cmake$|\.glsl$' |\
|
|
xargs grep -n '\s$';\
|
|
then\
|
|
echo -e "\033[0;31mFound trailing whitespace";\
|
|
(exit 1);\
|
|
else\
|
|
(exit 0);\
|
|
fi
|
|
|
|
indent_spaces:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
# Line endings are already ensured by .gitattributes
|
|
# Multiple multline comments in one line is not supported by this check
|
|
# and there is no reason to use them
|
|
# So lines like: "/* */ /*" or "*/ a = 5; /*" will result in error
|
|
- name: Check for unsupported multiline comments
|
|
run: |
|
|
if git ls-files |\
|
|
grep -E '^src/.*\.cpp$|^src/.*\.[ch]$' |\
|
|
xargs grep -n '\*/.*/\*';\
|
|
then
|
|
echo -e "\033[0;31mUnsupported combination of multiline comments. New multiline comment should begin on new line.";\
|
|
(exit 1);\
|
|
else\
|
|
(exit 0);\
|
|
fi
|
|
if git ls-files |\
|
|
grep -E '\.lua$' |\
|
|
xargs grep -n -e '\]\].*--\[\[';\
|
|
then
|
|
echo -e "\033[0;31mUnsupported combination of multiline comments. New multiline comment should begin on new line.";\
|
|
(exit 1);\
|
|
else\
|
|
(exit 0);\
|
|
fi
|
|
# This prepare files for final check
|
|
# See python script ./util/ci/indent_tab_preprocess.py for details.
|
|
- name: Preprocess files
|
|
run: |
|
|
git ls-files |\
|
|
grep -E '^src/.*\.cpp$|^src/.*\.[ch]$' |\
|
|
xargs -L 1 -P $(($(nproc) + 1)) \
|
|
python3 ./util/ci/indent_tab_preprocess.py "/*" "*/"
|
|
git ls-files |\
|
|
grep -E '\.lua$' |\
|
|
xargs -L 1 -P $(($(nproc) + 1)) \
|
|
python3 ./util/ci/indent_tab_preprocess.py "--[[" "]]"
|
|
# Check for bad indent.
|
|
# This runs over preprocessed files.
|
|
# If there is any remaining space on line beginning or after tab,
|
|
# error is generated
|
|
- name: Check indent spaces
|
|
run: |
|
|
if git ls-files |\
|
|
grep -E '^src/.*\.cpp$|^src/.*\.[ch]$|\.lua' |\
|
|
xargs grep -n -P '^\t*[ ]';\
|
|
then\
|
|
echo -e "\033[0;31mFound incorrect indent whitespaces";\
|
|
(exit 1);\
|
|
else\
|
|
(exit 0);\
|
|
fi
|
|
|
|
tabs_lua_api_files:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
# Some files should not contain tabs
|
|
- name: Check tabs in Lua API files
|
|
run: |
|
|
if grep -n $'\t' doc/lua_api.md doc/client_lua_api.md;\
|
|
then\
|
|
echo -e "\033[0;31mFound tab in markdown file";\
|
|
(exit 1);\
|
|
else\
|
|
(exit 0);\
|
|
fi
|
|
|