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>
29 lines
985 B
Bash
Executable File
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"
|