solverforge-cli 2.2.2

CLI for scaffolding and managing SolverForge constraint solver projects
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use crate::error::{CliError, CliResult};

pub(crate) fn validate_name(name: &str) -> CliResult {
    let valid = name.chars().enumerate().all(|(i, c)| {
        if i == 0 {
            c.is_ascii_lowercase()
        } else {
            c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_'
        }
    });
    if !valid || name.is_empty() {
        return Err(CliError::InvalidName {
            name: name.to_string(),
        });
    }
    Ok(())
}