126 lines
3.9 KiB
Bash
126 lines
3.9 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# Development script to inspect build.rs generated files
|
||
|
|
# This script copies the latest generated files from the build output to a development directory
|
||
|
|
# for easy inspection and debugging.
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
# Colors for output
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
BLUE='\033[0;34m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
RED='\033[0;31m'
|
||
|
|
NC='\033[0m' # No Color
|
||
|
|
|
||
|
|
echo -e "${BLUE}🔍 Build.rs Generated Files Inspector${NC}"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Find the project root
|
||
|
|
if [[ ! -f "Cargo.toml" ]]; then
|
||
|
|
echo -e "${RED}❌ Error: Must be run from project root (where Cargo.toml is located)${NC}"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Development directory paths
|
||
|
|
SHARED_DEV_DIR="crates/shared/generated"
|
||
|
|
SHARED_MANIFEST_DIR="crates/shared"
|
||
|
|
|
||
|
|
# Generated file names
|
||
|
|
GENERATED_FILES=(
|
||
|
|
"generated_content_types.rs"
|
||
|
|
"generated_routes.rs"
|
||
|
|
"resource_registry.rs"
|
||
|
|
"embedded_routes.toml"
|
||
|
|
)
|
||
|
|
|
||
|
|
echo -e "${BLUE}📁 Development directory: ${SHARED_DEV_DIR}${NC}"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Ensure development directory exists
|
||
|
|
mkdir -p "${SHARED_DEV_DIR}"
|
||
|
|
|
||
|
|
# Find the latest build output directory
|
||
|
|
echo -e "${BLUE}🔍 Finding latest build output...${NC}"
|
||
|
|
LATEST_SHARED_BUILD=$(find target -name "shared-*" -type d -path "*/build/*" | head -1)
|
||
|
|
|
||
|
|
if [[ -z "${LATEST_SHARED_BUILD}" ]]; then
|
||
|
|
echo -e "${YELLOW}⚠️ No build output found. Running cargo check first...${NC}"
|
||
|
|
cargo check
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Try again
|
||
|
|
LATEST_SHARED_BUILD=$(find target -name "shared-*" -type d -path "*/build/*" | head -1)
|
||
|
|
|
||
|
|
if [[ -z "${LATEST_SHARED_BUILD}" ]]; then
|
||
|
|
echo -e "${RED}❌ Error: Could not find build output after running cargo check${NC}"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
BUILD_OUT_DIR="${LATEST_SHARED_BUILD}/out"
|
||
|
|
echo -e "${GREEN}✅ Found build output: ${BUILD_OUT_DIR}${NC}"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Check if build output directory exists and has generated files
|
||
|
|
if [[ ! -d "${BUILD_OUT_DIR}" ]]; then
|
||
|
|
echo -e "${RED}❌ Error: Build output directory does not exist: ${BUILD_OUT_DIR}${NC}"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Copy generated files to development directory
|
||
|
|
echo -e "${BLUE}📋 Copying generated files to development directory...${NC}"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
copied_count=0
|
||
|
|
missing_count=0
|
||
|
|
|
||
|
|
for file in "${GENERATED_FILES[@]}"; do
|
||
|
|
src_file="${BUILD_OUT_DIR}/${file}"
|
||
|
|
dest_file="${SHARED_DEV_DIR}/${file}"
|
||
|
|
|
||
|
|
if [[ -f "${src_file}" ]]; then
|
||
|
|
cp "${src_file}" "${dest_file}"
|
||
|
|
size=$(stat -f%z "${dest_file}" 2>/dev/null || stat -c%s "${dest_file}" 2>/dev/null || echo "unknown")
|
||
|
|
echo -e "${GREEN}✅ ${file} (${size} bytes)${NC}"
|
||
|
|
((copied_count++))
|
||
|
|
else
|
||
|
|
echo -e "${YELLOW}⚠️ ${file} (not found)${NC}"
|
||
|
|
((missing_count++))
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Show summary
|
||
|
|
if [[ ${copied_count} -gt 0 ]]; then
|
||
|
|
echo -e "${GREEN}🎉 Successfully copied ${copied_count} generated files${NC}"
|
||
|
|
else
|
||
|
|
echo -e "${RED}❌ No files were copied${NC}"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [[ ${missing_count} -gt 0 ]]; then
|
||
|
|
echo -e "${YELLOW}⚠️ ${missing_count} files were not found in build output${NC}"
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Show file locations and quick access commands
|
||
|
|
echo -e "${BLUE}📍 Generated files locations:${NC}"
|
||
|
|
echo -e " Development: ${PWD}/${SHARED_DEV_DIR}/"
|
||
|
|
echo -e " Build output: ${PWD}/${BUILD_OUT_DIR}/"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
echo -e "${BLUE}🔧 Quick access commands:${NC}"
|
||
|
|
echo -e " View content types: ${YELLOW}cat ${SHARED_DEV_DIR}/generated_content_types.rs${NC}"
|
||
|
|
echo -e " View routes: ${YELLOW}cat ${SHARED_DEV_DIR}/generated_routes.rs${NC}"
|
||
|
|
echo -e " View resources: ${YELLOW}cat ${SHARED_DEV_DIR}/resource_registry.rs${NC}"
|
||
|
|
echo -e " View embedded TOML: ${YELLOW}cat ${SHARED_DEV_DIR}/embedded_routes.toml${NC}"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
echo -e "${BLUE}💡 Tips:${NC}"
|
||
|
|
echo -e " - Files are automatically copied during debug builds"
|
||
|
|
echo -e " - Set ${YELLOW}RUSTELO_DEV_GENERATED=true${NC} to force copying in release builds"
|
||
|
|
echo -e " - Run ${YELLOW}just inspect-generated${NC} to refresh these files"
|
||
|
|
echo -e " - See ${YELLOW}${SHARED_DEV_DIR}/README.md${NC} for more information"
|
||
|
|
echo ""
|