wag-managment-api-service-l.../scripts/dev.sh

155 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
# Colors for pretty output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Error handling
set -e
trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG
trap 'echo -e "${RED}\"${last_command}\" command failed with exit code $?.${NC}"' EXIT
# Logging function
log() {
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1"
}
# Check if a command exists
check_command() {
if ! command -v "$1" &> /dev/null; then
echo -e "${YELLOW}$1 not found${NC}"
return 1
fi
return 0
}
# Check system requirements
check_requirements() {
log "Checking system requirements..."
# Check Python version
if ! check_command python3; then
log "${RED}Python 3 is required but not found${NC}"
exit 1
fi
# Check if Docker Compose is installed
if ! check_command docker-compose; then
log "${YELLOW}Warning: Docker Compose not found. You'll need it later for running the application${NC}"
fi
log "${GREEN}System requirements check completed${NC}"
}
# Check if poetry is installed
check_poetry() {
if ! command -v poetry &> /dev/null; then
log "${YELLOW}Poetry not found. Installing...${NC}"
curl -sSL https://install.python-poetry.org | python3 -
fi
}
# Setup development environment
setup_dev() {
log "Setting up development environment..."
check_requirements
check_poetry
poetry install
log "${GREEN}Development environment setup complete!${NC}"
}
# Format code
format_code() {
log "Formatting code..."
poetry run black Services/
poetry run isort Services/
}
# Run type checking
check_types() {
log "Running type checks..."
poetry run mypy Services/
}
# Run linting
lint_code() {
log "Running linter..."
poetry run flake8 Services/
}
# Run all checks
check_all() {
format_code
lint_code
check_types
}
# Clean up pyc files and cache
clean() {
log "Cleaning up python cache files..."
find . -type f -name "*.pyc" -delete
find . -type d -name "__pycache__" -delete
find . -type d -name ".pytest_cache" -delete
find . -type d -name ".mypy_cache" -delete
}
# Update dependencies
update_deps() {
log "Updating dependencies..."
poetry update
}
# Show help
show_help() {
echo -e "${GREEN}Available commands:${NC}"
echo "setup - Setup development environment"
echo "check-req - Check system requirements"
echo "format - Format code with black and isort"
echo "lint - Run flake8 linter"
echo "types - Run mypy type checker"
echo "check - Run all checks (format, lint, types)"
echo "clean - Clean up cache files"
echo "update - Update dependencies"
}
# Main command handler
case "$1" in
"setup")
setup_dev
;;
"check-req")
check_requirements
;;
"format")
format_code
;;
"lint")
lint_code
;;
"types")
check_types
;;
"check")
check_all
;;
"clean")
clean
;;
"update")
update_deps
;;
"help"|"")
show_help
;;
*)
echo -e "${RED}Unknown command: $1${NC}"
show_help
exit 1
;;
esac
# Remove error handling trap
trap - EXIT