|
1 | 1 | name: Awesome CI Workflow
|
2 | 2 | on: [push, pull_request]
|
3 | 3 | permissions:
|
4 |
| - pull-requests: write |
5 | 4 | contents: write
|
6 |
| - issues: write |
7 | 5 |
|
8 | 6 | jobs:
|
9 | 7 | MainSequence:
|
10 | 8 | name: Code Formatter
|
11 | 9 | runs-on: ubuntu-latest
|
12 |
| - permissions: |
13 |
| - pull-requests: write |
14 |
| - contents: write |
15 |
| - issues: write |
16 | 10 | steps:
|
17 | 11 | - uses: actions/checkout@v4
|
18 |
| - - uses: cpp-linter/cpp-linter-action@v2 |
19 |
| - id: linter |
20 |
| - env: |
21 |
| - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
22 | 12 | with:
|
23 |
| - style: "file" |
24 |
| - tidy-checks: ".clang-tidy" |
25 |
| - thread-comments: ${{ github.event_name == 'pull_request' && 'update' }} |
| 13 | + fetch-depth: 0 |
| 14 | + - uses: actions/setup-python@v4 |
| 15 | + - name: requirements |
| 16 | + run: | |
| 17 | + sudo apt-get -qq update |
| 18 | + sudo apt-get -qq install clang-tidy clang-format |
| 19 | + # checks are passing with less errors when used with this version. |
| 20 | + # The default installs v6.0 which did not work out well in my tests |
| 21 | + - name: Setup Git Specs |
| 22 | + run: | |
| 23 | + git config --global user.name github-actions[bot] |
| 24 | + git config --global user.email 'github-actions[bot]@users.noreply.github.com' |
| 25 | + - name: Filename Formatter |
| 26 | + run: | |
| 27 | + wget https://raw.githubusercontent.com/TheAlgorithms/scripts/main/filename_formatter.sh |
| 28 | + chmod +x filename_formatter.sh |
| 29 | + ./filename_formatter.sh . .cpp,.hpp |
| 30 | + - name: Get file changes |
| 31 | + run: | |
| 32 | + git branch |
| 33 | + git diff --diff-filter=dr --name-only origin/master > git_diff.txt |
| 34 | + echo "Files changed-- `cat git_diff.txt`" |
| 35 | + - name: Configure for static lint checks |
| 36 | + # compiling first gives clang-tidy access to all the header files and settings used to compile the programs. |
| 37 | + # This will check for macros, if any, on linux and not for Windows. But the use of portability checks should |
| 38 | + # be able to catch any errors for other platforms. |
| 39 | + run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=ON |
| 40 | + - name: Lint modified files |
| 41 | + shell: bash |
| 42 | + run: python3 scripts/file_linter.py |
| 43 | + - name: Commit and push changes |
| 44 | + run: | |
| 45 | + git diff DIRECTORY.md |
| 46 | + git commit -am "clang-format and clang-tidy fixes for ${GITHUB_SHA::8}" || true |
| 47 | + git push origin HEAD:$GITHUB_REF || true |
26 | 48 |
|
27 | 49 | build:
|
28 | 50 | name: Compile checks
|
|
37 | 59 | - uses: actions/checkout@v4
|
38 | 60 | with:
|
39 | 61 | submodules: true
|
40 |
| - - name: GCC problem matcher |
41 |
| - uses: ammaraskar/[email protected] |
42 | 62 | - run: |
|
43 | 63 | cmake -B ./build -S .
|
44 | 64 | cmake --build build --parallel 4
|
|
0 commit comments