diff --git a/CHANGES.md b/CHANGES.md index 24112f8..1bfe1e0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,9 @@ # Changelog +## 1.2.0 (unreleased) + +- add pyrefly type checker support + ## 1.1.0 (2025-03-20) - Chore: Build-system update and minor cleanups. diff --git a/src/mxmake/topics/qa/pyrefly.mk b/src/mxmake/topics/qa/pyrefly.mk new file mode 100644 index 0000000..6b994e7 --- /dev/null +++ b/src/mxmake/topics/qa/pyrefly.mk @@ -0,0 +1,49 @@ +#:[pyrefly] +#:title = pyrefly +#:description = Static code analysis with pyrefly https://pyrefly.org/ +#:depends = core.packages +#: +#:[target.pyrefly] +#:description = Run pyrefly. +#: +#:[setting.PYREFLY_SRC] +#:description = Source folder for code analysis. Left empty to use value from pyproject.toml +#:default = src/** +#: +#:[setting.PYREFLY_REQUIREMENTS] +#:description = Python requirements to be installed (via pip). +#:default = +#: +#:[target.pyrefly-dirty] +#:description = Marks pyrefly dirty +#: +#:[target.pyrefly-clean] +#:description = Uninstall pyrefly and removes cached data. + +############################################################################## +# pyrefly +############################################################################## + +PYREFLY_TARGET:=$(SENTINEL_FOLDER)/pyrefly.sentinel +$(PYREFLY_TARGET): $(MXENV_TARGET) + @echo "Install pyrefly" + @$(PYTHON_PACKAGE_COMMAND) install pyrefly $(PYREFLY_REQUIREMENTS) + @touch $(PYREFLY_TARGET) + +.PHONY: pyrefly +pyrefly: $(PACKAGES_TARGET) $(PYREFLY_TARGET) + @echo "Run pyrefly" + @pyrefly $(PYREFLY_SRC) + +.PHONY: pyrefly-dirty +pyrefly-dirty: + @rm -f $(PYREFLY_TARGET) + +.PHONY: pyrefly-clean +pyrefly-clean: pyrefly-dirty + @test -e $(MXENV_PYTHON) && $(MXENV_PYTHON) -m pip uninstall -y pyrefly || : + +INSTALL_TARGETS+=$(PYREFLY_TARGET) +CHECK_TARGETS+=pyrefly-check +CLEAN_TARGETS+=pyrefly-clean +DIRTY_TARGETS+=pyrefly-dirty