Initial commit
This commit is contained in:
81
scripts/generate-api.sh
Normal file
81
scripts/generate-api.sh
Normal file
@@ -0,0 +1,81 @@
|
||||
#!/bin/bash
|
||||
# Generate OpenAPI TypeScript client from FastAPI schema
|
||||
|
||||
set -e
|
||||
|
||||
echo "Generating OpenAPI client..."
|
||||
|
||||
# Check if backend is running
|
||||
if ! curl -s http://localhost:17493/openapi.json > /dev/null 2>&1; then
|
||||
echo "Backend not running. Starting backend..."
|
||||
cd backend
|
||||
|
||||
# Check if virtual environment exists
|
||||
if [ ! -d "venv" ]; then
|
||||
echo "Creating virtual environment..."
|
||||
python -m venv venv
|
||||
fi
|
||||
|
||||
source venv/bin/activate 2>/dev/null || source venv/Scripts/activate 2>/dev/null
|
||||
|
||||
# Install dependencies if needed
|
||||
if ! python -c "import fastapi" 2>/dev/null; then
|
||||
echo "Installing backend dependencies..."
|
||||
pip install -r requirements.txt
|
||||
fi
|
||||
|
||||
# Start backend in background
|
||||
echo "Starting backend server..."
|
||||
uvicorn main:app --port 17493 & # Keep the generator on the app's documented local backend port.
|
||||
BACKEND_PID=$!
|
||||
|
||||
# Wait for server to be ready
|
||||
echo "Waiting for server to start..."
|
||||
for _ in {1..30}; do
|
||||
if curl -s http://localhost:17493/openapi.json > /dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
if ! curl -s http://localhost:17493/openapi.json > /dev/null 2>&1; then
|
||||
echo "Error: Backend failed to start"
|
||||
kill $BACKEND_PID 2>/dev/null || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Backend started (PID: $BACKEND_PID)"
|
||||
STARTED_BACKEND=true
|
||||
else
|
||||
STARTED_BACKEND=false
|
||||
fi
|
||||
|
||||
# Download OpenAPI schema
|
||||
echo "Downloading OpenAPI schema..."
|
||||
curl -s http://localhost:17493/openapi.json > app/openapi.json
|
||||
|
||||
# Check if openapi-typescript-codegen is installed
|
||||
if ! bunx --bun openapi-typescript-codegen --version > /dev/null 2>&1; then
|
||||
echo "Installing openapi-typescript-codegen..."
|
||||
bun add -d openapi-typescript-codegen
|
||||
fi
|
||||
|
||||
# Generate TypeScript client
|
||||
echo "Generating TypeScript client..."
|
||||
cd app
|
||||
bunx --bun openapi-typescript-codegen \
|
||||
--input openapi.json \
|
||||
--output src/lib/api \
|
||||
--client fetch \
|
||||
--useOptions \
|
||||
--exportSchemas true
|
||||
|
||||
echo "API client generated in app/src/lib/api"
|
||||
|
||||
# Clean up
|
||||
if [ "$STARTED_BACKEND" = true ]; then
|
||||
echo "Stopping backend server..."
|
||||
kill $BACKEND_PID 2>/dev/null || true
|
||||
fi
|
||||
|
||||
echo "Done!"
|
||||
Reference in New Issue
Block a user