diff --git a/radicle-cli/examples/rad-id-update-delete-field.md b/radicle-cli/examples/rad-id-update-delete-field.md index 548cc9c6..968dd829 100644 --- a/radicle-cli/examples/rad-id-update-delete-field.md +++ b/radicle-cli/examples/rad-id-update-delete-field.md @@ -69,3 +69,10 @@ $ rad id update --title "Delete field" --description "Delete 'web'" --payload xy "threshold": 1 } ``` + +Note that we cannot delete mandatory fields: + +``` (fails) +$ rad id update --title "Delete default branch" --payload xyz.radicle.project defaultBranch null +✗ Error: failed to verify `xyz.radicle.project`, failed with json: missing field `defaultBranch` +``` diff --git a/radicle-cli/src/commands/id.rs b/radicle-cli/src/commands/id.rs index f2333ee8..95153beb 100644 --- a/radicle-cli/src/commands/id.rs +++ b/radicle-cli/src/commands/id.rs @@ -390,6 +390,11 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> { anyhow::bail!("payload `{id}` not found in identity document"); } } + // Verify that the project payload can still be parsed into the + // `Project` type. + if let Err(e) = proposal.project() { + anyhow::bail!("failed to verify `xyz.radicle.project`, failed with {e}",); + } proposal }; if proposal == current.doc {