123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- 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
|