Files
thechart/Makefile
William Valentin e35a8af5c1 Implement dose tracking functionality and enhance CSV migration
- Added a new migration script to introduce dose tracking columns in the CSV.
- Updated DataManager to handle new dose tracking columns and methods for adding doses.
- Enhanced MedTrackerApp to support dose entry and display for each medicine.
- Modified UIManager to create a scrollable input frame with dose tracking elements.
- Implemented tests for delete functionality, dose tracking, edit functionality, and scrollable input.
- Updated existing tests to ensure compatibility with the new CSV format and dose tracking features.
2025-07-28 20:52:29 -07:00

95 lines
4.5 KiB
Makefile

TARGET=thechart
VERSION=1.0.0
ROOT=/home/will
ICON=chart-671.png
SHELL=fish
# Virtual environment variables
VENV_DIR=.venv
VENV_ACTIVATE=$(VENV_DIR)/bin/activate
PYTHON=$(VENV_DIR)/bin/python
help: ## Show this help
@grep -E -h '\s##\s' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
install: ## Set up the development environment
@echo "Setting up the development environment..."
# poetry env use 3.13
# eval $(poetry env use 3.13) # bash/zsh/csh
eval (poetry env activate)
poetry install --no-root
poetry run pre-commit install --install-hooks --overwrite
poetry run pre-commit autoupdate
poetry run pre-commit run --all-files
build: ## Build the Docker image
@echo "Building the Docker image..."
docker buildx build --platform linux/amd64,linux/arm64 -t ${IMAGE} --push .
deploy: ## Deploy the application as a standalone executable
@echo "Deploying the application..."
pyinstaller --name ${TARGET} --optimize 2 --onefile --windowed --hidden-import='PIL._tkinter_finder' --icon='${ICON}' --add-data="./.env:." --add-data='./chart-671.png:.' --add-data='./thechart_data.csv:.' src/main.py
cp -f ./thechart_data.csv ${ROOT}/Documents/
cp -f ./dist/${TARGET} ${ROOT}/Applications/
cp -f ./deploy/${TARGET}.desktop ${ROOT}/.local/share/applications/
desktop-file-validate ${ROOT}/.local/share/applications/${TARGET}.desktop
run: $(VENV_ACTIVATE) ## Run the application
@echo "Running the application..."
$(PYTHON) src/main.py
start: ## Start the application
@echo "Starting the application..."
docker-compose up -d --build
stop: ## Stop the application
@echo "Stopping the application..."
docker-compose down
test: ## Run the tests
@echo "Running the tests..."
.venv/bin/python -m pytest tests/ -v --cov=src --cov-report=term-missing --cov-report=html:htmlcov
test-unit: ## Run unit tests only
@echo "Running unit tests..."
.venv/bin/python -m pytest tests/ -v --tb=short
test-coverage: ## Run tests with detailed coverage report
@echo "Running tests with coverage..."
.venv/bin/python -m pytest tests/ --cov=src --cov-report=html:htmlcov --cov-report=xml --cov-report=term-missing
test-watch: ## Run tests in watch mode
@echo "Running tests in watch mode..."
.venv/bin/python -m pytest-watch tests/ -- -v --cov=src
test-debug: ## Run tests with debug output
@echo "Running tests with debug output..."
.venv/bin/python -m pytest tests/ -v -s --tb=long --cov=src
test-dose-tracking: ## Test the dose tracking functionality
@echo "Testing dose tracking functionality..."
.venv/bin/python scripts/test_dose_tracking.py
test-scrollable-input: ## Test the scrollable input frame UI
@echo "Testing scrollable input frame..."
.venv/bin/python scripts/test_scrollable_input.py
test-edit-functionality: ## Test the enhanced edit functionality
@echo "Testing edit functionality..."
.venv/bin/python scripts/test_edit_functionality.py
test-edit-window: $(VENV_ACTIVATE) ## Test edit window functionality (save and delete)
@echo "Running edit window functionality test..."
$(PYTHON) scripts/test_edit_window_functionality.py
migrate-csv: $(VENV_ACTIVATE) ## Migrate CSV to new format with dose tracking
@echo "Migrating CSV to new format..."
.venv/bin/python migrate_csv.py
lint: ## Run the linter
@echo "Running the linter..."
docker-compose exec ${TARGET} pipenv run pre-commit run --all-files
format: ## Format the code
@echo "Formatting the code..."
docker-compose exec ${TARGET} pipenv run pre-commit run --all-files --show-diff
attach: ## Open a shell in the container
@echo "Opening a shell in the container..."
docker-compose exec -it ${TARGET} /bin/bash
shell: ## Open a shell in the local environment
@echo "Opening a shell in the local environment..."
source ./.venv/bin/activate.${SHELL} && /bin/${SHELL}
requirements: ## Export the requirements to a file
@echo "Exporting requirements to requirements.txt..."
poetry export --without-hashes -f requirements.txt -o requirements.txt
commit-emergency: ## Emergency commit (bypasses pre-commit hooks) - USE SPARINGLY
@echo "⚠️ WARNING: Emergency commit bypasses all pre-commit checks!"
@echo "This should only be used in true emergencies."
@read -p "Enter commit message: " msg; \
git add . && git commit --no-verify -m "$$msg"
@echo "✅ Emergency commit completed. Please run tests manually when possible."
.PHONY: install build attach deploy run start stop test lint format shell requirements commit-emergency test-dose-tracking test-scrollable-input test-edit-functionality test-edit-window migrate-csv help