use log::{debug, info};
use crate::common::{compact_fmt_args, compact_parse_output, CommonOptions, CompactOptions};
use crate::errors::CompactError;
pub async fn compact(
options: &CompactOptions,
common_options: &CommonOptions,
) -> Result<(), CompactError> {
let local_path = common_options.local_path.as_ref().map_or("borg", |x| x);
let args = compact_fmt_args(options, common_options);
debug!("Calling borg: {local_path} {args}");
let args = shlex::split(&args).ok_or(CompactError::ShlexError)?;
let res = tokio::process::Command::new(local_path)
.args(args)
.output()
.await?;
compact_parse_output(res)?;
info!("Finished compacting");
Ok(())
}