rmux-server 0.1.1

Tokio daemon and request dispatcher for the RMUX terminal multiplexer.
Documentation
use rmux_proto::RmuxError;

pub(super) fn parse_usize(command: &str, flag: &str, value: &str) -> Result<usize, RmuxError> {
    value.parse::<usize>().map_err(|error| {
        RmuxError::Server(format!(
            "{command} {flag} expects an unsigned integer: {error}"
        ))
    })
}

pub(super) fn parse_i64(command: &str, flag: &str, value: &str) -> Result<i64, RmuxError> {
    value
        .parse()
        .map_err(|error| RmuxError::Server(format!("{command} {flag} expects an integer: {error}")))
}

pub(super) fn parse_u16(command: &str, flag: &str, value: &str) -> Result<u16, RmuxError> {
    value.parse().map_err(|error| {
        RmuxError::Server(format!(
            "{command} {flag} expects an unsigned 16-bit integer: {error}"
        ))
    })
}

pub(super) fn parse_u32(command: &str, flag: &str, value: &str) -> Result<u32, RmuxError> {
    value.parse().map_err(|error| {
        RmuxError::Server(format!(
            "{command} {flag} expects an unsigned 32-bit integer: {error}"
        ))
    })
}

pub(super) fn parse_u64(command: &str, flag: &str, value: &str) -> Result<u64, RmuxError> {
    value.parse().map_err(|error| {
        RmuxError::Server(format!(
            "{command} {flag} expects an unsigned 64-bit integer: {error}"
        ))
    })
}

pub(super) fn parse_percentage(command: &str, flag: &str, value: &str) -> Result<u8, RmuxError> {
    let percentage = value.parse::<u8>().map_err(|error| {
        RmuxError::Server(format!("{command} {flag} expects a percentage: {error}"))
    })?;
    if percentage > 100 {
        return Err(RmuxError::Server(format!(
            "{command} {flag} expects a percentage between 0 and 100"
        )));
    }
    Ok(percentage)
}

pub(super) fn parse_f64(command: &str, flag: &str, value: &str) -> Result<f64, RmuxError> {
    value.parse().map_err(|error| {
        RmuxError::Server(format!(
            "{command} {flag} expects a floating-point number: {error}"
        ))
    })
}

pub(super) fn missing_argument(command: &str, argument: &str) -> RmuxError {
    RmuxError::Server(format!("{command} requires {argument}"))
}

pub(super) fn unsupported_flag(command: &str, flag: &str) -> RmuxError {
    RmuxError::Server(format!("unsupported {command} flag: {flag}"))
}