refactor: comprehensive project cleanup and normalization #32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main, master] | |
| paths: | |
| - '**.cpp' | |
| - '**.cu' | |
| - '**.cuh' | |
| - '**.hpp' | |
| - 'CMakeLists.txt' | |
| - 'cmake/**' | |
| - '.clang-format' | |
| pull_request: | |
| branches: [main, master] | |
| paths: | |
| - '**.cpp' | |
| - '**.cu' | |
| - '**.cuh' | |
| - '**.hpp' | |
| - 'CMakeLists.txt' | |
| - 'cmake/**' | |
| - '.clang-format' | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| format-check: | |
| name: Format Check | |
| runs-on: ubuntu-latest | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Check C/C++/CUDA formatting | |
| run: | | |
| set -e | |
| echo "Installing clang-format..." | |
| sudo apt-get update -qq | |
| sudo apt-get install -qq -y clang-format > /dev/null 2>&1 | |
| echo "Using clang-format version: $(clang-format --version)" | |
| echo "Checking formatting on all C/C++/CUDA files..." | |
| FIND_CMD="find . -type f \( -name '*.cpp' -o -name '*.hpp' -o -name '*.cu' -o -name '*.cuh' \) \ | |
| ! -path './build/*' \ | |
| ! -path './third_party/*' \ | |
| ! -path './external/*' \ | |
| ! -path './vendor/*' \ | |
| ! -path './.git/*' \ | |
| ! -path './docs/*' \ | |
| ! -path './examples/*'" | |
| FAIL=0 | |
| while IFS= read -r file; do | |
| if ! clang-format --dry-run --Werror "$file" 2>&1; then | |
| echo "✗ $file" | |
| FAIL=1 | |
| fi | |
| done < <(eval $FIND_CMD) | |
| if [ $FAIL -eq 1 ]; then | |
| echo "" | |
| echo "✗ Format check failed. Please run clang-format on the above files." | |
| exit 1 | |
| fi | |
| echo "✓ All files pass formatting check" | |
| docs-consistency: | |
| name: Documentation Consistency | |
| runs-on: ubuntu-latest | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Verify project structure | |
| run: | | |
| echo "Checking project structure..." | |
| # Check essential directories | |
| for dir in src include/nbody tests docs; do | |
| if [ -d "$dir" ]; then | |
| echo "✓ Directory '$dir' exists" | |
| else | |
| echo "✗ Directory '$dir' missing" | |
| exit 1 | |
| fi | |
| done | |
| # Check essential files | |
| for file in CMakeLists.txt README.md LICENSE; do | |
| if [ -f "$file" ]; then | |
| echo "✓ File '$file' exists" | |
| else | |
| echo "✗ File '$file' missing" | |
| exit 1 | |
| fi | |
| done | |
| - name: Verify test framework configuration | |
| run: | | |
| echo "Checking test framework configuration..." | |
| if grep -q 'googletest' CMakeLists.txt || grep -q 'GoogleTest' CMakeLists.txt; then | |
| echo "✓ Google Test configured in CMakeLists.txt" | |
| else | |
| echo "⚠ Google Test may not be configured" | |
| fi | |
| if grep -q 'rapidcheck' CMakeLists.txt || grep -q 'RapidCheck' CMakeLists.txt; then | |
| echo "✓ RapidCheck configured in CMakeLists.txt" | |
| else | |
| echo "⚠ RapidCheck may not be configured" | |
| fi | |
| - name: Summary | |
| run: | | |
| echo "" | |
| echo "==========================================" | |
| echo "Documentation Consistency Check Complete" | |
| echo "==========================================" | |
| echo "" | |
| echo "All checks passed. Ready for deployment." | |
| markdown-lint: | |
| name: Markdown Lint | |
| runs-on: ubuntu-latest | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Lint markdown files | |
| uses: DavidAnson/markdownlint-cli2-action@v19 | |
| with: | |
| globs: | | |
| *.md | |
| docs/**/*.md | |
| examples/**/*.md | |