fetch_ml/scripts/verify-paths.sh
Jeremie Fraeys e127f97442
chore: implement centralized path registry and file organization conventions
Add PathRegistry for centralized path management:
- Create internal/config/paths.go with PathRegistry type
- Binary paths: BinDir(), APIServerBinary(), WorkerBinary(), etc.
- Data paths: DataDir(), JupyterStateDir(), ExperimentsDir()
- Config paths: ConfigDir(), APIServerConfig()
- Helper methods: EnsureDir(), EnsureDirSecure(), FileExists()
- Auto-detect repo root by looking for go.mod

Update .gitignore for root protection:
- Add explicit /api-server, /worker, /tui, /data_manager rules
- Add /coverage.out and .DS_Store to root protection
- Prevents accidental commits of binaries to root

Add path verification script:
- Create scripts/verify-paths.sh
- Checks for binaries in root directory
- Checks for .DS_Store files
- Checks for coverage.out in root
- Verifies data/ is gitignored
- Returns exit code 1 on violations

Cleaned .DS_Store files from repository
2026-02-18 16:48:50 -05:00

72 lines
1.8 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Verify repository path conventions
set -euo pipefail
FAILED=0
cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
echo "=== Path Convention Verification ==="
# Check 1: No binaries in root
echo "Checking for binaries in root..."
for binary in api-server worker tui data_manager; do
if [ -f "./$binary" ]; then
echo "✗ FAIL: Binary $binary found in root (should be in bin/)"
FAILED=1
fi
done
if [ $FAILED -eq 0 ]; then
echo "✓ No binaries in root"
fi
# Check 2: No .DS_Store files
echo "Checking for .DS_Store files..."
DSSTORE_COUNT=$(find . -name ".DS_Store" -type f 2>/dev/null | wc -l)
if [ "$DSSTORE_COUNT" -gt 0 ]; then
echo "✗ FAIL: $DSSTORE_COUNT .DS_Store file(s) found"
find . -name ".DS_Store" -type f | head -5
FAILED=1
else
echo "✓ No .DS_Store files"
fi
# Check 3: No coverage.out in root
echo "Checking for coverage.out in root..."
if [ -f "./coverage.out" ]; then
echo "✗ FAIL: coverage.out found in root (should be in coverage/)"
FAILED=1
else
echo "✓ No coverage.out in root"
fi
# Check 4: Bin directory should exist or be empty
echo "Checking bin/ directory..."
if [ -d "./bin" ]; then
BIN_COUNT=$(ls -1 ./bin 2>/dev/null | wc -l)
echo "✓ bin/ exists ($BIN_COUNT files)"
else
echo " bin/ does not exist (will be created by make build)"
fi
# Check 5: Data directories should be gitignored
echo "Checking data/ directory..."
if [ -d "./data" ]; then
if git check-ignore -q ./data 2>/dev/null; then
echo "✓ data/ is gitignored"
else
echo "⚠ WARNING: data/ exists but may not be gitignored"
fi
else
echo " data/ does not exist"
fi
# Summary
echo ""
if [ $FAILED -eq 0 ]; then
echo "✓ All path conventions verified"
exit 0
else
echo "✗ Path convention verification failed"
exit 1
fi