CLIツールの出力をリアルタイムで前処理する方法は?

CLIツールの出力をリアルタイムで前処理する方法は?

文脈上私がやりたいことはREPLに前処理器を追加することです。具体的にはnix repl

その理由は、出力に次の書式設定ステップを追加したいからです。

$ nix repl
Welcome to Nix 2.17.1. Type :? for help.

nix-repl> ↵

nix-repl> { a = 1; b = 2; c = 3; } ↵
{ a = 1; b = 2; c = 3; }
$ nix repl
Welcome to Nix 2.17.1. Type :? for help.

nix-repl> ↵

nix-repl> { a = 1; b = 2; c = 3; } ↵
{ 
  a = 1; 
  b = 2; 
  c = 3; 
}

REPLの外では、これを使ってこれを行うことができるので、nixfmt < <(echo "{ a = 1; b = 2; c = 3; }")REPLのすべての出力をリアルタイムで前処理できるなら、条件付きで書式を適用できると思います。

unbuffer、、、、stdbufパイプをさまざまな方法で試しましたが、socatすべての試行で次のコマンドが実行されるまでSTDINが消えたり、何も表示されなかったり、TABの完了が中断されました。答えが多すぎるので、どんな答えを詳しく調べるべきかわかりません。おそらく私がツールを誤って使用している可能性があり、ツールが正しいツールではない可能性があり、実際にREPLバイナリを変更しないとこれは不可能です。誰もが私を正しい方向に指すことができればとても感謝します。

答え1

nix replこれを行う実装された方法がないようです。すべてのrepl出力は標準出力に移動します。

nix replタグで始まる行間のすべての内容がnix-repl>渡されるように、stdoutの出力を後処理するプログラムをビルドするか、nixfmtNixのreplコード自体にビルドする必要があります。

前者がどれほど深刻であるかを考えると、後者がより良いかもしれません。

関連情報