1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use crate::emoji; use console::style; use dialoguer::Input; use quicli::prelude::Error; use regex; pub fn name() -> Result<String, Error> { let valid_ident = regex::Regex::new(r"^([a-zA-Z][a-zA-Z0-9_-]+)$")?; let name = loop { let name = Input::new(&format!( "{} {}", emoji::SHRUG, style("Project Name").bold() )) .interact()?; if valid_ident.is_match(&name) { break name; } else { eprintln!( "{} {} \"{}\" {}", emoji::WARN, style("Sorry,").bold().red(), style(&name).bold().yellow(), style("is not a valid crate name").bold().red() ); } }; Ok(name) }