use std::path::PathBuf;
use crate::error::Error;
#[derive(Clone, Default)]
pub struct Config {
pub source_path: PathBuf,
pub destination_path: Option<PathBuf>,
pub build_options: BuildOptions,
pub docker_option: DockerOption,
}
#[derive(Clone, Default)]
pub struct BuildOptions {
pub locked: bool
}
#[derive(Clone)]
pub enum DockerOption {
Docker(DockerConfig),
Dockerless,
}
impl Default for DockerOption {
fn default() -> Self {
Self::Docker(DockerConfig::default())
}
}
#[derive(Clone, Default)]
pub struct DockerConfig {
pub tag: Option<String>,
}
impl Config {
pub async fn run(self) -> Result<String, Error> {
match self.docker_option {
DockerOption::Docker(docker_config) => {
crate::build::build_target_with_docker(
self.source_path,
self.destination_path,
self.build_options,
docker_config,
)
.await
}
DockerOption::Dockerless => {
crate::build::build_target_without_docker(self.source_path, self.destination_path, self.build_options)
.await
}
}
}
}