mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-11-10 22:27:08 +01:00
Two workflows, one per gate, each checking out kuhyx/utils into .utils and calling the shared script -- the pattern every other repo here uses. pre-commit.yml sets UTILS_ROOT to that checkout, without which the shims fail with "shared gate not found", and both use fetch-depth 1 because the history is ~494 MB and no gate reads it. install.sh ends by verifying and exits non-zero if the gate cannot run; a warning there would just recreate the bug it exists to prevent, since this repo had no hooks at all until now. Confirmed both ways: --check exited 1 while the hooks were missing, then 0 once installed. run.sh separates `status` (probe, seconds, safe in CI) from `run <dir>` (actually executes one project). Conflating them is not hypothetical -- the first version of the probe did exactly that and it cost 120 seconds and a scare. Some course dirs already ship a run.sh from years ago, and Programming/PSD/run.sh installs packages with sudo and starts Kafka; calling it with an unknown --probe flag does not probe anything, it runs the project. It blocked on a sudo prompt rather than installing (verified against /var/log/pacman.log and the absence of a yay clone), but only by luck. So probe_one now invokes a runner ONLY if it declares --probe, wraps it in `timeout 20s` as defence in depth, and reports anything else as unprobed without touching it. All 44 directories now probe instantly. DOCS-runnability.md is generated with a per-environment column. Recording one global status would make the CI check red by construction, since `runnable` locally and `blocked` on ubuntu-latest is the normal case for the MATLAB, Unity and .NET directories rather than a drift signal. Per-directory run.sh files are the next step; all 44 currently read unprobed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
31 lines
874 B
YAML
31 lines
874 B
YAML
name: md-naming
|
|
|
|
# Deliberately a SEPARATE workflow from pre-commit.yml: one workflow per gate,
|
|
# so a naming failure is legible on its own rather than buried in a suite.
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
md-naming:
|
|
name: markdown naming convention
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
# The gate and its exemption list live in the shared utils repo so every
|
|
# repo enforces the same rule. Checking it out beats vendoring a copy,
|
|
# which is how a gate and a survey start disagreeing.
|
|
- name: Check out the shared gate
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: kuhyx/utils
|
|
path: .utils
|
|
|
|
- name: Enforce the naming convention
|
|
run: bash .utils/scripts/check_md_naming.sh --all
|