support_kit/boilerplate/
boilerplate_control.rs1use 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}