cli: idempotent `rad id update`
Instead of producing an error when there is no update during `rad id update`, a message that the document is up to date is printed. The command is considered is considered successful. Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com> X-Clacks-Overhead: GNU Terry Pratchett
This commit is contained in:
parent
42ffbf3fe6
commit
80f1e6516c
|
|
@ -62,17 +62,16 @@ $ rad id update --title "Remove allow list" --allow did:key:z6Mkt67GdsW7715MEfRu
|
|||
✗ Error: `--allow` and `--disallow` must not overlap: ["did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk"]
|
||||
```
|
||||
|
||||
Allowing or disallowing the same peer twice will result in an error the second
|
||||
call, since there is no update specified:
|
||||
Allowing or disallowing the same peer twice will result in a message saying that
|
||||
the document is already up to date:
|
||||
|
||||
```
|
||||
$ rad id update --title "Allow Bob" --allow did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk -q
|
||||
...
|
||||
```
|
||||
``` (fails)
|
||||
$ rad id update --title "Allow Bob" --allow did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk -q
|
||||
✗ Error: no update specified
|
||||
✗ Hint: an update to the identity must be specified, run `rad id update -h` to see the available options
|
||||
```
|
||||
$ rad id update --title "Allow Bob" --allow did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
|
||||
Nothing to do. The document is up to date. See `rad inspect --identity`.
|
||||
```
|
||||
|
||||
If we attempt to change the list while also changing the repository to `public`,
|
||||
|
|
|
|||
|
|
@ -74,5 +74,5 @@ 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`
|
||||
✗ Error: failed to verify `xyz.radicle.project`, json: missing field `defaultBranch`
|
||||
```
|
||||
|
|
|
|||
|
|
@ -174,10 +174,9 @@ $ rad id accept 0ca42d376bd566631083c8913cf86bec722da392
|
|||
✗ Error: [..]
|
||||
```
|
||||
|
||||
If no updates are specified then the update will fail:
|
||||
If no updates are specified then we are told that our command had no effect:
|
||||
|
||||
``` (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
|
||||
```
|
||||
$ rad id update --title "Update canonical branch" --description "Update the canonical branch to `main`"
|
||||
Nothing to do. The document is up to date. See `rad inspect --identity`.
|
||||
```
|
||||
|
|
|
|||
|
|
@ -465,15 +465,15 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
|
|||
// 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}",);
|
||||
anyhow::bail!("failed to verify `xyz.radicle.project`, {e}");
|
||||
}
|
||||
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());
|
||||
term::print(term::format::italic(
|
||||
"Nothing to do. The document is up to date. See `rad inspect --identity`.",
|
||||
));
|
||||
return Ok(());
|
||||
}
|
||||
let revision = update(title, description, proposal, &mut identity, &signer)?;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue