| 308 | } |
| 309 | |
| 310 | pub(crate) fn validate_name(name: &str) -> Result<()> { |
| 311 | // TODO(david): use a more extensive verification. |
| 312 | // See what Cargo does in https://github.com/rust-lang/cargo/blob/42696ae234dfb7b23c9638ad118373826c784c60/src/cargo/util/restricted_names.rs |
| 313 | let valid_ident = Regex::new(r"^([a-zA-Z][a-zA-Z0-9_-]+)$").into_diagnostic()?; |
| 314 | |
| 315 | match valid_ident.is_match(name) { |
| 316 | true => Ok(()), |
| 317 | false => Err(CreateError::InvalidPackageName(name.to_string()).into()), |
| 318 | } |
| 319 | } |
| 320 | |
| 321 | async fn open_code_editor(path: &str) -> Result<()> { |
| 322 | let editor = env::var("EDITOR").unwrap_or_default(); |