Skip to content

Arquivos

Plugins que coletam listas ou guiam edição offline usam pastas na raiz do repositório TamanduCLI.

from api.output_paths import OUTPUT_DIR, INPUT_DIR, ensure_output_dir, ensure_input_dir
ConstanteCaminhoUso
OUTPUT_DIRoutput/Snapshot original do dispositivo
INPUT_DIRinput/Cópia para edição pelo usuário

_APP_ROOT é a raiz do repo (pai de src/).

ensure_output_dir()
ensure_input_dir()

Equivalente a mkdir(parents=True, exist_ok=True).

from api.list_wire import ListWireCollectionSession
session = ListWireCollectionSession("param_list", record_raw_wire_lines=True)
# ... coletar ...
session.write_file_if_non_empty(OUTPUT_DIR / "param_list.txt")

Retorna False se não houver conteúdo.

Padrão output → input (edição guiada)

Section titled “Padrão output → input (edição guiada)”

Usado por param_edit e map_edit:

import shutil
from api.output_paths import OUTPUT_DIR, INPUT_DIR
out_path = OUTPUT_DIR / "param_list.txt"
in_path = INPUT_DIR / "param_list.txt"
ensure_output_dir()
ensure_input_dir()
shutil.copy2(out_path, in_path)
ctx.log(f"Edite {in_path} e salve.", "GREEN")

Depois da edição, leia de INPUT_DIR e compare com OUTPUT_DIR (ex.: difflib.unified_diff).

text = (OUTPUT_DIR / "map.txt").read_text(encoding="utf-8")
(INPUT_DIR / "map.txt").write_text(edited, encoding="utf-8")

Use sempre encoding="utf-8".

Para arquivos fora de output//input/, use pathlib.Path normalmente — a API não impede outros diretórios:

from pathlib import Path
log_path = Path(__file__).resolve().parent / "my_plugin.log"
log_path.write_text("evento\n", encoding="utf-8")

Prefira OUTPUT_DIR / INPUT_DIR para artefatos compartilhados com fluxos existentes da CLI.

@cli_command
async def cmd_export_map_csv(inv: WireCommand, ctx: CliHandlerContext) -> None:
_ = inv
# ... coletar map_get em session ...
csv_path = OUTPUT_DIR / "map.csv"
ensure_output_dir()
csv_path.write_text(session.data or "", encoding="utf-8")
ctx.log(f"💾 {csv_path}", "GREEN")

Interface (prompt_toolkit) — confirmações, menus e painéis.