Radish alpha
h
rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
Radicle Heartwood Protocol & Stack
Radicle
Git
cli: reject `rad id` proposals that do not verify
Merged fintohaps opened 1 year ago

To ensure that the rad id command does not modify the project payload without it being able to be deserialized into the Project type, the command performs this check throught the project method, and returns an error if this fails.

2 files changed +12 -0 11a1bca0 cb2cbf01
modified 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`
+
```
modified 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 {