diff options
Diffstat (limited to 'src/cmd/cloud_init.rs')
-rw-r--r-- | src/cmd/cloud_init.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/cmd/cloud_init.rs b/src/cmd/cloud_init.rs new file mode 100644 index 0000000..3ab4139 --- /dev/null +++ b/src/cmd/cloud_init.rs @@ -0,0 +1,28 @@ +use crate::cloudinit::CloudInitConfig; +use crate::spec::Specification; +use log::{debug, info}; +use std::path::Path; + +pub fn cloud_init(spec: &Specification, dirname: &Path) -> anyhow::Result<()> { + info!( + "generating cloud-init configuration into {}", + dirname.display() + ); + + let init = CloudInitConfig::from(&spec)?; + + debug!("creating directory {}", dirname.display()); + std::fs::create_dir_all(dirname)?; + init.create_dir(dirname)?; + + Ok(()) +} + +pub fn cloud_init_iso(spec: &Specification, iso: &Path) -> anyhow::Result<()> { + info!("generating cloud-init ISO into {}", iso.display()); + + let init = CloudInitConfig::from(&spec)?; + init.create_iso(iso)?; + + Ok(()) +} |