Skip to content
Merged
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 .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,8 @@ updates:
labels: [⬆️ Lock]
multi-ecosystem-group: lock
patterns: ["*"]
- package-ecosystem: pre-commit
directory: "/"
labels: [⬆️ Lock]
multi-ecosystem-group: lock
patterns: ["*"]
23 changes: 13 additions & 10 deletions src/compwa_policy/check_dev_files/dependabot.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@
from compwa_policy.check_dev_files.upgrade_lock import Frequency


def main(frequency: Frequency) -> None:
def main(frequency: Frequency) -> None: # noqa: C901
def dump_dependabot_config() -> None:
dependabot_path.parent.mkdir(exist_ok=True)
rt_yaml.dump(expected, dependabot_path)
msg = f"Updated {dependabot_path}"
raise PrecommitError(msg)

def append_ecosystem(ecosystem_name: str) -> None:
new_ecosystem = deepcopy(github_actions_ecosystem) # avoid YAML anchors
def get_ecosystem(ecosystem_name: str, /) -> dict[str, Any]:
new_ecosystem = deepcopy(template_ecosystem) # avoid YAML anchors
new_ecosystem["package-ecosystem"] = ecosystem_name
package_ecosystems.append(new_ecosystem)
return new_ecosystem

dependabot_path = CONFIG_PATH.github_workflow_dir.parent / "dependabot.yml"
template_path = COMPWA_POLICY_DIR / dependabot_path
Expand All @@ -36,20 +36,23 @@ def append_ecosystem(ecosystem_name: str) -> None:
expected = rt_yaml.load(template_path)
if frequency is not None:
expected["multi-ecosystem-groups"]["lock"]["schedule"]["interval"] = frequency
package_ecosystems = cast("list[dict[str, Any]]", expected["updates"])
github_actions_ecosystem = package_ecosystems[0]
if not is_committed(f"{CONFIG_PATH.github_workflow_dir / '*.yml'}"):
package_ecosystems.pop(0)
template_ecosystem = cast("dict[str, Any]", expected["updates"][0])
package_ecosystems: list[dict[str, Any]] = []
if is_committed(f"{CONFIG_PATH.github_workflow_dir / '*.yml'}"):
package_ecosystems.append(get_ecosystem("github-actions"))
if is_committed("**/Manifest.toml"):
append_ecosystem("julia")
package_ecosystems.append(get_ecosystem("julia"))
if is_committed(".pre-commit-config.yaml"):
package_ecosystems.append(get_ecosystem("pre-commit"))
if is_committed("uv.lock"):
append_ecosystem("uv")
package_ecosystems.append(get_ecosystem("uv"))

if not package_ecosystems:
dependabot_path.unlink(missing_ok=True)
msg = f"Removed {dependabot_path}"
raise PrecommitError(msg)
return
expected["updates"] = package_ecosystems
if not dependabot_path.exists():
dump_dependabot_config()
existing = rt_yaml.load(dependabot_path)
Expand Down
4 changes: 2 additions & 2 deletions src/compwa_policy/check_dev_files/poe.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ def _set_jupyter_lab_task(pyproject: ModifiablePyproject) -> None:
if isinstance(executor := existing.get("executor"), Mapping):
expected["executor"] = executor
elif "jupyter" in set(pyproject.get_table("dependency-groups", fallback=set())):
expected["executor"] = to_inline_table({"group": "jupyter"})
expected["executor"] = to_inline_table({"group": "jupyter"}) # ty:ignore[invalid-assignment]
if existing != expected:
tasks["lab"] = expected
msg = f"Set Poe the Poet jupyter task in {CONFIG_PATH.pyproject}"
Expand Down Expand Up @@ -183,7 +183,7 @@ def _set_nb_task(pyproject: ModifiablePyproject) -> None:
executor["with"] = existing_executor_with
else:
executor["with"] = "nbmake"
expected["executor"] = to_inline_table(executor)
expected["executor"] = to_inline_table(executor) # ty:ignore[invalid-assignment]
if existing != expected:
tasks["nb"] = expected
msg = f"Set Poe the Poet nb task in {CONFIG_PATH.pyproject}"
Expand Down
2 changes: 1 addition & 1 deletion src/compwa_policy/check_dev_files/upgrade_lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"quarterly": "0 3 7 */3 *",
"semiannually": "0 3 7 */6 *",
}
__TRIGGER_ECOSYSTEMS = {"julia", "uv"}
__TRIGGER_ECOSYSTEMS = {"julia", "pre-commit", "uv"}


def main(
Expand Down
Loading