diff options
author | root <github@bigly.dog> | 2024-03-21 12:07:49 -0700 |
---|---|---|
committer | root <github@bigly.dog> | 2024-03-21 12:07:49 -0700 |
commit | b6711c8f125dcbdd10fcc7c4217f64fc7dac0c6d (patch) | |
tree | 6d047cca150299cd51eadb567d557a359f355507 | |
parent | 8b062fa0c5980f10a5561458373643f70cc83d89 (diff) |
cleanup
-rw-r--r-- | src/fzf.rs | 102 | ||||
-rw-r--r-- | src/output.rs | 10 | ||||
-rw-r--r-- | src/subprocess.rs | 4 | ||||
-rw-r--r-- | src/types.rs | 2 |
4 files changed, 8 insertions, 110 deletions
@@ -1,28 +1,18 @@ use { super::{ argparse::Mode, - subprocess::{stream_into, SubprocCommand}, + subprocess::{stream_subproc, SubprocCommand}, types::Fail, }, - futures::{ - future::ready, - stream::{once, select, try_unfold, Stream, StreamExt}, - }, + futures::stream::Stream, std::{ collections::HashMap, env::{self, current_exe}, ffi::OsString, path::PathBuf, process::Stdio, - sync::Arc, - }, - tokio::{ - io::{AsyncWriteExt, BufWriter, ErrorKind}, - process::Command, - select, - sync::mpsc::Receiver, - task::{spawn, JoinHandle}, }, + tokio::{io::ErrorKind, process::Command}, which::which, }; @@ -54,90 +44,6 @@ async fn reset_term() -> Result<(), Fail> { Err(Fail::IO(PathBuf::from("reset"), ErrorKind::NotFound)) } -fn run_fzf<'a>( - cmd: SubprocCommand, - stream: impl Stream<Item = Result<OsString, Fail>> + Unpin + 'a, -) -> Box<dyn Stream<Item = Result<(), Fail>> + 'a> { - let subprocess = Command::new(&cmd.prog) - .kill_on_drop(true) - .args(&cmd.args) - .envs(&cmd.env) - .stdin(Stdio::piped()) - .spawn(); - - match subprocess { - Err(e) => { - let err = Fail::IO(cmd.prog, e.kind()); - Box::new(once(ready(Err(err)))) - } - Ok(mut child) => { - todo!() - } - } - - //match subprocess { - // Err(err) => { - // abort.send(Fail::IO(cmd.prog, err.kind())).await; - // } - // Ok(mut child) => { - // let mut stdin = child.stdin.take().map(BufWriter::new).expect("nil stdin"); - - // let abort_1 = abort.clone(); - // let p1 = cmd.prog.clone(); - // let handle_in = spawn(async move { - // stream_into(&abort_1, p1.clone(), &mut stdin, stream).await; - // if let Err(err) = stdin.shutdown().await { - // abort_1.send(Fail::IO(p1, err.kind())).await; - // } - // }); - - // let abort_2 = abort.clone(); - // let p2 = cmd.prog.clone(); - // let handle_child = spawn(async move { - // select! { - // () = abort_2.notified() => { - // match child.kill().await { - // Err(err) => { - // abort_2.send(Fail::IO(p2, err.kind())).await; - // }, - // _ => { - // if let Err(err) = reset_term().await { - // abort_2.send(err).await; - // } - // } - // } - // }, - // rhs = child.wait() => { - // match rhs { - // Ok(status) => { - // match status.code() { - // Some(0 | 1) | None => (), - // Some(130) => { - // abort_2.send(Fail::Interrupt).await; - // } - // Some(c) => { - // abort_2.send(Fail::BadExit(p2, c)).await; - // if let Err(err) = reset_term().await { - // abort_2.send(err).await; - // } - // } - // } - // } - // Err(err) => { - // abort_2.send(Fail::IO(p2, err.kind())).await; - // } - // } - // } - // } - // }); - - // if let Err(err) = try_join(handle_child, handle_in).await { - // abort.send(err.into()).await; - // } - // } - //} -} - pub fn stream_fzf_proc<'a>( bin: PathBuf, args: Vec<String>, @@ -177,5 +83,5 @@ pub fn stream_fzf_proc<'a>( args: arguments, env: fzf_env, }; - run_fzf(cmd, stream) + stream_subproc(cmd, stream) } diff --git a/src/output.rs b/src/output.rs index 55735d2..b27975f 100644 --- a/src/output.rs +++ b/src/output.rs @@ -7,7 +7,7 @@ use { }, futures::stream::{Stream, StreamExt, TryStreamExt}, std::{ffi::OsString, marker::Unpin, path::PathBuf, sync::Arc}, - tokio::io::{self, AsyncWrite, AsyncWriteExt, BufWriter}, + tokio::io, }; pub fn stream_sink<'a>( @@ -15,14 +15,10 @@ pub fn stream_sink<'a>( stream: impl Stream<Item = Result<OsString, Fail>> + Unpin + 'a, ) -> Box<dyn Stream<Item = Result<(), Fail>> + 'a> { match (&opts.action, &opts.printer) { - (Action::FzfPreview(fzf_p, fzf_a), _) => { - //stream_fzf_proc( fzf_p, fzf_a, stream) - - todo!() - } + (Action::FzfPreview(fzf_p, fzf_a), _) => stream_fzf_proc(fzf_p.clone(), fzf_a.clone(), stream), (_, Printer::Pager(cmd)) => stream_subproc(cmd.clone(), stream), (_, Printer::Stdout) => { - let stdout = BufWriter::new(io::stdout()); + let stdout = io::stdout(); Box::new(stream_into(PathBuf::from("/dev/stdout"), stdout, stream)) } } diff --git a/src/subprocess.rs b/src/subprocess.rs index 5d1fa9e..cea72ce 100644 --- a/src/subprocess.rs +++ b/src/subprocess.rs @@ -4,9 +4,7 @@ use { future::ready, stream::{once, select, try_unfold, Stream, StreamExt}, }, - std::{ - collections::HashMap, ffi::OsString, marker::Unpin, path::PathBuf, process::Stdio, sync::Arc, - }, + std::{collections::HashMap, ffi::OsString, marker::Unpin, path::PathBuf, process::Stdio}, tokio::{ io::{AsyncWrite, AsyncWriteExt, BufWriter}, process::Command, diff --git a/src/types.rs b/src/types.rs index 0da5600..f5272e2 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,6 +1,5 @@ use { aho_corasick::BuildError, - futures::lock::Mutex, regex::Error as RegexError, std::{ clone::Clone, @@ -8,7 +7,6 @@ use { fmt::{self, Display, Formatter}, io::ErrorKind, path::PathBuf, - sync::Arc, }, tokio::task::JoinError, }; |