use eyre::Result;
use crate::config::Config;
use crate::oci::{BuildOptions, BuildOutput, Builder, OciConfig};
use crate::toolset::ToolsetBuilder;
pub fn merged_oci_config(config: &Config) -> OciConfig {
let mut out = OciConfig::default();
for cf in config.config_files.values() {
if let Some(oci) = cf.oci_config() {
out.fill_defaults_from(oci);
}
}
out
}
pub async fn perform_build(opts: BuildOptions) -> Result<BuildOutput> {
let config = Config::get().await?;
let ts = ToolsetBuilder::new().build(&config).await?;
let oci = merged_oci_config(&config);
Builder::new(config.clone(), ts, oci, opts).build().await
}
pub fn short_digest(d: &str) -> String {
let hex = d.trim_start_matches("sha256:");
if hex.len() >= 12 {
format!("sha256:{}", &hex[..12])
} else {
d.to_string()
}
}