use std::fs;
use crate::settings::Settings;
use color_eyre::eyre::{Context, Result};
pub struct Namespace {
pub is_current: bool,
pub name: String,
}
pub fn list_namespaces(settings: &Settings) -> Result<Vec<Namespace>> {
let mut namespaces: Vec<Namespace> = vec![];
for entry in fs::read_dir(settings.data.path.clone()).with_context(|| "error while scanning database directory for namespaces")? {
let entry = entry?;
if entry.metadata()?.is_dir() {
let name = entry.file_name().to_str().unwrap().to_string(); let is_current = if name == settings.namespace { true } else { false };
namespaces.push(Namespace { is_current, name });
}
}
if namespaces.len() == 0 {
namespaces.push(
Namespace { name: "default".into(), is_current: true }
);
}
Ok(namespaces)
}