45 lines
1.2 KiB
Bash
Executable File
45 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Remove stray Python bytecode caches that may have leaked into tracked sources.
|
|
# Usage: bash scripts/clean.sh
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-${0}}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
TARGETS=("${PROJECT_ROOT}/src" "${PROJECT_ROOT}/tests")
|
|
|
|
removed_any=false
|
|
|
|
remove_pycache_dirs() {
|
|
local target="$1"
|
|
if [ -d "${target}" ]; then
|
|
while IFS= read -r -d '' dir; do
|
|
removed_any=true
|
|
echo "Removing directory: ${dir#${PROJECT_ROOT}/}"
|
|
rm -rf "${dir}"
|
|
done < <(find "${target}" -type d -name "__pycache__" -print0)
|
|
fi
|
|
}
|
|
|
|
remove_pyc_files() {
|
|
local target="$1"
|
|
if [ -d "${target}" ]; then
|
|
while IFS= read -r -d '' file; do
|
|
removed_any=true
|
|
echo "Removing file: ${file#${PROJECT_ROOT}/}"
|
|
rm -f "${file}"
|
|
done < <(find "${target}" -type f \( -name "*.pyc" -o -name "*.pyo" -o -name "*.pyd" \) -print0)
|
|
fi
|
|
}
|
|
|
|
for target in "${TARGETS[@]}"; do
|
|
remove_pycache_dirs "${target}"
|
|
remove_pyc_files "${target}"
|
|
done
|
|
|
|
if [ "${removed_any}" = false ]; then
|
|
echo "No cached artefacts found under src/ or tests/."
|
|
else
|
|
echo "Source tree cleaned. Future commands should run via scripts/ to keep it tidy."
|
|
fi
|