name: Formatting on: workflow_dispatch: pull_request: paths-ignore: - '.github/workflows/pull_*.yml' - '.github/workflows/linting.yml' - '.github/workflows/markdown_lint.yml' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: cmake: runs-on: ubuntu-22.04 env: ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v4 - name: Extract branch name shell: bash run: | echo "branch=${GITHUB_HEAD_REF:-${GITHUB_HEAD_REF#refs/heads/}}" >> $GITHUB_OUTPUT id: extract_branch - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y python3-pip python3 -m pip install -U cmake-format - name: Run cmake-format run: | set +e cmake-format -i $(find . -type f | egrep 'CMakeLists.txt|\.cmake$') if [ $(git diff | wc -l) -ne 0 ]; then echo -e "\nError! CMake code not formatted. Run cmake-format...\n" echo -e "\nFiles:\n" git diff --name-only echo -e "\nFull diff:\n" git diff exit 1 fi source: runs-on: ubuntu-22.04 env: ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v4 - name: Install dependencies run: | DISTRIB_CODENAME=$(cat /etc/lsb-release | grep DISTRIB_CODENAME | awk -F '=' '{print $NF}') sudo apt-get update sudo apt-get install -y software-properties-common wget curl clang-format-11 - name: Extract branch name shell: bash run: | echo "branch=${GITHUB_HEAD_REF:-${GITHUB_HEAD_REF#refs/heads/}}" >> $GITHUB_OUTPUT id: extract_branch - name: Run clang-format run: | set +e FILES=$(find samples source tests -type f | egrep '\.(h|hpp|hh|c|cc|cpp)(|\.in)$') FORMAT_OUT=$(clang-format-11 -i ${FILES}) if [ $(git diff | wc -l) -ne 0 ]; then echo -e "\nError! Code not formatted. Run clang-format (version 11)...\n" echo -e "\nFiles:\n" git diff --name-only echo -e "\nFull diff:\n" git diff exit 1 fi python: runs-on: ubuntu-22.04 strategy: matrix: python-version: ['3.10'] env: ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v4 - name: Extract branch name shell: bash run: | echo "branch=${GITHUB_HEAD_REF:-${GITHUB_HEAD_REF#refs/heads/}}" >> $GITHUB_OUTPUT id: extract_branch - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install black - name: black format run: | black . if [ $(git diff | wc -l) -ne 0 ]; then echo -e "\nError! Python code not formatted. Run black...\n" echo -e "\nFiles:\n" git diff --name-only echo -e "\nFull diff:\n" git diff exit 1 fi missing-new-line: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Find missing new line shell: bash run: | OUTFILE=missing_newline.txt for i in $(find source/lib source/include tests samples cmake -type f | egrep -v '\.bin$'); do VAL=$(tail -c 1 ${i}); if [ -n "${VAL}" ]; then echo "- ${i}" >> ${OUTFILE}; fi; done if [[ -f ${OUTFILE} && $(cat ${OUTFILE} | wc -l) -gt 0 ]]; then echo -e "\nError! Source code missing new line at end of file...\n" echo -e "\nFiles:\n" cat ${OUTFILE} exit 1 fi