- 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.
95 lines
4.5 KiB
Makefile
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
|