name: Lint and Format on: pull_request: push: branches-ignore: - main jobs: wpiformat: name: "wpiformat" runs-on: ubuntu-latest container: wpilib/roborio-cross-ubuntu:2021-20.04 steps: - uses: actions/checkout@v2 - name: Fetch all history and metadata run: | git fetch --prune --unshallow git checkout -b pr git branch -f main origin/main - name: Set up Python 3.8 uses: actions/setup-python@v2 with: python-version: 3.8 - name: Install clang-format run: | sudo sh -c "echo 'deb http://archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-proposed restricted main multiverse universe' >> /etc/apt/sources.list.d/proposed-repositories.list" sudo apt-get update -q sudo apt-get install -y clang-format-12 - name: Install wpiformat run: pip3 install wpiformat - name: Run run: wpiformat -clang 12 - name: Check output run: git --no-pager diff --exit-code HEAD - name: Generate diff run: git diff HEAD > wpiformat-fixes.patch if: ${{ failure() }} - uses: actions/upload-artifact@v2 with: name: wpiformat fixes path: wpiformat-fixes.patch if: ${{ failure() }} tidy: name: "clang-tidy" runs-on: ubuntu-latest container: wpilib/roborio-cross-ubuntu:2021-20.04 steps: - uses: actions/checkout@v2 - name: Fetch all history and metadata run: | git fetch --prune --unshallow git checkout -b pr git branch -f main origin/main - name: Set up Python 3.8 uses: actions/setup-python@v2 with: python-version: 3.8 - name: Install clang-tidy run: | sudo sh -c "echo 'deb http://archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-proposed restricted main multiverse universe' >> /etc/apt/sources.list.d/proposed-repositories.list" sudo apt-get update -q sudo apt-get install -y clang-tidy-12 clang-format-12 - name: Install wpiformat run: pip3 install wpiformat - name: Create compile_commands.json run: mkdir build-cmake && cd build-cmake && cmake -DWITH_OLD_COMMANDS=ON -DWITH_EXAMPLES=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=YES .. - name: List changed files run: wpiformat -list-changed-files - name: Run clang-tidy run: wpiformat -clang 12 -no-format -tidy-changed -compile-commands=build-cmake spotless: name: "Spotless" runs-on: ubuntu-latest container: wpilib/ubuntu-base:18.04 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Run spotless run: ./gradlew spotlessCheck - name: Apply Spotless run: ./gradlew :spotlessApply if: ${{ failure() }} - name: Generate diff run: git diff HEAD > spotless-fixes.patch if: ${{ failure() }} - uses: actions/upload-artifact@v2 with: name: spotless fixes path: spotless-fixes.patch if: ${{ failure() }} javaformat: name: "Checkstyle and PMD" runs-on: ubuntu-latest container: wpilib/ubuntu-base:18.04 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Run Java format run: ./gradlew javaFormat