extern crate walkdir;
extern crate zip;
use std::{fs::File, io, path::Path};
use zip::ZipWriter;
use crate::BridgeResult;
pub trait OsBridge {
fn get_pid(&self) -> BridgeResult<u32>;
}
pub trait Zip {
fn calculate_size(&self, path: &str) -> BridgeResult<f64>;
fn get_size(&self, path: &str) -> u64;
fn extract(&self, input_path: &str, output_dir: &str) -> BridgeResult<bool>;
fn compress_file(&self, src_path: &str, dst_path: &str) -> BridgeResult<bool>;
fn compress_folder<P: AsRef<Path>>(&self, input_paths: P, zip_file: P) -> BridgeResult<bool>;
fn add_dir_to_zip<P: AsRef<Path>>(
&self,
base_dir: P,
current_dir: P,
zip_writer: &mut ZipWriter<File>,
) -> BridgeResult<bool>;
fn compress_multiple(&self, input_paths: Vec<&str>, out_path: &str) -> BridgeResult<bool>;
fn is_empty_directory<P: AsRef<Path>>(&self, path: P) -> BridgeResult<bool>;
fn add_path_to_zip<P: AsRef<Path>>(
&self,
zip_writer: &mut ZipWriter<&mut io::Cursor<Vec<u8>>>,
path: P,
) -> BridgeResult<bool>;
fn add_absolute_dir_to_zip<P: AsRef<Path>>(
&self,
zip_writer: &mut ZipWriter<&mut io::Cursor<Vec<u8>>>,
path: P,
prefix: &Path,
) -> BridgeResult<bool>;
}