blob: 06918841d178352454e4e9e07059907c68780b0e (
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
|
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| branch.trim().to_string())
.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,
})
}
}
|