feat: add --force-id flag to bypass case validation in repo announce

The new flag allows users to skip the kebkab case ID check when announcing
repositories.

Signed-off-by: Awiteb <a@4rs.nl>
This commit is contained in:
Awiteb
2025-05-22 07:47:20 +00:00
parent 2d5c0bf549
commit 06374fe1fc
3 changed files with 19 additions and 1 deletions

View File

@@ -48,6 +48,9 @@ pub struct AnnounceArgs {
/// Labels to categorize the repository. Can be specified multiple times.
#[arg(short, long)]
label: Vec<String>,
/// Skip kebab-case validation for the repository ID
#[arg(long)]
force_id: bool,
}
impl CommandRunner for AnnounceArgs {
@@ -70,6 +73,7 @@ impl CommandRunner for AnnounceArgs {
options.relays.clone(),
self.maintainers,
self.label.into_iter().map(utils::str_trim).collect(),
self.force_id,
)?
.pow(options.pow)
.build(user_pubk);

View File

@@ -76,9 +76,17 @@ impl EventBuilder {
relays: Vec<RelayUrl>,
maintainers: Vec<PublicKey>,
labels: Vec<String>,
force_id: bool,
) -> N34Result<EventBuilder> {
let repo_id = repo_id.trim();
if repo_id.is_empty() || repo_id != repo_id.to_case(Case::Kebab) {
let kebab_repo_id = repo_id.to_case(Case::Kebab);
if repo_id.is_empty() || (!force_id && repo_id != kebab_repo_id) {
if repo_id != kebab_repo_id {
tracing::error!(
"The repo id should be `{kebab_repo_id}` (kebab-case). Use `--force-id` to \
override this check"
);
}
return Err(N34Error::InvalidRepoId);
}