From 6d28d361e2a6966358145c693d862dc815a58ac6 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sat, 25 Jul 2026 16:23:03 +0300 Subject: [PATCH] =?UTF-8?q?ee:=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=D0=B5?= =?UTF-8?q?=D1=82=D1=81=D1=8F=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20subproces?= =?UTF-8?q?s=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20pty=20invoke?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - invoke оставлял на внешнем терминале ixon, и Ctrl+S/Ctrl+Q съедал драйвер терминала как XOFF/XON — до micro они не доходили - код возврата ansible-vault теперь пробрасывается наружу --- tasks.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tasks.py b/tasks.py index 3cf4830..2bf5ee9 100644 --- a/tasks.py +++ b/tasks.py @@ -112,7 +112,16 @@ def decrypt(ctx: Context, file: str) -> None: @task(aliases=["ee"]) def edit_encrypted(ctx: Context, path: str) -> None: """Редактировать vault-файл через ansible-vault edit (без расшифровки на диск)""" - ctx.run(f"uv run ansible-vault edit {path}", pty=True) + # Намеренно не через ctx.run: invoke заводит свой pty, а внешний терминал + # переводит лишь в cbreak — ixon остаётся включённым, и Ctrl+S/Ctrl+Q съедает + # драйвер терминала как XOFF/XON, до редактора они не доходят. subprocess + # отдаёт редактору настоящий tty, и его raw-режим гасит ixon сам. + result = subprocess.run(["uv", "run", "ansible-vault", "edit", path]) + if result.returncode != 0: + raise Exit( + f"ansible-vault edit: код возврата {result.returncode}", + code=result.returncode, + ) # --- Синхронизация общих ролей с каноном ansible-roles ---