From 3d03577a1c9f3d1d08513490e15651e7f9ce0c2d Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 21 Nov 2025 21:56:29 +0100 Subject: replaytool port argument + error contexts --- server/replaytool/src/render.rs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'server') diff --git a/server/replaytool/src/render.rs b/server/replaytool/src/render.rs index 96691e91..fa6e2fc4 100644 --- a/server/replaytool/src/render.rs +++ b/server/replaytool/src/render.rs @@ -17,6 +17,8 @@ */ use crate::replay::replay; +#[cfg(unix)] +use anyhow::Context; use anyhow::{Result, anyhow}; use log::info; use std::{path::PathBuf, random::random, str::FromStr}; @@ -51,11 +53,12 @@ pub struct RenderArgs { headless_compositor: String, #[arg(long, default_value = "/usr/share/hurrycurry/client.pck")] client_pck: PathBuf, + #[arg(long, default_value = "27090")] + port: u16, } pub async fn render(a: RenderArgs) -> Result<()> { - let port = 27090; - let ws_listener = TcpListener::bind(("127.0.0.1", port)).await?; + let ws_listener = TcpListener::bind(("127.0.0.1", a.port)).await?; let cwd = PathBuf::from_str("/tmp") .unwrap() @@ -82,9 +85,13 @@ window/size/viewport_height={height} .await?; #[cfg(unix)] - tokio::fs::symlink(&a.client_pck, cwd.join("client.pck")).await?; + tokio::fs::symlink(&a.client_pck, cwd.join("client.pck")) + .await + .context("symlinking pck")?; #[cfg(not(unix))] - tokio::fs::copy(&a.client_pck, cwd.join("client.pck")).await?; + tokio::fs::copy(&a.client_pck, cwd.join("client.pck")) + .await + .context("copying pck")?; let mut args = Vec::new(); if a.headless { @@ -113,11 +120,14 @@ window/size/viewport_height={height} if let Some(path) = &camera_path { args.extend(["--replay-camera", path]); } - let uri = format!("ws://127.0.0.1:{port}"); + let uri = format!("ws://127.0.0.1:{}", a.port); args.push(&uri); info!("using commandline {:?}", args.join(" ")); - let mut client = Command::new(args[0]).args(&args[1..]).spawn()?; + let mut client = Command::new(args[0]) + .args(&args[1..]) + .spawn() + .context("starting command")?; info!("listening for websockets on {}", ws_listener.local_addr()?); replay(&ws_listener, &a.input).await?; -- cgit v1.3