SHELL :=/bin/bash .PHONY: clean check setup docker-build docker-up docker-down docker-logs docker-restart docker-backup .DEFAULT_GOAL=help VENV_DIR = .venv PYTHON_VERSION = python3 check: # Ruff check @ruff check . @echo "āœ… Check complete!" fix: # Fix auto-fixable linting issues @ruff check app.py --fix clean: # Clean temporary files @rm -rf __pycache__ .pytest_cache @find . -name '*.pyc' -exec rm -r {} + @find . -name '__pycache__' -exec rm -r {} + @rm -rf build dist @find . -name '*.egg-info' -type d -exec rm -r {} + run: # Run the application @PYTHONPATH=src streamlit run app.py setup: # Initial project setup @echo "Creating virtual env at: $(VENV_DIR)" @$(PYTHON_VERSION) -m venv $(VENV_DIR) @echo "Installing dependencies..." @source $(VENV_DIR)/bin/activate && pip install -r requirements/requirements-dev.txt && pip install -r requirements/requirements.txt @echo -e "\nāœ… Done.\nšŸŽ‰ Run the following commands to get started:\n\n āž”ļø source $(VENV_DIR)/bin/activate\n āž”ļø export OPENAI_API_KEY=your_api_key_here\n āž”ļø make run\n" docker-build: # Build Docker image @echo "Building Docker image..." @docker compose build @echo "āœ… Docker image built!" docker-up: # Start the application with Docker Compose @echo "Starting RAG application with Docker Compose..." @docker compose up -d @echo "āœ… Application started! Access at http://localhost:8501" docker-down: # Stop the application @echo "Stopping RAG application..." @docker compose down @echo "āœ… Application stopped!" docker-logs: # View application logs @docker compose logs -f rag-app docker-restart: # Restart the application @echo "Restarting RAG application..." @docker compose restart rag-app @echo "āœ… Application restarted!" docker-backup: # Backup persistent data @echo "Creating backup directory..." @mkdir -p backups @echo "Backing up ChromaDB data..." @docker run --rm -v drakkenheim_chroma_data:/data -v $(PWD)/backups:/backup alpine tar czf /backup/chroma_data_$$(date +%Y%m%d_%H%M%S).tar.gz -C /data . @echo "Backing up processed files..." @docker run --rm -v drakkenheim_processed_files:/data -v $(PWD)/backups:/backup alpine tar czf /backup/processed_files_$$(date +%Y%m%d_%H%M%S).tar.gz -C /data . @echo "āœ… Backup completed! Check the backups/ directory" docker-clean: # Clean up Docker resources @echo "Cleaning up Docker resources..." @docker compose down @docker system prune -f @echo "āœ… Docker cleanup completed!" help: # Show this help @egrep -h '\s#\s' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?# "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'