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

@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Added
- Add `--force-id` flag to bypass case validation in `repo announce` - (Awiteb at [8f627c2](https://git.4rs.nl/awiteb/n34.git/commit/?id=8f627c2704e31538074f06b8300b1a118eb6f21d))
## [0.1.0] - 2025-05-21 ## [0.1.0] - 2025-05-21
### Added ### Added

View File

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

View File

@@ -76,9 +76,17 @@ impl EventBuilder {
relays: Vec<RelayUrl>, relays: Vec<RelayUrl>,
maintainers: Vec<PublicKey>, maintainers: Vec<PublicKey>,
labels: Vec<String>, labels: Vec<String>,
force_id: bool,
) -> N34Result<EventBuilder> { ) -> N34Result<EventBuilder> {
let repo_id = repo_id.trim(); 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); return Err(N34Error::InvalidRepoId);
} }