l3_fn_config 0.0.2-alpha.1

Parsing l3.toml config files
Documentation
use std::path::PathBuf;

use crate::{
    configs::{LambdaConfig, LambdaEnvConfig, LambdaRuntimeConfig},
    ConfigParseError, Language, OptionallyParsable,
};

impl TryFrom<&toml::Table> for LambdaConfig {
    type Error = ConfigParseError;

    fn try_from(lambda_t: &toml::Table) -> Result<Self, Self::Error> {
        let source = lambda_t
            .get("source")
            .and_then(|source_v| source_v.as_str().map(PathBuf::from));
        let language = if let Some(source) = &source {
            Some(Language::try_from(source.as_path())?)
        } else {
            None
        };
        Ok(LambdaConfig {
            language,
            name: lambda_t
                .get("name")
                .and_then(|name_v| name_v.as_str().map(String::from)),
            source,
            handler: lambda_t
                .get("handler")
                .and_then(|handler_v| handler_v.as_str().map(String::from)),
            env: LambdaEnvConfig::optionally_parse(lambda_t)?,
            runtime: LambdaRuntimeConfig::optionally_parse(lambda_t)?,
        })
    }
}