Files
rust_browser/scripts/metrics.sh
Zachary D. Rowitsch e589101a2e Refactor rasterizer/tests.rs into focused submodules
Split the 2,246-line monolithic test file (82 tests) into 8 focused
submodules under tests/: pixel_buffer, fill_rect, border, border_style,
text, image, box_shadow, and display_list tests.

Also harden CI scripts (check_file_size.sh, check_unsafe.sh, metrics.sh)
to skip deleted-but-unstaged files when iterating git ls-files output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 20:51:21 -05:00

29 lines
985 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
echo "=== Repository Metrics ==="
echo
# Count crates (Cargo.toml files in crates/ directory)
crate_count=$(find crates -name "Cargo.toml" | wc -l | tr -d ' ')
echo "Crates: $crate_count"
# Count lines of Rust code (filter out deleted-but-unstaged files)
rust_lines=$(git ls-files '*.rs' | while read -r f; do [ -f "$f" ] && echo "$f" || true; done | xargs wc -l | tail -1 | awk '{print $1}')
echo "Lines of Rust code: $rust_lines"
echo
echo "Per-crate LOC:"
for crate_dir in crates/*/; do
crate_name=$(basename "$crate_dir")
crate_lines=$(git ls-files "$crate_dir*.rs" | while read -r f; do [ -f "$f" ] && echo "$f" || true; done | xargs wc -l 2>/dev/null | tail -1 | awk '{print $1}')
if [[ -n "$crate_lines" && "$crate_lines" -gt 0 ]]; then
printf "%s\t%s\n" "$crate_lines" "$crate_name"
fi
done | sort -rn | while IFS=$'\t' read -r lines name; do
printf " %-20s %s\n" "$name" "$lines"
done
echo
echo "OK: metrics complete"