refactor(schema): Decouple forms of name validation

This commit is contained in:
Ed Page 2024-03-15 11:49:07 -05:00
parent b8a684674a
commit b321285501
2 changed files with 11 additions and 9 deletions

View file

@ -1209,7 +1209,7 @@ str_newtype!(PackageName);
impl<T: AsRef<str>> PackageName<T> { impl<T: AsRef<str>> PackageName<T> {
/// Validated package name /// Validated package name
pub fn new(name: T) -> Result<Self, NameValidationError> { pub fn new(name: T) -> Result<Self, NameValidationError> {
restricted_names::validate_package_name(name.as_ref(), "package name")?; restricted_names::validate_package_name(name.as_ref())?;
Ok(Self(name)) Ok(Self(name))
} }
} }
@ -1231,7 +1231,7 @@ str_newtype!(RegistryName);
impl<T: AsRef<str>> RegistryName<T> { impl<T: AsRef<str>> RegistryName<T> {
/// Validated registry name /// Validated registry name
pub fn new(name: T) -> Result<Self, NameValidationError> { pub fn new(name: T) -> Result<Self, NameValidationError> {
restricted_names::validate_package_name(name.as_ref(), "registry name")?; restricted_names::validate_registry_name(name.as_ref())?;
Ok(Self(name)) Ok(Self(name))
} }
} }

View file

@ -33,13 +33,15 @@ enum ErrorKind {
FeatureNameStartsWithDepColon(String), FeatureNameStartsWithDepColon(String),
} }
/// Check the base requirements for a package name. pub(crate) fn validate_package_name(name: &str) -> Result<()> {
/// validate_name(name, "package name")
/// This can be used for other things than package names, to enforce some }
/// level of sanity. Note that package names have other restrictions
/// elsewhere. `cargo new` has a few restrictions, such as checking for pub(crate) fn validate_registry_name(name: &str) -> Result<()> {
/// reserved names. crates.io has even more restrictions. validate_name(name, "registry name")
pub(crate) fn validate_package_name(name: &str, what: &'static str) -> Result<()> { }
pub(crate) fn validate_name(name: &str, what: &'static str) -> Result<()> {
if name.is_empty() { if name.is_empty() {
return Err(ErrorKind::Empty(what).into()); return Err(ErrorKind::Empty(what).into());
} }