mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-23 22:18:41 +00:00
Refactor: Mv TarEntriesVisitor
to mod async_extracter
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
467f7f6834
commit
2091345ce0
3 changed files with 13 additions and 14 deletions
|
@ -22,7 +22,6 @@ mod ui_thread;
|
||||||
pub use ui_thread::UIThread;
|
pub use ui_thread::UIThread;
|
||||||
|
|
||||||
mod extracter;
|
mod extracter;
|
||||||
pub use extracter::TarEntriesVisitor;
|
|
||||||
|
|
||||||
mod readable_rx;
|
mod readable_rx;
|
||||||
|
|
||||||
|
|
|
@ -232,6 +232,18 @@ where
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Visitor must iterate over all entries.
|
||||||
|
/// Entires can be in arbitary order.
|
||||||
|
pub trait TarEntriesVisitor {
|
||||||
|
fn visit<R: Read>(&mut self, entries: Entries<'_, R>) -> Result<(), BinstallError>;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<V: TarEntriesVisitor> TarEntriesVisitor for &mut V {
|
||||||
|
fn visit<R: Read>(&mut self, entries: Entries<'_, R>) -> Result<(), BinstallError> {
|
||||||
|
(*self).visit(entries)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn extract_tar_based_stream_and_visit<V: TarEntriesVisitor + Debug + Send + 'static, E>(
|
pub async fn extract_tar_based_stream_and_visit<V: TarEntriesVisitor + Debug + Send + 'static, E>(
|
||||||
stream: impl Stream<Item = Result<Bytes, E>> + Unpin,
|
stream: impl Stream<Item = Result<Bytes, E>> + Unpin,
|
||||||
fmt: TarBasedFmt,
|
fmt: TarBasedFmt,
|
||||||
|
|
|
@ -4,25 +4,13 @@ use std::path::Path;
|
||||||
|
|
||||||
use flate2::bufread::GzDecoder;
|
use flate2::bufread::GzDecoder;
|
||||||
use log::debug;
|
use log::debug;
|
||||||
use tar::{Archive, Entries};
|
use tar::Archive;
|
||||||
use xz2::bufread::XzDecoder;
|
use xz2::bufread::XzDecoder;
|
||||||
use zip::read::ZipArchive;
|
use zip::read::ZipArchive;
|
||||||
use zstd::stream::Decoder as ZstdDecoder;
|
use zstd::stream::Decoder as ZstdDecoder;
|
||||||
|
|
||||||
use crate::{BinstallError, TarBasedFmt};
|
use crate::{BinstallError, TarBasedFmt};
|
||||||
|
|
||||||
/// Visitor must iterate over all entries.
|
|
||||||
/// Entires can be in arbitary order.
|
|
||||||
pub trait TarEntriesVisitor {
|
|
||||||
fn visit<R: Read>(&mut self, entries: Entries<'_, R>) -> Result<(), BinstallError>;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<V: TarEntriesVisitor> TarEntriesVisitor for &mut V {
|
|
||||||
fn visit<R: Read>(&mut self, entries: Entries<'_, R>) -> Result<(), BinstallError> {
|
|
||||||
(*self).visit(entries)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub(super) fn create_tar_decoder(
|
pub(super) fn create_tar_decoder(
|
||||||
dat: impl BufRead + 'static,
|
dat: impl BufRead + 'static,
|
||||||
fmt: TarBasedFmt,
|
fmt: TarBasedFmt,
|
||||||
|
|
Loading…
Add table
Reference in a new issue