From 14388fc129cd450255d97a340f2927f46e5f0546 Mon Sep 17 00:00:00 2001 From: Drew Tada Date: Fri, 23 Feb 2024 13:01:05 -0500 Subject: [PATCH 1/2] patched --- kinode/packages/terminal/echo/src/lib.rs | 12 +++++------- kinode/packages/terminal/hi/src/lib.rs | 16 +++++++++++----- kinode/packages/terminal/m/src/lib.rs | 8 +------- kinode/packages/terminal/terminal/src/lib.rs | 8 ++++---- 4 files changed, 21 insertions(+), 23 deletions(-) diff --git a/kinode/packages/terminal/echo/src/lib.rs b/kinode/packages/terminal/echo/src/lib.rs index 6652126e2..a4dad54d9 100644 --- a/kinode/packages/terminal/echo/src/lib.rs +++ b/kinode/packages/terminal/echo/src/lib.rs @@ -1,4 +1,4 @@ -use kinode_process_lib::{await_next_request_body, call_init, println, Address, Response}; +use kinode_process_lib::{await_next_request_body, call_init, println, Address}; wit_bindgen::generate!({ path: "wit", @@ -16,10 +16,8 @@ fn init(_our: Address) { return; }; - let _ = Response::new() - .body(format!( - "{}", - String::from_utf8(args).unwrap_or("echo: error".into()) - )) - .send(); + match String::from_utf8(args.clone()) { + Ok(s) => println!("{}", s), + Err(_) => println!("{:?}", args), + } } diff --git a/kinode/packages/terminal/hi/src/lib.rs b/kinode/packages/terminal/hi/src/lib.rs index 35b736640..88f6e1100 100644 --- a/kinode/packages/terminal/hi/src/lib.rs +++ b/kinode/packages/terminal/hi/src/lib.rs @@ -1,5 +1,5 @@ use kinode_process_lib::{ - await_next_request_body, call_init, println, Address, Request, SendError, + await_next_request_body, call_init, println, Address, Request, SendError, SendErrorKind, }; wit_bindgen::generate!({ @@ -46,9 +46,15 @@ fn init(our: Address) { println!("response from {node_id}: {:?}", msg.body()); } } - Err(SendError { kind, .. }) => { - println!("hi: net error: {:?}", kind); - return; - } + Err(SendError { kind, .. }) => match kind { + SendErrorKind::Timeout => { + println!("hi: message to {node_id} timed out"); + return; + } + SendErrorKind::Offline => { + println!("hi: {node_id} is offline or does not exist"); + return; + } + }, } } diff --git a/kinode/packages/terminal/m/src/lib.rs b/kinode/packages/terminal/m/src/lib.rs index 8bf3157c9..6172fd16e 100644 --- a/kinode/packages/terminal/m/src/lib.rs +++ b/kinode/packages/terminal/m/src/lib.rs @@ -80,13 +80,7 @@ fn init(_our: Address) { println!("m: awaiting response for {}s", s); match req.send_and_await_response(*s).unwrap() { Ok(res) => { - // TODO piping is broken. Patching it by just printing the response - // let _ = Response::new().body(res.body()).send(); - if let Ok(txt) = std::str::from_utf8(&res.body()) { - println!("{txt}"); - } else { - println!("{:?}", res.body()); - } + let _ = Response::new().body(res.body()).send(); } Err(e) => { println!( diff --git a/kinode/packages/terminal/terminal/src/lib.rs b/kinode/packages/terminal/terminal/src/lib.rs index 0bb426202..d5241a462 100644 --- a/kinode/packages/terminal/terminal/src/lib.rs +++ b/kinode/packages/terminal/terminal/src/lib.rs @@ -46,7 +46,7 @@ fn parse_command(state: &mut TerminalState, line: &str) -> anyhow::Result<()> { }, }; - let re = Regex::new(r"(.*?)\|(\d+)\s*(.*)").unwrap(); + let re = Regex::new(r"(.*?)(\|(\d*))\s*(.*)").unwrap(); let pipe = match re.captures(args) { Some(caps) => { let parsed_args = caps @@ -55,11 +55,11 @@ fn parse_command(state: &mut TerminalState, line: &str) -> anyhow::Result<()> { .trim_end() .to_string(); - let time_str = caps.get(2).map_or("", |m| m.as_str()); - let time: u64 = time_str.parse().unwrap_or(0); + let time_str = caps.get(3).map_or("", |m| m.as_str()); + let time: u64 = time_str.parse().unwrap_or(5); let pipe = caps - .get(3) + .get(4) .map_or("", |m| m.as_str()) .trim_start() .to_string(); From 2c8c7ee4df6315fec13682db07aac69ee4534ec7 Mon Sep 17 00:00:00 2001 From: Drew Tada Date: Thu, 29 Feb 2024 14:40:05 -0500 Subject: [PATCH 2/2] pipes removed --- kinode/packages/terminal/cat/src/lib.rs | 2 +- kinode/packages/terminal/m/src/lib.rs | 2 +- kinode/packages/terminal/terminal/src/lib.rs | 54 ++------------------ 3 files changed, 5 insertions(+), 53 deletions(-) diff --git a/kinode/packages/terminal/cat/src/lib.rs b/kinode/packages/terminal/cat/src/lib.rs index 5c065ba76..373a2b79f 100644 --- a/kinode/packages/terminal/cat/src/lib.rs +++ b/kinode/packages/terminal/cat/src/lib.rs @@ -45,5 +45,5 @@ fn init(_our: Address) { println!("no file found at {}", file_path); return; }; - let _ = Response::new().body(blob.bytes).send(); + println!("{}", String::from_utf8(blob.bytes).unwrap()); } diff --git a/kinode/packages/terminal/m/src/lib.rs b/kinode/packages/terminal/m/src/lib.rs index 6172fd16e..4a0d8db0b 100644 --- a/kinode/packages/terminal/m/src/lib.rs +++ b/kinode/packages/terminal/m/src/lib.rs @@ -80,7 +80,7 @@ fn init(_our: Address) { println!("m: awaiting response for {}s", s); match req.send_and_await_response(*s).unwrap() { Ok(res) => { - let _ = Response::new().body(res.body()).send(); + println!("{}", String::from_utf8(res.body().to_vec()).unwrap()); } Err(e) => { println!( diff --git a/kinode/packages/terminal/terminal/src/lib.rs b/kinode/packages/terminal/terminal/src/lib.rs index d5241a462..6c924b925 100644 --- a/kinode/packages/terminal/terminal/src/lib.rs +++ b/kinode/packages/terminal/terminal/src/lib.rs @@ -46,30 +46,7 @@ fn parse_command(state: &mut TerminalState, line: &str) -> anyhow::Result<()> { }, }; - let re = Regex::new(r"(.*?)(\|(\d*))\s*(.*)").unwrap(); - let pipe = match re.captures(args) { - Some(caps) => { - let parsed_args = caps - .get(1) - .map_or("", |m| m.as_str()) - .trim_end() - .to_string(); - - let time_str = caps.get(3).map_or("", |m| m.as_str()); - let time: u64 = time_str.parse().unwrap_or(5); - - let pipe = caps - .get(4) - .map_or("", |m| m.as_str()) - .trim_start() - .to_string(); - - (parsed_args, Some((pipe, time))) - } - None => (args.to_string(), None), - }; - - match handle_run(&state.our, &process, pipe.0, pipe.1) { + match handle_run(&state.our, &process, args.to_string()) { Ok(_) => Ok(()), // TODO clean up process Err(e) => Err(anyhow!("failed to instantiate script: {}", e)), } @@ -162,12 +139,7 @@ impl Guest for Component { } } -fn handle_run( - our: &Address, - process: &ProcessId, - args: String, - pipe: Option<(String, u64)>, -) -> anyhow::Result<()> { +fn handle_run(our: &Address, process: &ProcessId, args: String) -> anyhow::Result<()> { let wasm_path = format!("{}.wasm", process.process()); let package = format!("{}:{}", process.package(), process.publisher()); let drive_path = format!("/{}/pkg", package); @@ -352,27 +324,7 @@ fn handle_run( .target(("our", parsed_new_process_id)) .body(args.into_bytes()); - let Some(pipe) = pipe else { - req.send().unwrap(); - return Ok(()); - }; - - let Ok(res) = req.clone().send_and_await_response(pipe.1).unwrap() else { - return Err(anyhow::anyhow!("script timed out")); - }; - - let _ = Request::new() - .target(our) - .body( - format!( - "{} {}", - pipe.0, - String::from_utf8(res.body().to_vec()).unwrap() - ) - .into_bytes() - .to_vec(), - ) - .send()?; + req.send().unwrap(); Ok(()) }