ee: редактор запускается через subprocess вместо pty invoke
- invoke оставлял на внешнем терминале ixon, и Ctrl+S/Ctrl+Q съедал драйвер терминала как XOFF/XON — до micro они не доходили - код возврата ansible-vault теперь пробрасывается наружу
This commit is contained in:
@@ -112,7 +112,16 @@ def decrypt(ctx: Context, file: str) -> None:
|
|||||||
@task(aliases=["ee"])
|
@task(aliases=["ee"])
|
||||||
def edit_encrypted(ctx: Context, path: str) -> None:
|
def edit_encrypted(ctx: Context, path: str) -> None:
|
||||||
"""Редактировать vault-файл через ansible-vault edit (без расшифровки на диск)"""
|
"""Редактировать 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 ---
|
# --- Синхронизация общих ролей с каноном ansible-roles ---
|
||||||
|
|||||||
Reference in New Issue
Block a user