support_kit/boilerplate/
boilerplate_control.rs

1use std::path::PathBuf;
2
3use crate::Configuration;
4
5use super::{BoilerplateContext, BoilerplatePreset, BoilerplateTemplate};
6
7#[derive(Debug, Clone, bon::Builder)]
8pub struct BoilerplateControl {
9    #[builder(default)]
10    pub config: Configuration,
11    #[builder(into)]
12    pub context: BoilerplateContext,
13    #[builder(into, default)]
14    pub base_path: PathBuf,
15}
16
17impl BoilerplateControl {
18    pub fn write(&self, preset: BoilerplatePreset) -> crate::Result<()> {
19        Ok(self.template(preset).write(&self.context)?)
20    }
21
22    pub fn template(&self, preset: BoilerplatePreset) -> BoilerplateTemplate {
23        preset.init(&self)
24    }
25}
26
27impl From<Configuration> for BoilerplateControl {
28    fn from(config: Configuration) -> Self {
29        Self::builder()
30            .context(config)
31            .base_path(PathBuf::from(std::env::current_dir().unwrap()))
32            .build()
33    }
34}