mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 21:43:23 -05:00
refactor: split the pin gate from bump_commit
This commit is contained in:
1 parent
0b7acf1e7f
commit
421a7afb3f
1 file changed
+25
-26
+25
-26
@@ -2439,16 +2439,21 @@ def pending_recale(
|
|||||||
return pending
|
return pending
|
||||||
|
|
||||||
|
|
||||||
|
def _needs_review(report: ProfileReport, accept_changed: bool) -> bool:
|
||||||
|
"""Whether the report leaves a ref to read before the pin may move."""
|
||||||
|
if report.skipped or not report.head or report.pinned_tag:
|
||||||
|
return True
|
||||||
|
blocking = REVIEW_STATUSES if not accept_changed else (
|
||||||
|
s for s in REVIEW_STATUSES if s != "CHANGED"
|
||||||
|
)
|
||||||
|
return any((report.counts or {}).get(s) for s in blocking)
|
||||||
|
|
||||||
|
|
||||||
def bump_commit(
|
def bump_commit(
|
||||||
path: Path, report: ProfileReport, accept_changed: bool = False
|
path: Path, report: ProfileReport, accept_changed: bool = False
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Advance source_commit to HEAD when nothing needs a read again."""
|
"""Advance source_commit to HEAD when nothing needs a read again."""
|
||||||
if report.skipped or not report.head or report.pinned_tag:
|
if _needs_review(report, accept_changed):
|
||||||
return False
|
|
||||||
blocking = REVIEW_STATUSES if not accept_changed else (
|
|
||||||
s for s in REVIEW_STATUSES if s != "CHANGED"
|
|
||||||
)
|
|
||||||
if any((report.counts or {}).get(s) for s in blocking):
|
|
||||||
return False
|
return False
|
||||||
text = path.read_text(encoding="utf-8")
|
text = path.read_text(encoding="utf-8")
|
||||||
if pending_recale(report, accept_changed, text):
|
if pending_recale(report, accept_changed, text):
|
||||||
@@ -2466,32 +2471,26 @@ def bump_commit(
|
|||||||
return False
|
return False
|
||||||
expected = dict(document)
|
expected = dict(document)
|
||||||
expected["source_commit"] = report.head
|
expected["source_commit"] = report.head
|
||||||
new_text = text
|
new_text = _set_pin(text, document, "source_commit", report.head, "profiled_date")
|
||||||
if document.get("source_commit") == report.head:
|
|
||||||
pass
|
|
||||||
elif document.get("source_commit"):
|
|
||||||
new_text, _ = replace_field_line(
|
|
||||||
new_text, "source_commit", str(document["source_commit"]), report.head
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
new_text = insert_after_line(
|
|
||||||
new_text, "profiled_date", f'source_commit: "{report.head}"'
|
|
||||||
)
|
|
||||||
if upstream_moves:
|
if upstream_moves:
|
||||||
expected["upstream_commit"] = report.upstream_head
|
expected["upstream_commit"] = report.upstream_head
|
||||||
if document.get("upstream_commit"):
|
new_text = _set_pin(
|
||||||
new_text, _ = replace_field_line(
|
new_text, document, "upstream_commit", report.upstream_head, "source_commit"
|
||||||
new_text, "upstream_commit", str(document["upstream_commit"]),
|
)
|
||||||
report.upstream_head,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
new_text = insert_after_line(
|
|
||||||
new_text, "source_commit", f'upstream_commit: "{report.upstream_head}"'
|
|
||||||
)
|
|
||||||
apply_edit(path, new_text, expected)
|
apply_edit(path, new_text, expected)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def _set_pin(text: str, document: dict, field: str, value: str, after: str) -> str:
|
||||||
|
"""Write *field* as *value*, replacing its line or adding one after *after*."""
|
||||||
|
current = document.get(field)
|
||||||
|
if current == value:
|
||||||
|
return text
|
||||||
|
if current:
|
||||||
|
return replace_field_line(text, field, str(current), value)[0]
|
||||||
|
return insert_after_line(text, after, f'{field}: "{value}"')
|
||||||
|
|
||||||
|
|
||||||
def _git_history(path: Path) -> list[str]:
|
def _git_history(path: Path) -> list[str]:
|
||||||
"""Commits touching the profile, newest first, empty outside a repo."""
|
"""Commits touching the profile, newest first, empty outside a repo."""
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
|
|||||||
Reference in new issue
Block a user