TARGET=thechart VERSION=1.0.0 ROOT=/home/will ICON=chart-671.png 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: ## 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..." docker-compose exec ${TARGET} pipenv run pytest -v --tb=short 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..." eval (poetry env activate) requirements: ## Export the requirements to a file @echo "Exporting requirements to requirements.txt..." poetry export --without-hashes -f requirements.txt -o requirements.txt .PHONY: install build attach deploy run start stop test lint format shell requirements help