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