Files
klemek 5fe201e2f8
Python Lint CI / ruff (push) Successful in 5m39s
Python Lint CI / ty (push) Successful in 5m36s
Python Lint CI / ruff-format-check (push) Failing after 5m37s
feat: --add-all
2026-11-08 13:27:30 +01:00

120 lines
2.7 KiB
Makefile

# ENV
ifeq (,$(shell which uv))
ifeq (,$(shell python3 -m uv --help||python3 -m pip install --user uv)) # detect uv install
UV ?= false
endif
UV ?= python3 -m uv
endif
UV ?= uv
RUFF ?= $(UV) run --active ruff
TY ?= $(UV) run --active ty
UNITTEST ?= $(UV) run --active -m unittest
COVERAGE ?= $(UV) run --active coverage
OPEN ?= xdg-open
PROJECT_NAME ?= $(shell $(UV) version|cut -d ' ' -f 1)
RUN_ARGS ?=
# DOCS
.PHONY: help
help: ## show this message
@echo "Usage: $(MAKE) [target1] [target2] ..."
@echo ""
@echo "Commands/Targets:"
@cat $(MAKEFILE_LIST) | grep -E '(^[a-zA-Z0-9_%-]+:.*?##.*$$)|(^##)' | awk 'BEGIN {FS = ":.*?## "}{printf "\033[32m%-20s\033[0m %s\n", $$1, $$2}' | sed -e 's/\[32m##/[33m/'
@echo ""
@echo "Environment:"
@cat $(MAKEFILE_LIST) | grep -E '^[a-zA-Z0-9_-]+\s*\??=.*$$' | grep -Eo '^[a-zA-Z0-9_-]+' | xargs -I {} $(MAKE) -s print-{} 2> /dev/null
.PHONY: print-%
print-%:
@echo -e '\033[32m$*\033[0m = $($*)'
# FILES
.venv: uv.lock
$(MAKE) --no-print-directory uv-sync
# ACTIONS
.PHONY: install
install: uv-sync ## install project
.PHONY: update
update: uv-upgrade ## update project dependencies
.PHONY: run
run: uv-run ## run project
.PHONY: sample-all
sample-all: sample-cp437 sample-cw sample-pmlomb ## generate all samples
.PHONY: sample-%
sample-%: ## generate sample (cp437/cw/pmlomb)
make --no-print-directory uv-run-sample-$*
.PHONY: format
format: ruff-fix ruff-format ## format project
.PHONY: lint
lint: ruff ruff-format-check ty ## lint project
.PHONY: build
build: docker-build ## build project
# TOOLS
.PHONY: uv-sync
uv-sync: ## uv sync
$(UV) sync --active
.PHONY: uv-update
uv-upgrade: ## uv sync upgrade
$(UV) sync --active --upgrade
.PHONY: uv-run
uv-run: .venv ## uv run (project)
$(UV) run --active $(PROJECT_NAME) $(RUN_ARGS)
uv-run-sample-%: .venv ## uv run (project) sample/(xxx)
$(UV) run --active $(PROJECT_NAME) \
--name $* \
--input sample/$*_8x8.png \
--glyph-names sample/$*_names.txt \
--sets sample/$*_sets.csv \
--sentences-input sample/$*_sentences.txt \
--functions \
--includes \
--add-empty \
--add-all \
.PHONY: ruff
ruff: .venv ## ruff check
$(RUFF) check
.PHONY: ruff-fix
ruff-fix: .venv ## ruff check (and fix)
$(RUFF) check --fix --unsafe-fixes
.PHONY: ruff-format
ruff-format: .venv ## ruff format
$(RUFF) format
.PHONY: ruff-format-check
ruff-format-check: .venv ## ruff format (check only)
$(RUFF) format --check
.PHONY: ty
ty: .venv ## ty check
$(TY) check
.PHONY: release-%
release-%: .venv ## release major/minor/patch
$(UV) version --bump=$*
git add pyproject.toml uv.lock
git commit -m "chore: $$(uv version --short)"
git tag "release/$$(uv version --short)" -m "$$(uv version)"
$(UV) build