fix: tuiからのPod作成の挙動を修正・開発時にcargo runでpodを起動する経路を実装

This commit is contained in:
2026-05-02 02:13:30 +09:00
parent 08da79822d
commit cb5cd1e3d1
5 changed files with 74 additions and 21 deletions
+20 -1
View File
@@ -1,4 +1,23 @@
{ pkgs }:
let
# Dev-only wrapper. tui の spawn 経路は `pod` バイナリを直に exec し、
# stderr の `INSOMNIA-READY` 行で握手するので、cargo の進捗や rustc の
# warning が混ざると tail に余計な行が積もり本当のエラーが押し出される。
# ここで一度ビルドを切り離し、成功時はビルド出力を一切捨てて素のバイナリ
# を exec、失敗時のみ build log を stderr に流して exit する。
pod-dev = pkgs.writeShellScriptBin "pod" ''
set -u
buildlog=$(mktemp)
trap 'rm -f "$buildlog"' EXIT
if ! cargo build --quiet -p pod 2>"$buildlog"; then
cat "$buildlog" >&2
exit 1
fi
manifest=$(cargo locate-project --workspace --message-format plain 2>/dev/null)
target_dir=''${CARGO_TARGET_DIR:-$(dirname "$manifest")/target}
exec "$target_dir/debug/pod" "$@"
'';
in
pkgs.mkShell {
packages = with pkgs; [
nixfmt
@@ -6,12 +25,12 @@ pkgs.mkShell {
git
rustc
cargo
pod-dev
];
buildInputs = with pkgs; [
pkg-config
openssl
];
INSOMNIA_POD_COMMAND = "cargo run -p pod --quiet --";
shellHook = ''
echo "dev-shell-loaded"
'';