1use std::fs;
2
3use crate::settings::Settings;
4use color_eyre::eyre::{Context, Result};
5
6pub struct Namespace {
8 pub is_current: bool,
10 pub name: String,
12}
13
14pub fn list_namespaces(settings: &Settings) -> Result<Vec<Namespace>> {
16 let mut namespaces: Vec<Namespace> = vec![];
17
18 for entry in fs::read_dir(settings.data.path.clone()).with_context(|| "error while scanning database directory for namespaces")? {
20 let entry = entry?;
21 if entry.metadata()?.is_dir() {
22 let name = entry.file_name().to_str().unwrap().to_string(); let is_current = if name == settings.namespace { true } else { false };
24 namespaces.push(Namespace { is_current, name });
25 }
26 }
27
28 if namespaces.len() == 0 {
30 namespaces.push(
31 Namespace { name: "default".into(), is_current: true }
32 );
33 }
34
35 Ok(namespaces)
36}
37
38