blob: 5076eb974aa340c134cd555150e26e475a990744 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
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<String>,
}
impl Config {
/// Take in a comma separated list and split it into a [`Vec<String>`]
fn split_string_list(branches: &str) -> Vec<String> {
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<Self, env::VarError> {
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,
})
}
}
|