enable.rs (610B)
1 use std::os::unix::fs::symlink; 2 use std::path::PathBuf; 3 4 use kanit_common::constants; 5 use kanit_common::error::{Context, Result}; 6 7 use crate::flags::Enable; 8 9 pub fn enable(opts: Enable) -> Result<()> { 10 let src = PathBuf::from(constants::KAN_UNIT_DIR).join(&opts.unit); 11 let dst = PathBuf::from(constants::KAN_ENABLED_DIR) 12 .join(opts.runlevel.unwrap_or_else(|| String::from("default"))) 13 .join(&opts.unit); 14 15 symlink(&src, &dst).context("failed to enable unit")?; 16 17 println!( 18 "link {} -> {}", 19 src.to_string_lossy(), 20 dst.to_string_lossy() 21 ); 22 23 Ok(()) 24 }