2024-03-25 02:37:02 +00:00
|
|
|
use std::{env::args, path::PathBuf};
|
|
|
|
|
|
|
|
use anyhow::Result;
|
|
|
|
use env_logger::Env;
|
2024-04-12 11:09:26 -07:00
|
|
|
use krataoci::{
|
2024-04-14 17:19:38 -07:00
|
|
|
name::ImageName,
|
2024-04-15 10:24:14 -07:00
|
|
|
packer::{service::OciPackerService, OciPackedFormat},
|
2024-04-16 01:53:44 -07:00
|
|
|
progress::OciProgressContext,
|
2024-04-15 10:24:14 -07:00
|
|
|
registry::OciPlatform,
|
2024-04-12 11:09:26 -07:00
|
|
|
};
|
2024-04-16 01:53:44 -07:00
|
|
|
use tokio::fs;
|
2024-03-25 02:37:02 +00:00
|
|
|
|
|
|
|
#[tokio::main]
|
|
|
|
async fn main() -> Result<()> {
|
|
|
|
env_logger::Builder::from_env(Env::default().default_filter_or("info")).init();
|
|
|
|
|
|
|
|
let image = ImageName::parse(&args().nth(1).unwrap())?;
|
|
|
|
let seed = args().nth(2).map(PathBuf::from);
|
|
|
|
|
|
|
|
let cache_dir = PathBuf::from("krata-cache");
|
|
|
|
if !cache_dir.exists() {
|
|
|
|
fs::create_dir(&cache_dir).await?;
|
|
|
|
}
|
|
|
|
|
2024-04-16 01:53:44 -07:00
|
|
|
let (context, mut receiver) = OciProgressContext::create();
|
2024-04-12 11:09:26 -07:00
|
|
|
tokio::task::spawn(async move {
|
|
|
|
loop {
|
2024-07-20 23:08:59 -07:00
|
|
|
if receiver.changed().await.is_err() {
|
2024-04-16 09:29:54 -07:00
|
|
|
break;
|
2024-04-16 01:53:44 -07:00
|
|
|
}
|
2024-04-16 09:29:54 -07:00
|
|
|
let progress = receiver.borrow_and_update();
|
2024-04-14 17:19:38 -07:00
|
|
|
println!("phase {:?}", progress.phase);
|
2024-04-15 10:24:14 -07:00
|
|
|
for (id, layer) in &progress.layers {
|
2024-04-16 09:29:54 -07:00
|
|
|
println!("{} {:?} {:?}", id, layer.phase, layer.indication,)
|
2024-04-14 17:19:38 -07:00
|
|
|
}
|
2024-04-12 11:09:26 -07:00
|
|
|
}
|
|
|
|
});
|
2024-04-16 09:29:54 -07:00
|
|
|
let service = OciPackerService::new(seed, &cache_dir, OciPlatform::current()).await?;
|
2024-04-15 10:24:14 -07:00
|
|
|
let packed = service
|
2024-07-31 16:05:15 -07:00
|
|
|
.request(
|
|
|
|
image.clone(),
|
|
|
|
OciPackedFormat::Squashfs,
|
|
|
|
false,
|
|
|
|
true,
|
|
|
|
context,
|
|
|
|
)
|
2024-04-14 17:19:38 -07:00
|
|
|
.await?;
|
2024-03-25 02:37:02 +00:00
|
|
|
println!(
|
|
|
|
"generated squashfs of {} to {}",
|
|
|
|
image,
|
2024-04-15 10:24:14 -07:00
|
|
|
packed.path.to_string_lossy()
|
2024-03-25 02:37:02 +00:00
|
|
|
);
|
|
|
|
Ok(())
|
|
|
|
}
|