From a42b3bd6b8b2d3613c5be182b82075d6ff0dd5af Mon Sep 17 00:00:00 2001 From: Ashton Sickler Date: Thu, 24 Apr 2025 16:06:51 -0500 Subject: [PATCH 1/3] Added format_project_name() --- Cargo.lock | 4 ++++ Cargo.toml | 2 +- src/cargo/ops/cargo_new.rs | 21 ++++++++++++++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c63294ade88..5049c09553a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3918,6 +3918,10 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "test_1__" +version = "0.1.0" + [[package]] name = "thiserror" version = "1.0.69" diff --git a/Cargo.toml b/Cargo.toml index 8348c65bb88..afe307beac7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = [ "crates/*", "credential/*", "benches/benchsuite", - "benches/capture", + "benches/capture", ".my_tests/test.1.:", ] exclude = [ "target/", # exclude bench testing diff --git a/src/cargo/ops/cargo_new.rs b/src/cargo/ops/cargo_new.rs index 88d2d6bf162..079202f4fd9 100644 --- a/src/cargo/ops/cargo_new.rs +++ b/src/cargo/ops/cargo_new.rs @@ -469,6 +469,23 @@ pub fn new(opts: &NewOptions, gctx: &GlobalContext) -> CargoResult<()> { Ok(()) } +// This issue comes from me trying to port Tsoding's nob.h to Rust (yes, very Rust of me) +// and I named the directory nob.rs, but I got yelled at. So, in spirit of Rust and because I want to, +// I am making an auto-fix for this <2 +/// All illegal characters will become '_' or some other variant that makes sense! +pub fn format_project_name(name: &str) -> String { + let mut result = String::new(); + + for c in name.chars() { + result.push(match c { + '.' | ':' | '"' | '\'' => '_', + _ => c, + }); + } + + result +} + pub fn init(opts: &NewOptions, gctx: &GlobalContext) -> CargoResult { // This is here just as a random location to exercise the internal error handling. if gctx.get_env_os("__CARGO_TEST_INTERNAL_ERROR").is_some() { @@ -477,6 +494,8 @@ pub fn init(opts: &NewOptions, gctx: &GlobalContext) -> CargoResult CargoResult Date: Thu, 24 Apr 2025 16:09:30 -0500 Subject: [PATCH 2/3] Removed unneeded path from Cargo.toml --- Cargo.lock | 4 ---- Cargo.toml | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5049c09553a..c63294ade88 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3918,10 +3918,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "test_1__" -version = "0.1.0" - [[package]] name = "thiserror" version = "1.0.69" diff --git a/Cargo.toml b/Cargo.toml index afe307beac7..8348c65bb88 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = [ "crates/*", "credential/*", "benches/benchsuite", - "benches/capture", ".my_tests/test.1.:", + "benches/capture", ] exclude = [ "target/", # exclude bench testing From 92fbbdd1676d887489d10dd842a210097334d007 Mon Sep 17 00:00:00 2001 From: Ashton Sickler Date: Thu, 24 Apr 2025 16:17:16 -0500 Subject: [PATCH 3/3] Added format_project_name() to fn new() --- src/cargo/ops/cargo_new.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/cargo/ops/cargo_new.rs b/src/cargo/ops/cargo_new.rs index 079202f4fd9..c1b6efa4cde 100644 --- a/src/cargo/ops/cargo_new.rs +++ b/src/cargo/ops/cargo_new.rs @@ -434,6 +434,9 @@ fn calculate_new_project_kind( pub fn new(opts: &NewOptions, gctx: &GlobalContext) -> CargoResult<()> { let path = &opts.path; let name = get_name(path, opts)?; + let name = format_project_name(name); + let name = name.as_str(); + gctx.shell() .status("Creating", format!("{} `{}` package", opts.kind, name))?; @@ -496,6 +499,7 @@ pub fn init(opts: &NewOptions, gctx: &GlobalContext) -> CargoResult