diff --git a/yazi-scheduler/src/file/out.rs b/yazi-scheduler/src/file/out.rs index 2be34bc7..6e0cdb1d 100644 --- a/yazi-scheduler/src/file/out.rs +++ b/yazi-scheduler/src/file/out.rs @@ -183,6 +183,16 @@ impl FileOutLink { task.log(reason); } } + } else if let TaskProg::FileCut(prog) = &mut task.prog { + match self { + Self::Succ => { + prog.success_files += 1; + } + Self::Fail(reason) => { + prog.failed_files += 1; + task.log(reason); + } + } } } } diff --git a/yazi-scheduler/src/file/traverse.rs b/yazi-scheduler/src/file/traverse.rs index 71157124..0336da0e 100644 --- a/yazi-scheduler/src/file/traverse.rs +++ b/yazi-scheduler/src/file/traverse.rs @@ -13,7 +13,7 @@ trait Traverse { fn from(&self) -> Url<'_>; - async fn get_or_init_cha(&mut self) -> io::Result { + async fn init(&mut self) -> io::Result { if self.cha().is_none() { *self.cha() = Some(super::File::cha(self.from(), self.follow(), None).await?) } @@ -116,6 +116,16 @@ impl Traverse for FileInUpload { fn from(&self) -> Url<'_> { self.url.as_url() } + async fn init(&mut self) -> io::Result { + if self.cha.is_none() { + self.cha = Some(super::File::cha(self.from(), self.follow(), None).await?) + } + if self.cache.is_none() { + self.cache = self.url.cache(); + } + Ok(self.cha.unwrap()) + } + fn spawn(&self, from: UrlBuf, _to: Option, cha: Cha) -> Self { Self { id: self.id, cha: Some(cha), cache: from.cache(), url: from } } @@ -138,7 +148,7 @@ where FR: Future>, E: Fn(String), { - let cha = task.get_or_init_cha().await?; + let cha = task.init().await?; if !cha.is_dir() { return on_file(task, cha).await; }