fix(gear): pexpect 実行のコマンド文字列連結と SSH ホスト鍵確認プロンプト未対応
問題
1. コマンドの文字列連結
gear.py:83-84, 150 で " ".join(cmd) した文字列を pexpect.spawn() に渡している。パスに空白や特殊文字が含まれると壊れる。subprocess.run 経路はリスト渡しで安全なのと非対称。
2. 初回接続のホスト鍵確認に未対応
gear.py:153 は [Pp]assword: しか expect していないため、known_hosts 未登録ホストでは
Are you sure you want to continue connecting (yes/no)? で停止し TIMEOUT になる。
3. タイムアウトが 30 秒固定
run_rsync(timeout=30) は呼び出し側から変更できない。大容量転送で expect(EOF, timeout=timeout) が途中で切れる懸念。テンプレートが示唆する FNB_TIMEOUT も未実装。
修正方針
pexpect.spawn("rsync", args=[...])の形にしてリスト渡しに統一- expect パターンにホスト鍵確認プロンプトを追加(自動 yes はせず、ユーザーへ案内して中断)
- タイムアウトを環境変数
FNB_TIMEOUTまたは設定ファイルから指定可能にする - 転送中の EOF 待ちはプロンプト待ちと別のタイムアウト(無制限 or 長め)にする
該当箇所
src/fnb/gear.py:83-84, 109-223src/fnb/env.py(FNB_TIMEOUT 読み取り追加)