use std::path::PathBuf;
#[derive(Debug, Clone)]
pub enum Source {
Local(PathBuf),
S3 { bucket: String, prefix: String },
}
#[derive(Debug, Clone)]
pub struct Config {
pub source: Option<Source>,
pub data_folder: String,
pub default_style: Option<String>,
pub tile_size: u32,
pub port: u16,
pub default_raster_band: usize,
}
impl Default for Config {
fn default() -> Self {
Config {
source: None,
data_folder: "data".to_string(),
default_style: Some("default".to_string()),
tile_size: 256,
port: 8000,
default_raster_band: 1,
}
}
}
impl Config {
pub fn parse_path_to_absolute(path: &PathBuf) -> PathBuf {
let path = PathBuf::from(path);
if path.is_absolute() {
path
} else {
std::env::current_dir()
.unwrap_or_else(|_| PathBuf::from("."))
.join(path)
}
}
pub fn default_data_folder() -> String {
let default_data_dir = Self::default().data_folder.clone();
let path = PathBuf::from(default_data_dir);
Self::parse_path_to_absolute(&path)
.to_string_lossy()
.into_owned()
}
}