UV ?= uv
PROJECT_DIR ?= .

.PHONY: run check format install clean publish

run:
	$(UV) run smfetch

format:
	$(UV) run ruff format $(PROJECT_DIR)

check:
	$(UV) run ruff check --fix --select I,F,UP,B $(PROJECT_DIR)
	$(UV) run ty check $(PROJECT_DIR)

install: clean format check
	$(UV) sync

clean:
	find $(PROJECT_DIR) -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
	find $(PROJECT_DIR) -type f -name "*.py[co]" -delete 2>/dev/null || true
	rm -rf $(PROJECT_DIR)/.ruff_cache $(PROJECT_DIR)/.ty_cache $(PROJECT_DIR)/.mypy_cache $(PROJECT_DIR)/.pyright $(PROJECT_DIR)/.eggs 2>/dev/null || true
	rm -rf $(PROJECT_DIR)/dist $(PROJECT_DIR)/build $(PROJECT_DIR)/*.egg-info 2>/dev/null || true
	rm -rf $(PROJECT_DIR)/.pytest_cache $(PROJECT_DIR)/.coverage* $(PROJECT_DIR)/htmlcov 2>/dev/null || true

publish:
	@CURRENT_VERSION=$$($(UV) version --short); \
	echo "Current version: $$CURRENT_VERSION"; \
	read -p "Enter new version (or press Enter to keep current): " NEW_VERSION; \
	if [ -n "$$NEW_VERSION" ]; then \
		echo "Updating version to $$NEW_VERSION..."; \
		$(UV) version "$$NEW_VERSION"; \
	else \
		echo "Using current version: $$CURRENT_VERSION"; \
	fi; \
	$(MAKE) install; \
	$(UV) build; \
	$(UV) publish
