useShell

fluxlay.yaml で宣言されたシェルコマンドを実行し、オプションで xterm ターミナルに出力をレンダリングします。

インポート

import { useShell } from "@fluxlay/react";

シグネチャ

function useShell(commandId: string, options?: UseShellOptions): UseShellReturn;

パラメータ

パラメータ説明
commandIdstringfluxlay.yamlshell セクションで宣言されたコマンド ID。
optionsUseShellOptionsオプションの設定。

UseShellOptions

プロパティデフォルト説明
refreshIntervalnumber30000コマンドを再実行する間隔(ミリ秒)。
showStdoutbooleantrue標準出力をターミナルに書き込む。
showStderrbooleanfalse標準エラーをターミナルに書き込む。
terminalTerminalInstance | nullundefined出力をレンダリングする useTerminal() のターミナルインスタンス。
columnsnumber擬似ターミナルの列幅。
linesnumber擬似ターミナルの行の高さ。

戻り値

プロパティ説明
execute() => Promise<void>コマンドを手動で実行。
isRunningbooleanコマンド実行中かどうか。
errorstring | null実行失敗時のエラーメッセージ。
resultShellResult | null最後の実行結果。

ShellResult

プロパティ説明
successbooleanコマンドがステータス 0 で終了したか。
stdoutstring標準出力。
stderrstring標準エラー。
statusCodenumber | null終了ステータスコード。シグナルで終了した場合は null
signalnumber | nullプロセスを終了させたシグナル番号。通常終了の場合は null

使用例

ターミナル付き

const { terminalRef, instance } = useTerminal({
  theme: TerminalThemes.nord
});
 
const { error } = useShell("macchina", {
  terminal: instance,
  refreshInterval: 60000
});

ターミナルなし

const { result, isRunning } = useShell("fetch-ip", {
  refreshInterval: 10000
});
 
return <p>{result?.stdout}</p>;

動作

  • マウント時に 1 回実行。
  • commandId 変更時に再実行。
  • refreshInterval が設定されている場合、その間隔で自動実行。
  • terminal インスタンスが渡された場合、ANSI 対応で出力をターミナルに書き込み。