Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## 2.2.0

- Feature: Add optional `ruff check --fix` support to ruff-format target
[jensens, 2025-11-11]

## 2.1.0

- Enhancement: Use tables in the generated sphinx code for topic/domains.
Expand Down
23 changes: 23 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,16 @@ MXMAKE?=-e .
# Default: src
RUFF_SRC?=src

# Enable ruff check --fix when running ruff-format.
# Set to `true` to enable automatic fixes.
# Default: false
RUFF_FIXES?=false

# Enable unsafe fixes when RUFF_FIXES is enabled.
# Set to `true` to enable unsafe fixes.
# Default: false
RUFF_UNSAFE_FIXES?=false

## qa.isort

# Source folder to scan for Python files to run isort on.
Expand Down Expand Up @@ -352,6 +362,15 @@ ifeq ($(RUFF_SRC),src)
RUFF_SRC:=$(PYTHON_PROJECT_PREFIX)src
endif

# Build ruff check flags based on settings
ifeq ("$(RUFF_FIXES)","true")
ifeq ("$(RUFF_UNSAFE_FIXES)","true")
RUFF_FIX_FLAGS=--fix --unsafe-fixes
else
RUFF_FIX_FLAGS=--fix
endif
endif

RUFF_TARGET:=$(SENTINEL_FOLDER)/ruff.sentinel
$(RUFF_TARGET): $(MXENV_TARGET)
@echo "Install Ruff"
Expand All @@ -367,6 +386,10 @@ ruff-check: $(RUFF_TARGET)
ruff-format: $(RUFF_TARGET)
@echo "Run ruff format"
@ruff format $(RUFF_SRC)
ifeq ("$(RUFF_FIXES)","true")
@echo "Run ruff check $(RUFF_FIX_FLAGS)"
@ruff check $(RUFF_FIX_FLAGS) $(RUFF_SRC)
endif

.PHONY: ruff-dirty
ruff-dirty:
Expand Down
22 changes: 22 additions & 0 deletions src/mxmake/tests/test_topics.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,28 @@ def test_get_domain(self):
domain = topics.get_domain("core.mxenv")
self.assertEqual(domain.fqn, "core.mxenv")

def test_ruff_domain_settings(self):
"""Test ruff domain has correct settings for check --fix feature."""
domain = topics.get_domain("qa.ruff")
self.assertEqual(domain.fqn, "qa.ruff")

settings = {s.name: s for s in domain.settings}

# Verify RUFF_FIXES setting
self.assertIn("RUFF_FIXES", settings)
ruff_fixes = settings["RUFF_FIXES"]
self.assertEqual(ruff_fixes.default, "false")
self.assertIn("ruff check --fix", ruff_fixes.description)

# Verify RUFF_UNSAFE_FIXES setting
self.assertIn("RUFF_UNSAFE_FIXES", settings)
ruff_unsafe = settings["RUFF_UNSAFE_FIXES"]
self.assertEqual(ruff_unsafe.default, "false")
self.assertIn("unsafe fixes", ruff_unsafe.description)

# Verify RUFF_SRC setting still exists
self.assertIn("RUFF_SRC", settings)

@testing.temp_directory
def test_Domain(self, tmpdir):
domain_path = tmpdir / "domain.mk"
Expand Down
26 changes: 26 additions & 0 deletions src/mxmake/topics/qa/ruff.mk
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,23 @@
#:[target.ruff]
#:description = Run ruff.
#:
#:[target.ruff-format]
#:description = Run ruff format. Optionally apply fixes with RUFF_FIXES=true.
#:
#:[setting.RUFF_SRC]
#:description = Source folder to scan for Python files to run ruff on.
#:default = src
#:
#:[setting.RUFF_FIXES]
#:description = Enable ruff check --fix when running ruff-format.
#: Set to `true` to enable automatic fixes.
#:default = false
#:
#:[setting.RUFF_UNSAFE_FIXES]
#:description = Enable unsafe fixes when RUFF_FIXES is enabled.
#: Set to `true` to enable unsafe fixes.
#:default = false
#:
#:[target.ruff-dirty]
#:description = Marks ruff dirty
#:
Expand All @@ -25,6 +38,15 @@ ifeq ($(RUFF_SRC),src)
RUFF_SRC:=$(PYTHON_PROJECT_PREFIX)src
endif

# Build ruff check flags based on settings
ifeq ("$(RUFF_FIXES)","true")
ifeq ("$(RUFF_UNSAFE_FIXES)","true")
RUFF_FIX_FLAGS=--fix --unsafe-fixes
else
RUFF_FIX_FLAGS=--fix
endif
endif

RUFF_TARGET:=$(SENTINEL_FOLDER)/ruff.sentinel
$(RUFF_TARGET): $(MXENV_TARGET)
@echo "Install Ruff"
Expand All @@ -40,6 +62,10 @@ ruff-check: $(RUFF_TARGET)
ruff-format: $(RUFF_TARGET)
@echo "Run ruff format"
@ruff format $(RUFF_SRC)
ifeq ("$(RUFF_FIXES)","true")
@echo "Run ruff check $(RUFF_FIX_FLAGS)"
@ruff check $(RUFF_FIX_FLAGS) $(RUFF_SRC)
endif

.PHONY: ruff-dirty
ruff-dirty:
Expand Down