cli: error on no id update

If `rad id` is called with no arguments, or just `--title` and
`--description`, then it will fail because there were no changes made
to the identity.

Check if the `proposal` document is the same the `current` document,
and if so supply a hint and a better error.

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
This commit is contained in:
Fintan Halpenny 2024-03-07 16:21:34 +00:00 committed by cloudhead
parent 864ca656c0
commit 18fc41c53f
No known key found for this signature in database
2 changed files with 14 additions and 0 deletions

View File

@ -147,3 +147,11 @@ $ rad id update --title "Add Eve" --description "Add Eve as a delegate" --delega
✗ Error: missing delegate z6MkedT…47fovFn in local storage
✗ Error: fatal: refusing to update identity document
```
If no updates are specified then the update will fail:
``` (fail)
$ rad id update --title "Update canonical branch" --description "Update the canonical branch to `main`"
✗ Error: no update specified
✗ Hint: an update to the identity must be specified, run `rad id update -h` to see the available options
```

View File

@ -380,6 +380,12 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
}
proposal
};
if proposal == current.doc {
return Err(Error::WithHint {
err: anyhow!("no update specified"),
hint: "an update to the identity must be specified, run `rad id update -h` to see the available options"
}.into());
}
let revision = update(title, description, proposal, &mut identity, &signer)?;
if revision.is_accepted() && revision.parent == Some(current.id) {