runShell

fluxlay.yaml で宣言されたシェルコマンドを実行する低レベルの命令型関数です。

インポート

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

シグネチャ

function runShell(commandId: string, options?: ShellOptions): Promise<ShellResult>;

パラメータ

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

ShellOptions

プロパティ説明
columnsnumber擬似ターミナルの列幅。
linesnumber擬似ターミナルの行の高さ。

戻り値

ShellResult

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

使用例

import { useEffect, useState } from "react";
import { runShell } from "@fluxlay/react";
 
function BatteryStatus() {
  const [battery, setBattery] = useState("");
 
  useEffect(() => {
    const fetch = async () => {
      const result = await runShell("battery", { columns: 80, lines: 24 });
      if (result.success) setBattery(result.stdout.trim());
    };
    fetch();
    const id = setInterval(fetch, 30000);
    return () => clearInterval(id);
  }, []);
 
  return <p>{battery}</p>;
}

使い分け

useShell ではなく runShell を使うのは以下の場合です:

  • 実行タイミングを完全に制御したい。
  • 表示前に出力をプログラム的に処理したい。
  • React のレンダリングサイクル外でコマンドを実行したい。

自動リフレッシュ付きのターミナルレンダリングには useShell を推奨します。