kanit

Toy init system
Log | Files | Refs | README | LICENSE

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 }