use crate::consts::NIXPKGS_REMOTE; use std::env; /// The Discord client's configuration #[derive(Clone, Debug)] pub struct Config { /// Path to clone a new or use an existing nixpkgs repository pub nixpkgs_path: String, // A comma separated list of nixpkgs branch to track commits for pub nixpkgs_branches: Vec, } impl Config { /// Take in a comma separated list and split it into a [`Vec`] fn split_string_list(branches: &str) -> Vec { branches .split(',') .map(|branch| format!("{NIXPKGS_REMOTE}/{}", branch.trim())) .collect() } /// Create a new instance of [`Config`] based on variables from the environment /// /// # Errors /// /// Will return [`Err`] if a variable is not found pub fn from_env() -> Result { let nixpkgs_path = env::var("BOT_NIXPKGS_PATH")?; let nixpkgs_branches_raw = env::var("BOT_NIXPKGS_BRANCHES")?; let nixpkgs_branches = Self::split_string_list(&nixpkgs_branches_raw); Ok(Self { nixpkgs_path, nixpkgs_branches, }) } }