envl 0.5.0

load .envl and .envlconf
Documentation
use std::io::Error;

use envl_config::parser::error::ParserError;
use envl_utils::types::Position;
use envl_vars::parser::ParserError as VarsParserError;

#[derive(Debug, Clone)]
pub struct EnvlLibError {
    pub message: String,
}

#[derive(Debug)]
pub enum ErrorKind {
    Vars(VarsParserError),
    Config(ParserError),
    Io(Error),
    Lib(EnvlLibError),
}

#[derive(Debug)]
pub struct EnvlError {
    pub message: String,
    pub position: Option<Position>,
    pub kind: ErrorKind,
}

pub fn convert_envl_vars_error(err: VarsParserError) -> EnvlError {
    EnvlError {
        message: err.message.to_string(),
        position: None,
        kind: ErrorKind::Vars(err),
    }
}

pub fn convert_envl_config_error(err: ParserError) -> EnvlError {
    EnvlError {
        message: err.message.to_string(),
        position: Some(err.position.clone()),
        kind: ErrorKind::Config(err),
    }
}

pub fn convert_io_error(err: Error) -> EnvlError {
    EnvlError {
        message: err.to_string().clone(),
        position: None,
        kind: ErrorKind::Io(err),
    }
}

pub fn convert_envl_lib_error(err: EnvlLibError) -> EnvlError {
    EnvlError {
        message: err.message.to_string(),
        position: None,
        kind: ErrorKind::Lib(err),
    }
}