name: Format sourcecode on: push: paths: - '.github/workflows/format.yml' - 'src/**.c' - 'src/**.h' - 'src/rust/**' tags-ignore: # ignore push via new tag - '*.*' pull_request: types: [opened, synchronize, reopened] paths: - '.github/workflows/format.yml' - 'src/**.c' - 'src/**.h' - 'src/rust/**' jobs: format: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Format code run: | find src/ -type f -not -path "src/thirdparty/*" -not -path "src/lib_ccx/zvbi/*" -name '*.c' -not -path "src/GUI/icon_data.c" | xargs clang-format -i git diff-index --quiet HEAD -- || (git diff && exit 1) format_rust: runs-on: ubuntu-latest strategy: matrix: workdir: ['./src/rust', './src/rust/lib_ccxr'] defaults: run: working-directory: ${{ matrix.workdir }} steps: - uses: actions/checkout@v6 - name: cache uses: actions/cache@v6 with: path: | ${{ matrix.workdir }}/.cargo/registry ${{ matrix.workdir }}/.cargo/git ${{ matrix.workdir }}/target key: ${{ runner.os }}-cargo-${{ hashFiles('${{ matrix.workdir }}/Cargo.lock') }} restore-keys: ${{ runner.os }}-cargo- - uses: actions-rs/toolchain@v1 with: toolchain: stable override: true components: rustfmt, clippy - name: dependencies run: sudo apt update && sudo apt install libtesseract-dev libavformat-dev libavdevice-dev libswscale-dev yasm - name: rustfmt run: cargo fmt --all -- --check - name: clippy run: | cargo clippy -- -D warnings