Append .git suffix to quire repo new when omitted
RepoName validation stays strict for rm, mirror, and hooks; only new normalizes.

Assisted-by: GLM-5.2 via pi
change xpnsnppkqvsnkmksskmzyxtqxlntmmur
commit 40c7f59a1254e0fb8c7703ade78861b96899cdf2
author Alpha Chen <alpha@kejadlen.dev>
date
parent rxqzynor
diff --git a/quire-server/src/bin/quire/commands/repo.rs b/quire-server/src/bin/quire/commands/repo.rs
index 331dbce..7a7fc9a 100644
--- a/quire-server/src/bin/quire/commands/repo.rs
+++ b/quire-server/src/bin/quire/commands/repo.rs
@@ -5,8 +5,16 @@ use miette::{IntoDiagnostic, Result, ensure};
 use quire::Quire;
 use quire::quire::{Repo, RepoName};
 
-pub async fn new(quire: &Quire, name: &RepoName) -> Result<()> {
-    let repo = Repo::new(&quire.repos_dir(), name);
+pub async fn new(quire: &Quire, raw: &str) -> Result<()> {
+    // Accept names with or without the .git suffix.
+    let normalized = if raw.ends_with(".git") {
+        raw.to_string()
+    } else {
+        format!("{raw}.git")
+    };
+    let name: RepoName = normalized.parse()?;
+
+    let repo = Repo::new(&quire.repos_dir(), &name);
     ensure!(!repo.exists(), "repository already exists: {name}");
 
     // Create parent directory for grouped repos (e.g. work/foo.git).
diff --git a/quire-server/src/bin/quire/main.rs b/quire-server/src/bin/quire/main.rs
index 40b0934..5b6c934 100644
--- a/quire-server/src/bin/quire/main.rs
+++ b/quire-server/src/bin/quire/main.rs
@@ -82,7 +82,8 @@ enum RepoCommands {
     /// Create a new bare repository.
     New {
         /// Repository name (e.g. foo.git or work/foo.git).
-        name: RepoName,
+        /// The .git suffix is added automatically if omitted.
+        name: String,
     },
 
     /// List all repositories.