use crate::utils::{
mount::{Mount, parse_validated_user_mount},
podman::{Config, Podman, PodmanError},
port::Port,
};
use clap::Args;
#[derive(Args)]
pub struct Arguments {
#[arg()]
image_ref: String,
#[arg()]
name: String,
#[arg(
long = "mount",
value_name = "HOST:CONTAINER[:MODE]",
help = "Bind mount a host path into the container (repeatable, relative paths allowed)",
value_parser = parse_validated_user_mount
)]
mounts: Vec<Mount>,
#[arg(
long = "ports",
value_name = "HOST:CONTAINER/PROTOCOL",
help = "Publish a host port to the container (repeatable, defaults to TCP)"
)]
ports: Vec<Port>,
}
pub fn run(args: Arguments) -> Result<(), PodmanError> {
let config = Config {
image_ref: args.image_ref,
name: args.name,
mounts: args.mounts,
ports: args.ports,
};
Podman::new().create(&config)
}