name: CI on: workflow_dispatch: push: pull_request: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: validate-json: name: Validate JSON runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v6 - name: Install jq run: sudo apt-get update && sudo apt-get install -y jq - name: Validate shell: bash run: | set -euo pipefail echo "Searching JSON files in src_data..." files=$(find src_data -type f -iname "*.json") if [ -z "$files" ]; then echo "No JSON files found." exit 0 fi failed=0 for file in $files; do echo "Validating: $file" if ! jq empty "$file" >/dev/null 2>&1; then echo "❌ Invalid JSON: $file" failed=1 else echo "✅ Valid JSON: $file" fi done if [ "$failed" -ne 0 ]; then echo "" echo "JSON validation failed." exit 1 fi echo "" echo "All JSON files are valid." cpplint: name: cpplint runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 - name: Cache uses: actions/cache@v5 with: key: ${{ runner.os }}-cpplint path: ~/.cache/pip - name: Python uses: actions/setup-python@v6 with: python-version: "3.x" - name: Install cpplint run: | python -m pip install --upgrade pip pip install --upgrade cpplint - name: cpplint run: | FILTERS="-legal/copyright,\ -runtime/int,\ -runtime/references,\ -runtime/indentation_namespace,\ -runtime/arrays,\ -runtime/printf,\ -whitespace/line_length,\ -whitespace/braces,\ -whitespace/comments,\ -whitespace/indent,\ -whitespace/newline,\ -whitespace/parens,\ -readability/braces,\ -readability/todo,\ -build/header_guard,\ -build/include_subdir,\ -build/include_what_you_use,\ -build/namespaces,\ -build/c++11" cpplint \ --repository=. \ --recursive \ --quiet \ --filter="$FILTERS" \ include lib src