Skip to content

Commit 72b170e

Browse files
committed
refactor(toml): Group related validation functions
1 parent 640d41d commit 72b170e

File tree

1 file changed

+52
-52
lines changed

1 file changed

+52
-52
lines changed

src/cargo/util/toml/targets.rs

Lines changed: 52 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -791,58 +791,6 @@ fn inferred_to_toml_targets(inferred: &[(String, PathBuf)]) -> Vec<TomlTarget> {
791791
.collect()
792792
}
793793

794-
fn validate_lib_name(target: &TomlTarget, warnings: &mut Vec<String>) -> CargoResult<()> {
795-
validate_target_name(target, "library", "lib", warnings)?;
796-
let name = name_or_panic(target);
797-
if name.contains('-') {
798-
anyhow::bail!("library target names cannot contain hyphens: {}", name)
799-
}
800-
801-
Ok(())
802-
}
803-
804-
fn validate_bin_name(bin: &TomlTarget, warnings: &mut Vec<String>) -> CargoResult<()> {
805-
validate_target_name(bin, "binary", "bin", warnings)?;
806-
let name = name_or_panic(bin).to_owned();
807-
if restricted_names::is_conflicting_artifact_name(&name) {
808-
anyhow::bail!(
809-
"the binary target name `{name}` is forbidden, \
810-
it conflicts with cargo's build directory names",
811-
)
812-
}
813-
814-
Ok(())
815-
}
816-
817-
fn validate_target_name(
818-
target: &TomlTarget,
819-
target_kind_human: &str,
820-
target_kind: &str,
821-
warnings: &mut Vec<String>,
822-
) -> CargoResult<()> {
823-
match target.name {
824-
Some(ref name) => {
825-
if name.trim().is_empty() {
826-
anyhow::bail!("{} target names cannot be empty", target_kind_human)
827-
}
828-
if cfg!(windows) && restricted_names::is_windows_reserved(name) {
829-
warnings.push(format!(
830-
"{} target `{}` is a reserved Windows filename, \
831-
this target will not work on Windows platforms",
832-
target_kind_human, name
833-
));
834-
}
835-
}
836-
None => anyhow::bail!(
837-
"{} target {}.name is required",
838-
target_kind_human,
839-
target_kind
840-
),
841-
}
842-
843-
Ok(())
844-
}
845-
846794
/// Will check a list of toml targets, and make sure the target names are unique within a vector.
847795
fn validate_unique_names(targets: &[TomlTarget], target_kind: &str) -> CargoResult<()> {
848796
let mut seen = HashSet::new();
@@ -1055,6 +1003,58 @@ fn name_or_panic(target: &TomlTarget) -> &str {
10551003
.unwrap_or_else(|| panic!("target name is required"))
10561004
}
10571005

1006+
fn validate_lib_name(target: &TomlTarget, warnings: &mut Vec<String>) -> CargoResult<()> {
1007+
validate_target_name(target, "library", "lib", warnings)?;
1008+
let name = name_or_panic(target);
1009+
if name.contains('-') {
1010+
anyhow::bail!("library target names cannot contain hyphens: {}", name)
1011+
}
1012+
1013+
Ok(())
1014+
}
1015+
1016+
fn validate_bin_name(bin: &TomlTarget, warnings: &mut Vec<String>) -> CargoResult<()> {
1017+
validate_target_name(bin, "binary", "bin", warnings)?;
1018+
let name = name_or_panic(bin).to_owned();
1019+
if restricted_names::is_conflicting_artifact_name(&name) {
1020+
anyhow::bail!(
1021+
"the binary target name `{name}` is forbidden, \
1022+
it conflicts with cargo's build directory names",
1023+
)
1024+
}
1025+
1026+
Ok(())
1027+
}
1028+
1029+
fn validate_target_name(
1030+
target: &TomlTarget,
1031+
target_kind_human: &str,
1032+
target_kind: &str,
1033+
warnings: &mut Vec<String>,
1034+
) -> CargoResult<()> {
1035+
match target.name {
1036+
Some(ref name) => {
1037+
if name.trim().is_empty() {
1038+
anyhow::bail!("{} target names cannot be empty", target_kind_human)
1039+
}
1040+
if cfg!(windows) && restricted_names::is_windows_reserved(name) {
1041+
warnings.push(format!(
1042+
"{} target `{}` is a reserved Windows filename, \
1043+
this target will not work on Windows platforms",
1044+
target_kind_human, name
1045+
));
1046+
}
1047+
}
1048+
None => anyhow::bail!(
1049+
"{} target {}.name is required",
1050+
target_kind_human,
1051+
target_kind
1052+
),
1053+
}
1054+
1055+
Ok(())
1056+
}
1057+
10581058
fn validate_bin_proc_macro(
10591059
target: &TomlTarget,
10601060
_warnings: &mut Vec<String>,

0 commit comments

Comments
 (0)