aboutsummaryrefslogtreecommitdiff
path: root/.run/src/bin/ci.py
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-19 05:54:00 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-19 06:15:20 +0800
commitec9edc294fd5e7e29977fc7b0e6fb953422bc0e2 (patch)
treebbf89ef4457b8de8a8a9bca5668045d612d27572 /.run/src/bin/ci.py
parent06dfc27194c11e1d1033c292c759a1c5d82e780b (diff)
chore: reorganize dev tools into dev/ directory and consolidate configs
Move CI, dev tools, and configs from root-level scattered locations into a unified `dev/` directory structure. Update all references across build scripts, documentation, and editor configurations. Also consolidate editor config generation into build.rs for automated synchronization of rust-analyzer settings across VS Code and Zed.
Diffstat (limited to '.run/src/bin/ci.py')
-rw-r--r--.run/src/bin/ci.py75
1 files changed, 0 insertions, 75 deletions
diff --git a/.run/src/bin/ci.py b/.run/src/bin/ci.py
deleted file mode 100644
index 6234a19..0000000
--- a/.run/src/bin/ci.py
+++ /dev/null
@@ -1,75 +0,0 @@
-"""Full CI orchestration for the mingling project.
-
-Runs every `cargo ci` step in order: lock the workspace, run all checks,
-refresh the generated artifacts, then unlock. The final `git-unlock` doubles
-as the idempotency check: it fails with a non-zero exit code when the run
-left the working tree dirty.
-
-The script locates the git repository root and runs with it as the working
-directory, so it can be invoked from anywhere inside the repo.
-"""
-
-import os
-import subprocess
-import sys
-from pathlib import Path
-
-# The pipeline steps, in execution order, as (command, args) pairs.
-STEPS: list[tuple[str, list[str]]] = [
- ("git-lock", []),
- ("report-clean", []),
- ("build-check", []),
- ("clippy-check", []),
- ("test-all", []),
- ("example-check", []),
- ("docs-check", []),
- ("example-refresh", []),
- ("docsify-refresh", []),
- ("features-refresh", []),
- # Idempotency check: exits non-zero if CI contaminated the workspace, and
- # prints the diff of the contamination before restoring.
- ("git-unlock", ["--show-diff"]),
-]
-
-
-def find_repo_root() -> Path:
- """Return the nearest ancestor directory containing `.git`."""
- current = Path.cwd()
- for directory in (current, *current.parents):
- if (directory / ".git").is_dir():
- return directory
- raise SystemExit("error: not inside a git repository")
-
-
-def main() -> int:
- root = find_repo_root()
- os.chdir(root)
-
- # Signature banner: docs/res/ci_banner.txt, relative to this script
- # (.run/src/bin -> four levels up is the repo root).
- banner = (
- Path(__file__).resolve().parent.parent.parent.parent
- / "docs"
- / "res"
- / "ci_banner.txt"
- )
- try:
- print(banner.read_text(encoding="utf-8"), end="")
- except OSError:
- pass
-
- for command, args in STEPS:
- print(f"==> cargo ci {' '.join([command, *args])}")
- result = subprocess.run(["cargo", "ci", command, *args], check=False)
- if result.returncode != 0:
- print(
- f"error: step `{command}` failed with exit code {result.returncode}",
- file=sys.stderr,
- )
- return result.returncode
-
- return 0
-
-
-if __name__ == "__main__":
- sys.exit(main())