#![allow(warnings)]
#[cfg(test)]
#[macro_use]
extern crate pretty_assertions;
mod convert;
mod get_dependencies;
mod init;
mod inspect;
mod merge;
mod pack;
mod unpack;
mod utils;
pub(crate) use crate::utils::*;
pub use crate::{
convert::ConvertOptions, get_dependencies::GetDependenciesOptions, init::InitOptions,
inspect::InspectOptions, merge::MergeOptions, pack::PackOptions, unpack::UnpackOptions,
};
use serde::Serialize;
use std::{collections::BTreeMap, fmt::Debug, io::Write};
use webc::v1::DirOrFile;
pub type FileMap = BTreeMap<DirOrFile, Vec<u8>>;
#[derive(Debug, Default, Copy, Clone, PartialEq, Eq, clap::ValueEnum)]
pub enum Format {
Debug,
#[default]
Json,
}
impl Format {
fn print<T>(self, value: &T) -> Result<(), anyhow::Error>
where
T: Debug + Serialize + ?Sized,
{
match self {
Format::Debug => {
println!("{value:?}");
Ok(())
}
Format::Json => {
let mut stdout = std::io::stdout();
serde_json::to_writer_pretty(stdout.lock(), value)?;
writeln!(stdout)?;
Ok(())
}
}
}
}