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> {
/// Validated package name
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))
}
}
@ -1231,7 +1231,7 @@ str_newtype!(RegistryName);
impl<T: AsRef<str>> RegistryName<T> {
/// Validated registry name
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))
}
}

View file

@ -33,13 +33,15 @@ enum ErrorKind {
FeatureNameStartsWithDepColon(String),
}
/// Check the base requirements for a 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
/// reserved names. crates.io has even more restrictions.
pub(crate) fn validate_package_name(name: &str, what: &'static str) -> Result<()> {
pub(crate) fn validate_package_name(name: &str) -> Result<()> {
validate_name(name, "package name")
}
pub(crate) fn validate_registry_name(name: &str) -> Result<()> {
validate_name(name, "registry name")
}
pub(crate) fn validate_name(name: &str, what: &'static str) -> Result<()> {
if name.is_empty() {
return Err(ErrorKind::Empty(what).into());
}