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
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.