Skip to content

Commit c2522f8

Browse files
committed
fix: smarter printout of changes
Signed-off-by: Henry Schreiner <[email protected]>
1 parent 2878c8b commit c2522f8

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

src/scikit_build_core/_shutil.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Run:
2121
cwd: os.PathLike[str] | None = None
2222

2323
# Stores last printout, for cleaner debug logging
24-
_prev_env: ClassVar[str] = ""
24+
_prev_env: ClassVar[dict[str, str]] = {}
2525

2626
def live(self, *args: str | os.PathLike[str]) -> None:
2727
"""
@@ -47,12 +47,19 @@ def _run(
4747
]
4848

4949
if self.env:
50-
msg = "\n ".join(f"{k}={v}" for k, v in sorted(self.env.items()))
51-
if msg != self._prev_env:
50+
if not self._prev_env:
51+
type(self)._prev_env = self.env.copy()
52+
msg = "\n ".join(f"{k}={v}" for k, v in sorted(self.env.items()))
5253
logger.debug("RUNENV:\n {}", msg)
5354
else:
54-
logger.debug("RUNENV: same as last run")
55-
type(self)._prev_env = msg
55+
msg = "\n ".join(
56+
f"{self._key_diff(k)} {k}={self.env.get(k, '<unset>')}"
57+
for k in sorted(self.env.keys() | self._prev_env.keys())
58+
if self._prev_env.get(k, None) != self.env.get(k, None)
59+
)
60+
logger.debug("RUNENV - changes since last run only:\n {}", msg)
61+
type(self)._prev_env = self.env.copy()
62+
5663
logger.debug("RUN: {}", " ".join(options))
5764

5865
return subprocess.run(
@@ -63,3 +70,11 @@ def _run(
6370
env=self.env,
6471
cwd=self.cwd,
6572
)
73+
74+
def _key_diff(self, k: str) -> str:
75+
assert self.env
76+
if k in self.env and k not in self._prev_env:
77+
return "+"
78+
if k in self._prev_env and k not in self.env:
79+
return "-"
80+
return " "

0 commit comments

Comments
 (0)