Skip to content

Commit a383185

Browse files
committed
refactor: Centralize empty name check
1 parent 2db5c9d commit a383185

File tree

8 files changed

+6
-28
lines changed

8 files changed

+6
-28
lines changed

src/cargo/ops/cargo_add/crate_spec.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
//! Crate name parsing.
22
3-
use anyhow::bail;
43
use anyhow::Context as _;
54

65
use super::Dependency;
@@ -29,9 +28,6 @@ impl CrateSpec {
2928
.map(|(n, v)| (n, Some(v)))
3029
.unwrap_or((pkg_id, None));
3130

32-
if name.is_empty() {
33-
bail!("dependency name cannot be empty");
34-
}
3531
validate_package_name(name, "dependency name", "")?;
3632

3733
if let Some(version) = version {

src/cargo/ops/cargo_new.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::util::important_paths::find_root_manifest_for_wd;
44
use crate::util::toml_mut::is_sorted;
55
use crate::util::{existing_vcs_repo, FossilRepo, GitRepo, HgRepo, PijulRepo};
66
use crate::util::{restricted_names, Config};
7-
use anyhow::{anyhow, bail, Context};
7+
use anyhow::{anyhow, Context};
88
use cargo_util::paths::{self, write_atomic};
99
use serde::de;
1010
use serde::Deserialize;
@@ -197,9 +197,6 @@ fn check_name(
197197
}
198198
help
199199
};
200-
if name.is_empty() {
201-
bail!("package name cannot be empty");
202-
}
203200
restricted_names::validate_package_name(name, "package name", &bin_help())?;
204201

205202
if restricted_names::is_keyword(name) {

src/cargo/util/command_prelude.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -833,9 +833,6 @@ Run `{cmd}` to see possible targets."
833833
(None, None) => config.default_registry()?.map(RegistryOrIndex::Registry),
834834
(None, Some(i)) => Some(RegistryOrIndex::Index(i.into_url()?)),
835835
(Some(r), None) => {
836-
if r.is_empty() {
837-
bail!("registry name cannot be empty");
838-
}
839836
restricted_names::validate_package_name(r, "registry name", "")?;
840837
Some(RegistryOrIndex::Registry(r.to_string()))
841838
}
@@ -851,9 +848,6 @@ Run `{cmd}` to see possible targets."
851848
match self._value_of("registry").map(|s| s.to_string()) {
852849
None => config.default_registry(),
853850
Some(registry) => {
854-
if registry.is_empty() {
855-
bail!("registry name cannot be empty");
856-
}
857851
restricted_names::validate_package_name(&registry, "registry name", "")?;
858852
Ok(Some(registry))
859853
}

src/cargo/util/config/mod.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1551,9 +1551,6 @@ impl Config {
15511551

15521552
/// Gets the index for a registry.
15531553
pub fn get_registry_index(&self, registry: &str) -> CargoResult<Url> {
1554-
if registry.is_empty() {
1555-
bail!("registry name cannot be empty");
1556-
}
15571554
validate_package_name(registry, "registry name", "")?;
15581555
if let Some(index) = self.get_string(&format!("registries.{}.index", registry))? {
15591556
self.resolve_registry_index(&index).with_context(|| {

src/cargo/util/restricted_names.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ pub fn is_conflicting_artifact_name(name: &str) -> bool {
4343
/// elsewhere. `cargo new` has a few restrictions, such as checking for
4444
/// reserved names. crates.io has even more restrictions.
4545
pub fn validate_package_name(name: &str, what: &str, help: &str) -> CargoResult<()> {
46+
if name.is_empty() {
47+
bail!("{what} cannot be empty");
48+
}
49+
4650
let mut chars = name.chars();
4751
if let Some(ch) = chars.next() {
4852
if ch.is_digit(10) {

src/cargo/util/toml/mod.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -480,10 +480,6 @@ pub fn to_real_manifest(
480480
};
481481

482482
let package_name = package.name.trim();
483-
if package_name.is_empty() {
484-
bail!("package name cannot be an empty string")
485-
}
486-
487483
validate_package_name(package_name, "package name", "")?;
488484

489485
let resolved_path = package_root.join("Cargo.toml");

src/cargo/util_schemas/core/package_id_spec.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,6 @@ impl PackageIdSpec {
9797
Some(version) => Some(version.parse::<PartialVersion>()?),
9898
None => None,
9999
};
100-
if name.is_empty() {
101-
bail!("package ID specification must have a name: `{spec}`");
102-
}
103100
validate_package_name(name, "pkgid", "")?;
104101
Ok(PackageIdSpec {
105102
name: String::from(name),
@@ -185,9 +182,6 @@ impl PackageIdSpec {
185182
None => (String::from(path_name), None),
186183
}
187184
};
188-
if name.is_empty() {
189-
bail!("package ID specification must have a name: `{url}`");
190-
}
191185
validate_package_name(name.as_str(), "pkgid", "")?;
192186
Ok(PackageIdSpec {
193187
name,

tests/testsuite/build.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ fn cargo_compile_with_empty_package_name() {
460460
[ERROR] failed to parse manifest at `[..]`
461461
462462
Caused by:
463-
package name cannot be an empty string
463+
package name cannot be empty
464464
",
465465
)
466466
.run();

0 commit comments

Comments
 (0)