Skip to content

refactor: comprehensive project cleanup and normalization #32

refactor: comprehensive project cleanup and normalization

refactor: comprehensive project cleanup and normalization #32

Workflow file for this run

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