38 lines
1.0 KiB
Rust
38 lines
1.0 KiB
Rust
use super::cli_error::NoxisCliError;
|
|
use super::Cli;
|
|
use anyhow::Result;
|
|
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
|
use tokio::net::UnixStream;
|
|
|
|
#[allow(dead_code)]
|
|
async fn create_us_stream(cli: &Cli) -> Result<UnixStream> {
|
|
Ok(UnixStream::connect(&cli.socket).await.map_err(|er| {
|
|
NoxisCliError::NoxisDaemonMissing((&cli.socket).to_string(), er.to_string())
|
|
})?)
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
pub async fn try_send(cli: Cli) -> Result<()> {
|
|
let mut stream = create_us_stream(&cli).await?;
|
|
|
|
let msg = serde_json::to_vec(&cli).map_err(|_| NoxisCliError::ToStringCliParsingParsing)?;
|
|
|
|
stream
|
|
.write_all(&msg)
|
|
.await
|
|
.map_err(|_| NoxisCliError::CliPromptCanNotBeSent)?;
|
|
|
|
let mut response = Vec::new();
|
|
stream
|
|
.read_to_end(&mut response)
|
|
.await
|
|
.map_err(|er| NoxisCliError::CliResponseReadError(er.to_string()))?;
|
|
|
|
let response = String::from_utf8_lossy(&response);
|
|
for line in response.lines() {
|
|
println!("{}", line);
|
|
}
|
|
|
|
Ok(())
|
|
}
|