diff --git a/src/deploy.rs b/src/deploy.rs index d5f17c2..e431f97 100644 --- a/src/deploy.rs +++ b/src/deploy.rs @@ -1,5 +1,6 @@ use nixpacks::create_docker_image; use nixpacks::nixpacks::builder::docker::DockerBuilderOptions; +use nixpacks::nixpacks::plan::phase::{Phase, StartPhase}; use nixpacks::nixpacks::plan::{generator::GeneratePlanOptions, BuildPlan}; use crate::container::Container; @@ -37,7 +38,22 @@ impl<'a> Deploy<'a> { // Nix pack let envs: Vec<&str> = vec![]; - let cli_plan = BuildPlan::default(); + let mut cli_plan = BuildPlan::default(); + if let Some(install_cmds) = &self.config.install_cmd { + let mut install = Phase::install(None); + install.cmds = Some(vec![install_cmds.clone()]); + cli_plan.add_phase(install); + } + if let Some(build_cmds) = &self.config.build_cmd { + let mut build = Phase::build(None); + build.cmds = Some(vec![build_cmds.clone()]); + cli_plan.add_phase(build); + } + if let Some(start_cmd) = &self.config.start_cmd { + let start = StartPhase::new(start_cmd.clone()); + cli_plan.set_start_phase(start); + } + let options = GeneratePlanOptions { plan: Some(cli_plan), config_file: None, diff --git a/src/model.rs b/src/model.rs index b5844a3..561a81d 100644 --- a/src/model.rs +++ b/src/model.rs @@ -8,6 +8,12 @@ pub struct RukuConfig { pub port: u16, #[validate(length(min = 1, max = 20))] pub version: Option, + #[validate(length(min = 1, max = 50))] + pub install_cmd: Option, + #[validate(length(min = 1, max = 50))] + pub build_cmd: Option, + #[validate(length(min = 1, max = 50))] + pub start_cmd: Option, } fn validate_port(port: u16) -> Result<(), ValidationError> {