rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwood9d0870ad5d3abc707cbdf2d6e038c651c1cc88f8
{
"request": "trigger",
"version": 1,
"event_type": "patch",
"repository": {
"id": "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
"name": "heartwood",
"description": "Radicle Heartwood Protocol & Stack",
"private": false,
"default_branch": "master",
"delegates": [
"did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT",
"did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
]
},
"action": "Created",
"patch": {
"id": "311c0082e10bd3ddcb8dc40ba13f9f00e8b12b65",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"title": "cli: add remaining patch actions",
"state": {
"status": "merged",
"conflicts": []
},
"before": "e130b4dc06ca02a035519e1ea86ffeafc788866f",
"after": "9d0870ad5d3abc707cbdf2d6e038c651c1cc88f8",
"commits": [
"9d0870ad5d3abc707cbdf2d6e038c651c1cc88f8"
],
"target": "d285eccb23f3986bfa88fc1af033e6dcb0dc3a65",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "311c0082e10bd3ddcb8dc40ba13f9f00e8b12b65",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"description": "Add the remaining `Patch` actions to the CLI interface. These include:\n\n- React to a revision\n- Edit a comment\n- React to a comment\n- Redact a comment\n\nThe `react` subcommand is added in a straight-forward manner.\n\nThe comment commands are slightly less straight-forward. In order to\nkeep to one layer of subcommands, these variants are done through the\n`rad patch comment` subcommand. They are accessed via options:\n`--edit`, `--react`, and `--redact`, respectively. Each of these\noptions takes the `CommentId` for which the action is affecting. The\n`message`, `react` (introduced for `rad patch react`), and `undo`\nvariables repurposed for this subset of actions.",
"base": "e130b4dc06ca02a035519e1ea86ffeafc788866f",
"oid": "9d0870ad5d3abc707cbdf2d6e038c651c1cc88f8",
"timestamp": 1726573506
},
{
"id": "3de0114f48beb759778084fe1d9380de21a56d88",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"description": "Rebase.",
"base": "7d28d1e648b58e15a23fdbebadde648b4c8505b0",
"oid": "4cced3ddb802d04c982d1833b8bbb39621b93228",
"timestamp": 1736859673
}
]
}
}
{
"response": "triggered",
"run_id": {
"id": "e78c68b5-5776-4988-ace4-c632fbfc6e94"
},
"info_url": "https://cci.rad.levitte.org//e78c68b5-5776-4988-ace4-c632fbfc6e94.html"
}
Started at: 2026-09-07 20:10:04.540477+02:00
Commands:
$ rad clone rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 .
✓ Creating checkout in ./...
✓ Remote cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT added
✓ Remote-tracking branch cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT/master created for z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT
✓ Remote fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM added
✓ Remote-tracking branch fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/master created for z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM
✓ Remote lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz added
✓ Remote-tracking branch lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz/master created for z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz
✓ Repository successfully cloned under /opt/radcis/ci.rad.levitte.org/cci/state/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 189 issues · 38 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ rad patch checkout 311c0082e10bd3ddcb8dc40ba13f9f00e8b12b65
✓ Switched to branch patch/311c008 at revision 311c008
✓ Branch patch/311c008 setup to track rad/patches/311c0082e10bd3ddcb8dc40ba13f9f00e8b12b65
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout 9d0870ad5d3abc707cbdf2d6e038c651c1cc88f8
HEAD is now at 9d0870ad cli: add remaining patch actions
Exit code: 0
$ rad patch show 311c0082e10bd3ddcb8dc40ba13f9f00e8b12b65 -p
╭───────────────────────────────────────────────────────────────────────────────╮
│ Title cli: add remaining patch actions │
│ Patch 311c0082e10bd3ddcb8dc40ba13f9f00e8b12b65 │
│ Author fintohaps z6Mkire…SQZ3voM │
│ Head 9d0870ad5d3abc707cbdf2d6e038c651c1cc88f8 │
│ Base e130b4dc06ca02a035519e1ea86ffeafc788866f │
│ Target master │
│ Branches patch/311c008 │
│ Commits ahead 1, behind 1187 │
│ Status merged │
│ │
│ Add the remaining `Patch` actions to the CLI interface. These include: │
│ │
│ - React to a revision │
│ - Edit a comment │
│ - React to a comment │
│ - Redact a comment │
│ │
│ The `react` subcommand is added in a straight-forward manner. │
│ │
│ The comment commands are slightly less straight-forward. In order to │
│ keep to one layer of subcommands, these variants are done through the │
│ `rad patch comment` subcommand. They are accessed via options: │
│ `--edit`, `--react`, and `--redact`, respectively. Each of these │
│ options takes the `CommentId` for which the action is affecting. The │
│ `message`, `react` (introduced for `rad patch react`), and `undo` │
│ variables repurposed for this subset of actions. │
├───────────────────────────────────────────────────────────────────────────────┤
│ 9d0870a cli: add remaining patch actions │
├───────────────────────────────────────────────────────────────────────────────┤
│ ● Revision 311c008 @ e130b4d..9d0870a by fintohaps z6Mkire…SQZ3voM 1 year ago │
│ ↑ Revision 3de0114 @ 7d28d1e..4cced3d by cloudhead z6MksFq…bS9wzpT 1 year ago │
│ └─ ✓ merged by cloudhead z6MksFq…bS9wzpT │
╰───────────────────────────────────────────────────────────────────────────────╯
commit 9d0870ad5d3abc707cbdf2d6e038c651c1cc88f8
Author: Fintan Halpenny <fintan.halpenny@gmail.com>
Date: Mon Sep 16 13:40:39 2024 +0100
cli: add remaining patch actions
Add the remaining `Patch` actions to the CLI interface. These include:
- React to a revision
- Edit a comment
- React to a comment
- Redact a comment
The `react` subcommand is added in a straight-forward manner.
The comment commands are slightly less straight-forward. In order to
keep to one layer of subcommands, these variants are done through the
`rad patch comment` subcommand. They are accessed via options:
`--edit`, `--react`, and `--redact`, respectively. Each of these
options takes the `CommentId` for which the action is affecting. The
`message`, `react` (introduced for `rad patch react`), and `undo`
variables repurposed for this subset of actions.
diff --git a/radicle-cli/examples/rad-patch.md b/radicle-cli/examples/rad-patch.md
index 54b77ce94..503fa7383 100644
--- a/radicle-cli/examples/rad-patch.md
+++ b/radicle-cli/examples/rad-patch.md
@@ -143,6 +143,23 @@ $ rad patch comment aa45913 --message 'My favorite decade!' --reply-to 686ec1c -
f4336e42daf76342f787d574b5ee779d89d05c7a
```
+If we realize we made a mistake in the comment, we can go back and edit it:
+
+```
+$ rad patch comment aa45913 --edit 686ec1c --message 'I cannot wait to get back to the 80s!' --no-announce
+╭───────────────────────────────────────╮
+│ alice (you) now 686ec1c │
+│ I cannot wait to get back to the 80s! │
+╰───────────────────────────────────────╯
+```
+
+And if we really made a mistake, then we can redact the comment entirely:
+
+```
+$ rad patch comment aa45913 --redact f4336e4 --no-announce
+✓ Redacted comment f4336e42daf76342f787d574b5ee779d89d05c7a
+```
+
Now, let's checkout the patch that we just created:
```
diff --git a/radicle-cli/src/commands/patch.rs b/radicle-cli/src/commands/patch.rs
index bf54a7e3e..8a78f8bc8 100644
--- a/radicle-cli/src/commands/patch.rs
+++ b/radicle-cli/src/commands/patch.rs
@@ -18,6 +18,8 @@ mod edit;
mod label;
#[path = "patch/list.rs"]
mod list;
+#[path = "patch/react.rs"]
+mod react;
#[path = "patch/ready.rs"]
mod ready;
#[path = "patch/redact.rs"]
@@ -33,11 +35,12 @@ mod update;
use std::collections::BTreeSet;
use std::ffi::OsString;
+use std::str::FromStr as _;
use anyhow::anyhow;
use radicle::cob::patch::PatchId;
-use radicle::cob::{patch, Label};
+use radicle::cob::{patch, Label, Reaction};
use radicle::git::RefString;
use radicle::patch::cache::Patches as _;
use radicle::storage::git::transport;
@@ -67,12 +70,14 @@ Usage
rad patch resolve <patch-id> [--review <review-id>] [--comment <comment-id>] [--unresolve] [<option>...]
rad patch delete <patch-id> [<option>...]
rad patch redact <revision-id> [<option>...]
+ rad patch react <patch-id | revision-id> [--react <emoji>] [<option>...]
rad patch assign <revision-id> [--add <did>] [--delete <did>] [<option>...]
rad patch label <revision-id> [--add <label>] [--delete <label>] [<option>...]
rad patch ready <patch-id> [--undo] [<option>...]
rad patch edit <patch-id> [<option>...]
rad patch set <patch-id> [<option>...]
- rad patch comment <patch-id | revision-id> [<option>...]
+ rad patch comment <patch-id | revision-id> [--edit <comment-id>] [--redact <comment-id>]
+ [--react <comment-id> --emoji <char>] [<option>...]
rad patch cache [<patch-id>] [<option>...]
Show options
@@ -89,6 +94,10 @@ Comment options
-m, --message <string> Provide a comment message via the command-line
--reply-to <comment> The comment to reply to
+ --edit <comment> The comment to edit. If --message is used, the comment will be edited with the provided message
+ --react <comment> The comment to react to
+ --emoji <char> The emoji to react with when --react is used
+ --redact <comment> The comment to redact
Edit options
@@ -163,6 +172,10 @@ Set options
--remote <string> Provide the git remote to use as the upstream
+React options
+
+ --emoji <char> The emoji to react to the patch or revision with
+
Other options
--repo <rid> Operate on the given repository (default: cwd)
@@ -182,6 +195,7 @@ pub enum OperationName {
Delete,
Checkout,
Comment,
+ React,
Ready,
Review,
Resolve,
@@ -194,6 +208,13 @@ pub enum OperationName {
Cache,
}
+#[derive(Debug, PartialEq, Eq)]
+pub enum CommentOperation {
+ Edit,
+ React,
+ Redact,
+}
+
#[derive(Debug, Default, PartialEq, Eq)]
pub struct AssignOptions {
pub add: BTreeSet<Did>,
@@ -243,6 +264,26 @@ pub enum Operation {
message: Message,
reply_to: Option<Rev>,
},
+ CommentEdit {
+ revision_id: Rev,
+ comment_id: Rev,
+ message: Message,
+ },
+ CommentRedact {
+ revision_id: Rev,
+ comment_id: Rev,
+ },
+ CommentReact {
+ revision_id: Rev,
+ comment_id: Rev,
+ reaction: Reaction,
+ undo: bool,
+ },
+ React {
+ revision_id: Rev,
+ reaction: Reaction,
+ undo: bool,
+ },
Review {
patch_id: Rev,
revision_id: Option<Rev>,
@@ -290,12 +331,16 @@ impl Operation {
| Operation::Ready { .. }
| Operation::Delete { .. }
| Operation::Comment { .. }
+ | Operation::CommentEdit { .. }
+ | Operation::CommentRedact { .. }
+ | Operation::CommentReact { .. }
| Operation::Review { .. }
| Operation::Resolve { .. }
| Operation::Assign { .. }
| Operation::Label { .. }
| Operation::Edit { .. }
| Operation::Redact { .. }
+ | Operation::React { .. }
| Operation::Set { .. } => true,
Operation::Show { .. }
| Operation::Diff { .. }
@@ -337,7 +382,9 @@ impl Args for Options {
let mut diff = false;
let mut debug = false;
let mut undo = false;
+ let mut reaction: Option<Reaction> = None;
let mut reply_to: Option<Rev> = None;
+ let mut comment_op: Option<(CommentOperation, Rev)> = None;
let mut checkout_opts = checkout::Options::default();
let mut remote: Option<RefString> = None;
let mut assign_opts = AssignOptions::default();
@@ -392,6 +439,17 @@ impl Args for Options {
base_id = Some(rev);
}
+ // React options.
+ Long("emoji") if op == Some(OperationName::React) => {
+ if let Some(emoji) = parser.value()?.to_str() {
+ reaction =
+ Some(Reaction::from_str(emoji).map_err(|_| anyhow!("invalid emoji"))?);
+ }
+ }
+ Long("undo") if op == Some(OperationName::React) => {
+ undo = true;
+ }
+
// Comment options.
Long("reply-to") if op == Some(OperationName::Comment) => {
let val = parser.value()?;
@@ -400,6 +458,42 @@ impl Args for Options {
reply_to = Some(rev);
}
+ Long("edit") if op == Some(OperationName::Comment) => {
+ let val = parser.value()?;
+ let rev = term::args::rev(&val)?;
+
+ comment_op = Some((CommentOperation::Edit, rev));
+ }
+
+ Long("react") if op == Some(OperationName::Comment) => {
+ let val = parser.value()?;
+ let rev = term::args::rev(&val)?;
+
+ comment_op = Some((CommentOperation::React, rev));
+ }
+ Long("emoji")
+ if op == Some(OperationName::Comment)
+ && matches!(comment_op, Some((CommentOperation::React, _))) =>
+ {
+ if let Some(emoji) = parser.value()?.to_str() {
+ reaction =
+ Some(Reaction::from_str(emoji).map_err(|_| anyhow!("invalid emoji"))?);
+ }
+ }
+ Long("undo")
+ if op == Some(OperationName::Comment)
+ && matches!(comment_op, Some((CommentOperation::React, _))) =>
+ {
+ undo = true;
+ }
+
+ Long("redact") if op == Some(OperationName::Comment) => {
+ let val = parser.value()?;
+ let rev = term::args::rev(&val)?;
+
+ comment_op = Some((CommentOperation::Redact, rev));
+ }
+
// Edit options.
Long("revision") | Short('r') if op == Some(OperationName::Edit) => {
let val = parser.value()?;
@@ -665,11 +759,38 @@ impl Args for Options {
revision_id,
opts: checkout_opts,
},
- OperationName::Comment => Operation::Comment {
+ OperationName::Comment => match comment_op {
+ Some((CommentOperation::Edit, comment)) => Operation::CommentEdit {
+ revision_id: patch_id
+ .ok_or_else(|| anyhow!("a patch or revision must be provided"))?,
+ comment_id: comment,
+ message,
+ },
+ Some((CommentOperation::React, comment)) => Operation::CommentReact {
+ revision_id: patch_id
+ .ok_or_else(|| anyhow!("a patch or revision must be provided"))?,
+ comment_id: comment,
+ reaction: reaction
+ .ok_or_else(|| anyhow!("a reaction emoji must be provided"))?,
+ undo,
+ },
+ Some((CommentOperation::Redact, comment)) => Operation::CommentRedact {
+ revision_id: patch_id
+ .ok_or_else(|| anyhow!("a patch or revision must be provided"))?,
+ comment_id: comment,
+ },
+ None => Operation::Comment {
+ revision_id: patch_id
+ .ok_or_else(|| anyhow!("a patch or revision must be provided"))?,
+ message,
+ reply_to,
+ },
+ },
+ OperationName::React => Operation::React {
revision_id: patch_id
.ok_or_else(|| anyhow!("a patch or revision must be provided"))?,
- message,
- reply_to,
+ reaction: reaction.ok_or_else(|| anyhow!("a reaction emoji must be provided"))?,
+ undo,
},
OperationName::Review => Operation::Review {
patch_id: patch_id
@@ -940,6 +1061,52 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
.transpose()?;
cache::run(patch_id, &repository, &profile)?;
}
+ Operation::CommentEdit {
+ revision_id,
+ comment_id,
+ message,
+ } => {
+ let comment = comment_id.resolve(&repository.backend)?;
+ comment::edit::run(
+ revision_id,
+ comment,
+ message,
+ options.quiet,
+ &repository,
+ &profile,
+ )?;
+ }
+ Operation::CommentRedact {
+ revision_id,
+ comment_id,
+ } => {
+ let comment = comment_id.resolve(&repository.backend)?;
+ comment::redact::run(revision_id, comment, &repository, &profile)?;
+ }
+ Operation::CommentReact {
+ revision_id,
+ comment_id,
+ reaction,
+ undo,
+ } => {
+ let comment = comment_id.resolve(&repository.backend)?;
+ if undo {
+ comment::react::run(revision_id, comment, reaction, false, &repository, &profile)?;
+ } else {
+ comment::react::run(revision_id, comment, reaction, true, &repository, &profile)?;
+ }
+ }
+ Operation::React {
+ revision_id,
+ reaction,
+ undo,
+ } => {
+ if undo {
+ react::run(&revision_id, reaction, false, &repository, &profile)?;
+ } else {
+ react::run(&revision_id, reaction, true, &repository, &profile)?;
+ }
+ }
}
if announce {
diff --git a/radicle-cli/src/commands/patch/comment.rs b/radicle-cli/src/commands/patch/comment.rs
index cf3773695..676f33ba7 100644
--- a/radicle-cli/src/commands/patch/comment.rs
+++ b/radicle-cli/src/commands/patch/comment.rs
@@ -1,3 +1,10 @@
+#[path = "comment/edit.rs"]
+pub mod edit;
+#[path = "comment/react.rs"]
+pub mod react;
+#[path = "comment/redact.rs"]
+pub mod redact;
+
use super::*;
use radicle::cob;
diff --git a/radicle-cli/src/commands/patch/comment/edit.rs b/radicle-cli/src/commands/patch/comment/edit.rs
new file mode 100644
index 000000000..54f816f0d
--- /dev/null
+++ b/radicle-cli/src/commands/patch/comment/edit.rs
@@ -0,0 +1,51 @@
+use anyhow::anyhow;
+
+use radicle::cob;
+use radicle::cob::patch;
+use radicle::cob::thread;
+use radicle::patch::cache::Patches as _;
+use radicle::patch::ByRevision;
+use radicle::storage::git::Repository;
+use radicle::Profile;
+
+use crate::git;
+use crate::terminal as term;
+use crate::terminal::Element as _;
+
+pub fn run(
+ revision_id: git::Rev,
+ comment_id: thread::CommentId,
+ message: term::patch::Message,
+ quiet: bool,
+ repo: &Repository,
+ profile: &Profile,
+) -> anyhow::Result<()> {
+ let signer = term::signer(profile)?;
+ let mut patches = profile.patches_mut(repo)?;
+ let revision_id = revision_id.resolve::<cob::EntryId>(&repo.backend)?;
+ let ByRevision {
+ id: patch_id,
+ patch,
+ revision_id,
+ revision,
+ } = patches
+ .find_by_revision(&patch::RevisionId::from(revision_id))?
+ .ok_or_else(|| anyhow!("Patch revision `{revision_id}` not found"))?;
+ let (body, _) = super::prompt(message, None, &revision, repo)?;
+ let mut patch = patch::PatchMut::new(patch_id, patch, &mut patches);
+ patch.comment_edit(revision_id, comment_id, body, vec![], &signer)?;
+
+ if quiet {
+ term::success!("Updated {comment_id}");
+ } else {
+ let comment = patch
+ .revision(&revision_id)
+ .ok_or(anyhow!("error retrieving revision `{revision_id}`"))?
+ .discussion()
+ .comment(&comment_id)
+ .ok_or(anyhow!("error retrieving comment `{comment_id}`"))?;
+
+ term::comment::widget(&comment_id, comment, profile).print();
+ }
+ Ok(())
+}
diff --git a/radicle-cli/src/commands/patch/comment/react.rs b/radicle-cli/src/commands/patch/comment/react.rs
new file mode 100644
index 000000000..586fa49cf
--- /dev/null
+++ b/radicle-cli/src/commands/patch/comment/react.rs
@@ -0,0 +1,38 @@
+use anyhow::anyhow;
+
+use radicle::cob;
+use radicle::cob::patch;
+use radicle::cob::thread;
+use radicle::cob::Reaction;
+use radicle::patch::cache::Patches as _;
+use radicle::patch::ByRevision;
+use radicle::storage::git::Repository;
+use radicle::Profile;
+
+use crate::git;
+use crate::terminal as term;
+
+pub fn run(
+ revision_id: git::Rev,
+ comment: thread::CommentId,
+ reaction: Reaction,
+ active: bool,
+ repo: &Repository,
+ profile: &Profile,
+) -> anyhow::Result<()> {
+ let signer = term::signer(profile)?;
+ let mut patches = profile.patches_mut(repo)?;
+ let revision_id = revision_id.resolve::<cob::EntryId>(&repo.backend)?;
+ let ByRevision {
+ id: patch_id,
+ patch,
+ revision_id,
+ ..
+ } = patches
+ .find_by_revision(&patch::RevisionId::from(revision_id))?
+ .ok_or_else(|| anyhow!("Patch revision `{revision_id}` not found"))?;
+ let mut patch = patch::PatchMut::new(patch_id, patch, &mut patches);
+ patch.comment_react(revision_id, comment, reaction, active, &signer)?;
+
+ Ok(())
+}
diff --git a/radicle-cli/src/commands/patch/comment/redact.rs b/radicle-cli/src/commands/patch/comment/redact.rs
new file mode 100644
index 000000000..b8ada9b45
--- /dev/null
+++ b/radicle-cli/src/commands/patch/comment/redact.rs
@@ -0,0 +1,36 @@
+use anyhow::anyhow;
+
+use radicle::cob;
+use radicle::cob::patch;
+use radicle::cob::thread;
+use radicle::patch::cache::Patches as _;
+use radicle::patch::ByRevision;
+use radicle::storage::git::Repository;
+use radicle::Profile;
+
+use crate::git;
+use crate::terminal as term;
+
+pub fn run(
+ revision_id: git::Rev,
+ comment: thread::CommentId,
+ repo: &Repository,
+ profile: &Profile,
+) -> anyhow::Result<()> {
+ let signer = term::signer(profile)?;
+ let mut patches = profile.patches_mut(repo)?;
+ let revision_id = revision_id.resolve::<cob::EntryId>(&repo.backend)?;
+ let ByRevision {
+ id: patch_id,
+ patch,
+ revision_id,
+ ..
+ } = patches
+ .find_by_revision(&patch::RevisionId::from(revision_id))?
+ .ok_or_else(|| anyhow!("Patch revision `{revision_id}` not found"))?;
+ let mut patch = patch::PatchMut::new(patch_id, patch, &mut patches);
+ patch.comment_redact(revision_id, comment, &signer)?;
+ term::success!("Redacted comment {comment}");
+
+ Ok(())
+}
diff --git a/radicle-cli/src/commands/patch/common.rs b/radicle-cli/src/commands/patch/common.rs
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/radicle-cli/src/commands/patch/common.rs
@@ -0,0 +1 @@
+
diff --git a/radicle-cli/src/commands/patch/react.rs b/radicle-cli/src/commands/patch/react.rs
new file mode 100644
index 000000000..132659b50
--- /dev/null
+++ b/radicle-cli/src/commands/patch/react.rs
@@ -0,0 +1,35 @@
+use anyhow::anyhow;
+
+use radicle::cob;
+use radicle::cob::{patch, Reaction};
+use radicle::patch::cache::Patches as _;
+use radicle::patch::ByRevision;
+use radicle::storage::git::Repository;
+use radicle::Profile;
+
+use crate::git;
+use crate::terminal as term;
+
+pub fn run(
+ revision_id: &git::Rev,
+ reaction: Reaction,
+ active: bool,
+ repo: &Repository,
+ profile: &Profile,
+) -> anyhow::Result<()> {
+ let signer = term::signer(profile)?;
+ let mut patches = profile.patches_mut(repo)?;
+ let revision_id = revision_id.resolve::<cob::EntryId>(&repo.backend)?;
+ let ByRevision {
+ id: patch_id,
+ patch,
+ revision_id,
+ ..
+ } = patches
+ .find_by_revision(&patch::RevisionId::from(revision_id))?
+ .ok_or_else(|| anyhow!("Patch revision `{revision_id}` not found"))?;
+ let mut patch = patch::PatchMut::new(patch_id, patch, &mut patches);
+ patch.react(revision_id, reaction, None, active, &signer)?;
+
+ Ok(())
+}
Exit code: 0
shell: 'cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- --deny clippy::all cargo build --all-targets --workspace cargo doc --workspace cargo test --workspace --no-fail-fast '
Commands:
$ podman run --name e78c68b5-5776-4988-ace4-c632fbfc6e94 -v /opt/radcis/ci.rad.levitte.org/cci/state/e78c68b5-5776-4988-ace4-c632fbfc6e94/s:/e78c68b5-5776-4988-ace4-c632fbfc6e94/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/e78c68b5-5776-4988-ace4-c632fbfc6e94/w:/e78c68b5-5776-4988-ace4-c632fbfc6e94/w -w /e78c68b5-5776-4988-ace4-c632fbfc6e94/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:trixie bash /e78c68b5-5776-4988-ace4-c632fbfc6e94/s/script.sh
+ cargo --version
info: syncing channel updates for '1.80-x86_64-unknown-linux-gnu'
info: latest update on 2024-08-08, rust version 1.80.1 (3f5fd8dd4 2024-08-06)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-src'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-src'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'
cargo 1.80.1 (376290515 2024-07-16)
+ rustc --version
rustc 1.80.1 (3f5fd8dd4 2024-08-06)
+ cargo fmt --check
+ cargo clippy --all-targets --workspace -- --deny clippy::all
Updating crates.io index
Downloading crates ...
Downloaded adler v1.0.2
Downloaded aes-gcm v0.10.3
Downloaded amplify_syn v2.0.1
Downloaded anstyle v1.0.6
Downloaded anstream v0.6.13
Downloaded siphasher v1.0.1
Downloaded snapbox-macros v0.3.8
Downloaded crossbeam-utils v0.8.19
Downloaded cpufeatures v0.2.12
Downloaded snapbox v0.4.17
Downloaded gix-path v0.10.9
Downloaded getrandom v0.2.14
Downloaded gix-commitgraph v0.24.3
Downloaded walkdir v2.5.0
Downloaded gix-hashtable v0.5.2
Downloaded git-ref-format-core v0.3.0
Downloaded cbc v0.1.2
Downloaded ctr v0.9.2
Downloaded cypheraddr v0.4.0
Downloaded gix-diff v0.44.1
Downloaded elliptic-curve v0.13.8
Downloaded shlex v1.3.0
Downloaded tree-sitter-go v0.20.0
Downloaded xattr v1.3.1
Downloaded group v0.13.0
Downloaded idna v0.5.0
Downloaded lazy_static v1.4.0
Downloaded lexopt v0.3.0
Downloaded maybe-async v0.2.10
Downloaded gix-utils v0.1.12
Downloaded pbkdf2 v0.12.2
Downloaded normalize-line-endings v0.3.0
Downloaded indexmap v2.2.6
Downloaded percent-encoding v2.3.1
Downloaded scrypt v0.11.0
Downloaded salsa20 v0.10.2
Downloaded numtoa v0.1.0
Downloaded home v0.5.9
Downloaded rfc6979 v0.4.0
Downloaded num-iter v0.1.44
Downloaded tree-sitter-html v0.20.0
Downloaded diff v0.1.13
Downloaded netservices v0.8.0
Downloaded gix-sec v0.10.6
Downloaded num-conv v0.1.0
Downloaded radicle-git-ext v0.8.0
Downloaded pkg-config v0.3.30
Downloaded same-file v1.0.6
Downloaded num-integer v0.1.46
Downloaded io-reactor v0.5.2
Downloaded sha1_smol v1.0.0
Downloaded powerfmt v0.2.0
Downloaded once_cell v1.19.0
Downloaded pkcs1 v0.7.5
Downloaded tinyvec_macros v0.1.1
Downloaded opaque-debug v0.3.1
Downloaded qcheck-macros v1.0.0
Downloaded quote v1.0.36
Downloaded serde v1.0.198
Downloaded ppv-lite86 v0.2.17
Downloaded rand_chacha v0.3.1
Downloaded parking_lot_core v0.9.9
Downloaded rand_core v0.6.4
Downloaded qcheck v1.0.0
Downloaded typenum v1.17.0
Downloaded unicode-ident v1.0.12
Downloaded serde_json v1.0.116
Downloaded p256 v0.13.2
Downloaded regex v1.10.4
Downloaded rand v0.8.5
Downloaded rsa v0.9.6
Downloaded unicode-normalization v0.1.23
Downloaded regex-automata v0.4.6
Downloaded sha3 v0.10.8
Downloaded p384 v0.13.0
Downloaded tree-sitter-bash v0.20.5
Downloaded rustix v0.38.34
Downloaded tree-sitter-ruby v0.20.1
Downloaded libc v0.2.155
Downloaded vcpkg v0.2.15
Downloaded syn v2.0.60
Downloaded tree-sitter-typescript v0.20.5
Downloaded linux-raw-sys v0.4.13
Downloaded libgit2-sys v0.17.0+1.8.1
Downloaded syn v1.0.109
Downloaded tree-sitter-rust v0.20.4
Downloaded tree-sitter-md v0.1.7
Downloaded tree-sitter-c v0.20.8
Downloaded sqlite3-src v0.5.1
Downloaded winnow v0.6.8
Downloaded tree-sitter-python v0.20.4
Downloaded tree-sitter v0.20.10
Downloaded libm v0.2.8
Downloaded unicode-segmentation v1.11.0
Downloaded libz-sys v1.1.16
Downloaded time v0.3.36
Downloaded bstr v1.9.1
Downloaded bloomy v1.2.0
Downloaded pretty_assertions v1.4.0
Downloaded regex-syntax v0.8.3
Downloaded git2 v0.19.0
Downloaded chrono v0.4.38
Downloaded log v0.4.21
Downloaded unicode-bidi v0.3.15
Downloaded tar v0.4.40
Downloaded radicle-surf v0.22.0
Downloaded memchr v2.7.2
Downloaded p521 v0.13.3
Downloaded num-bigint-dig v0.8.4
Downloaded cyphernet v0.5.2
Downloaded tempfile v3.10.1
Downloaded sha2 v0.10.8
Downloaded primeorder v0.13.6
Downloaded gix-traverse v0.39.2
Downloaded tree-sitter-toml v0.20.0
Downloaded timeago v0.4.2
Downloaded termion v2.0.3
Downloaded ssh-cipher v0.2.0
Downloaded signature v1.6.4
Downloaded gix-pack v0.51.1
Downloaded num_threads v0.1.7
Downloaded num-traits v0.2.18
Downloaded proc-macro-error v1.0.4
Downloaded prodash v28.0.0
Downloaded ssh-encoding v0.2.0
Downloaded chacha20poly1305 v0.10.1
Downloaded base64 v0.21.7
Downloaded der v0.7.9
Downloaded crypto-bigint v0.5.5
Downloaded cc v1.0.95
Downloaded anyhow v1.0.82
Downloaded socks5-client v0.4.1
Downloaded serde_derive v1.0.198
Downloaded miniz_oxide v0.7.2
Downloaded memmap2 v0.9.4
Downloaded localtime v1.3.1
Downloaded gix-validate v0.8.5
Downloaded utf8parse v0.2.1
Downloaded base64 v0.13.1
Downloaded thiserror-impl v1.0.59
Downloaded subtle v2.5.0
Downloaded chacha20 v0.9.1
Downloaded arc-swap v1.7.1
Downloaded ryu v1.0.17
Downloaded proc-macro-error-attr v1.0.4
Downloaded keccak v0.1.5
Downloaded pkcs8 v0.10.2
Downloaded polyval v0.6.2
Downloaded parking_lot v0.12.1
Downloaded ascii v1.1.0
Downloaded radicle-std-ext v0.1.0
Downloaded popol v3.0.0
Downloaded iana-time-zone v0.1.60
Downloaded url v2.5.0
Downloaded sqlite3-sys v0.15.2
Downloaded time-macros v0.2.18
Downloaded gix-odb v0.61.1
Downloaded proc-macro2 v1.0.81
Downloaded poly1305 v0.8.0
Downloaded gix-trace v0.1.9
Downloaded universal-hash v0.5.1
Downloaded sec1 v0.7.3
Downloaded signature v2.2.0
Downloaded pem-rfc7468 v0.7.0
Downloaded newline-converter v0.3.0
Downloaded yansi v0.5.1
Downloaded tree-sitter-css v0.20.0
Downloaded thiserror v1.0.59
Downloaded ecdsa v0.16.9
Downloaded gix-packetline v0.17.5
Downloaded ff v0.13.0
Downloaded base64ct v1.6.0
Downloaded itoa v1.0.11
Downloaded gix-revwalk v0.13.2
Downloaded unicode-display-width v0.3.0
Downloaded lock_api v0.4.11
Downloaded unicode-width v0.1.11
Downloaded escargot v0.5.10
Downloaded cipher v0.4.4
Downloaded blowfish v0.9.1
Downloaded gix-features v0.38.2
Downloaded ct-codecs v1.1.1
Downloaded multibase v0.9.1
Downloaded inquire v0.7.5
Downloaded gix-tempfile v14.0.1
Downloaded scopeguard v1.2.0
Downloaded nonempty v0.5.0
Downloaded noise-framework v0.4.0
Downloaded nonempty v0.9.0
Downloaded version_check v0.9.4
Downloaded gix-date v0.8.7
Downloaded errno v0.3.8
Downloaded base16ct v0.2.0
Downloaded anstyle-query v1.0.2
Downloaded hmac v0.12.1
Downloaded gix-object v0.42.3
Downloaded ghash v0.5.1
Downloaded byteorder v1.5.0
Downloaded bcrypt-pbkdf v0.10.0
Downloaded ssh-key v0.6.6
Downloaded git-ref-format v0.3.0
Downloaded digest v0.10.7
Downloaded crypto-common v0.1.6
Downloaded base-x v0.2.11
Downloaded gix-command v0.3.6
Downloaded colorchoice v1.0.0
Downloaded jobserver v0.1.31
Downloaded inout v0.1.3
Downloaded hashbrown v0.14.3
Downloaded tree-sitter-json v0.20.2
Downloaded tree-sitter-highlight v0.20.1
Downloaded time-core v0.1.2
Downloaded sqlite v0.32.0
Downloaded spin v0.5.2
Downloaded gix-fs v0.11.2
Downloaded gix-actor v0.31.5
Downloaded fxhash v0.2.1
Downloaded cfg-if v1.0.0
Downloaded base32 v0.4.0
Downloaded autocfg v1.2.0
Downloaded gix-quote v0.4.12
Downloaded tinyvec v1.6.0
Downloaded socket2 v0.5.7
Downloaded fastrand v2.1.0
Downloaded gix-url v0.27.3
Downloaded gix-transport v0.42.0
Downloaded termion v3.0.0
Downloaded spki v0.7.3
Downloaded siphasher v0.3.11
Downloaded gix-hash v0.14.2
Downloaded ec25519 v0.1.0
Downloaded zeroize v1.7.0
Downloaded gix-prompt v0.8.4
Downloaded gix-config-value v0.14.6
Downloaded gix-chunk v0.4.8
Downloaded form_urlencoded v1.2.1
Downloaded dyn-clone v1.0.17
Downloaded data-encoding-macro-internal v0.1.12
Downloaded anstyle-parse v0.2.3
Downloaded block-padding v0.3.3
Downloaded gix-credentials v0.24.2
Downloaded equivalent v1.0.1
Downloaded either v1.11.0
Downloaded ed25519 v1.5.3
Downloaded deranged v0.3.11
Downloaded generic-array v0.14.7
Downloaded filetime v0.2.23
Downloaded data-encoding-macro v0.1.14
Downloaded crc32fast v1.4.0
Downloaded git-ref-format-macro v0.3.0
Downloaded flate2 v1.0.28
Downloaded faster-hex v0.9.0
Downloaded data-encoding v2.5.0
Downloaded smallvec v1.13.2
Downloaded similar v2.5.0
Downloaded gix-protocol v0.45.0
Downloaded const-oid v0.9.6
Downloaded colored v2.1.0
Downloaded block-buffer v0.10.4
Downloaded bitflags v2.5.0
Downloaded shell-words v1.1.0
Downloaded crossbeam-channel v0.5.13
Downloaded aho-corasick v1.1.3
Downloaded cyphergraphy v0.3.0
Downloaded aes v0.8.4
Downloaded aead v0.5.2
Downloaded amplify v4.6.0
Downloaded amplify_num v0.5.2
Downloaded amplify_derive v4.0.0
Compiling libc v0.2.155
Compiling proc-macro2 v1.0.81
Compiling unicode-ident v1.0.12
Checking cfg-if v1.0.0
Compiling once_cell v1.19.0
Compiling version_check v0.9.4
Checking memchr v2.7.2
Checking aho-corasick v1.1.3
Compiling quote v1.0.36
Compiling syn v2.0.60
Checking regex-syntax v0.8.3
Compiling jobserver v0.1.31
Compiling cc v1.0.95
Compiling thiserror v1.0.59
Compiling typenum v1.17.0
Checking regex-automata v0.4.6
Checking getrandom v0.2.14
Compiling generic-array v0.14.7
Checking rand_core v0.6.4
Checking tinyvec_macros v0.1.1
Checking tinyvec v1.6.0
Checking crypto-common v0.1.6
Checking fastrand v2.1.0
Checking unicode-normalization v0.1.23
Checking subtle v2.5.0
Compiling syn v1.0.109
Checking zeroize v1.7.0
Checking cpufeatures v0.2.12
Checking bitflags v2.5.0
Checking block-padding v0.3.3
Checking bstr v1.9.1
Checking inout v0.1.3
Checking block-buffer v0.10.4
Compiling pkg-config v0.3.30
Compiling thiserror-impl v1.0.59
Checking digest v0.10.7
Checking cipher v0.4.4
Compiling autocfg v1.2.0
Compiling crc32fast v1.4.0
Checking sha2 v0.10.8
Checking unicode-bidi v0.3.15
Checking percent-encoding v2.3.1
Checking idna v0.5.0
Checking form_urlencoded v1.2.1
Checking universal-hash v0.5.1
Checking opaque-debug v0.3.1
Compiling vcpkg v0.2.15
Compiling serde v1.0.198
Compiling amplify_syn v2.0.1
Checking url v2.5.0
Compiling libz-sys v1.1.16
Compiling serde_derive v1.0.198
Checking byteorder v1.5.0
Compiling data-encoding v2.5.0
Compiling rustix v0.38.34
Checking itoa v1.0.11
Checking signature v1.6.4
Checking linux-raw-sys v0.4.13
Compiling amplify_derive v4.0.0
Compiling data-encoding-macro-internal v0.1.12
Checking ascii v1.1.0
Checking amplify_num v0.5.2
Checking log v0.4.21
Checking data-encoding-macro v0.1.14
Checking ed25519 v1.5.3
Compiling libgit2-sys v0.17.0+1.8.1
Checking aead v0.5.2
Compiling proc-macro-error-attr v1.0.4
Checking base-x v0.2.11
Checking amplify v4.6.0
Checking ct-codecs v1.1.1
Checking ec25519 v0.1.0
Checking multibase v0.9.1
Checking poly1305 v0.8.0
Checking chacha20 v0.9.1
Compiling proc-macro-error v1.0.4
Checking cyphergraphy v0.3.0
Checking keccak v0.1.5
Checking sha3 v0.10.8
Compiling git-ref-format-core v0.3.0
Checking polyval v0.6.2
Checking hmac v0.12.1
Compiling sqlite3-src v0.5.1
Checking ppv-lite86 v0.2.17
Checking base32 v0.4.0
Checking base64ct v1.6.0
Checking hashbrown v0.14.3
Checking rand_chacha v0.3.1
Checking pem-rfc7468 v0.7.0
Checking cypheraddr v0.4.0
Compiling git-ref-format-macro v0.3.0
Checking pbkdf2 v0.12.2
Checking ghash v0.5.1
Checking chacha20poly1305 v0.10.1
Checking tempfile v3.10.1
Checking ctr v0.9.2
Checking aes v0.8.4
Compiling crossbeam-utils v0.8.19
Checking aes-gcm v0.10.3
Checking git-ref-format v0.3.0
Checking noise-framework v0.4.0
Checking socks5-client v0.4.1
Checking rand v0.8.5
Checking ssh-encoding v0.2.0
Checking blowfish v0.9.1
Checking cbc v0.1.2
Checking radicle-std-ext v0.1.0
Checking ssh-cipher v0.2.0
Checking bcrypt-pbkdf v0.10.0
Checking cyphernet v0.5.2
Checking signature v2.2.0
Checking ssh-key v0.6.6
Checking crossbeam-channel v0.5.13
Checking qcheck v1.0.0
Checking radicle-ssh v0.9.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-ssh)
Compiling num-traits v0.2.18
Compiling tree-sitter v0.20.10
Checking equivalent v1.0.1
Compiling serde_json v1.0.116
Checking indexmap v2.2.6
Checking regex v1.10.4
Checking ryu v1.0.17
Checking nonempty v0.9.0
Checking radicle-dag v0.9.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-dag)
Compiling anyhow v1.0.82
Checking lazy_static v1.4.0
Checking anstyle-query v1.0.2
Checking iana-time-zone v0.1.60
Checking colored v2.1.0
Checking chrono v0.4.38
Checking localtime v1.3.1
Checking base64 v0.21.7
Checking siphasher v1.0.1
Checking utf8parse v0.2.1
Checking anstyle-parse v0.2.3
Checking colorchoice v1.0.0
Checking anstyle v1.0.6
Checking normalize-line-endings v0.3.0
Checking anstream v0.6.13
Checking similar v2.5.0
Checking snapbox-macros v0.3.8
Checking snapbox v0.4.17
Checking radicle-signals v0.10.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-signals)
Checking gix-trace v0.1.9
Checking diff v0.1.13
Checking numtoa v0.1.0
Checking unicode-segmentation v1.11.0
Checking yansi v0.5.1
Compiling adler v1.0.2
Compiling miniz_oxide v0.7.2
Checking pretty_assertions v1.4.0
Compiling filetime v0.2.23
Compiling xattr v1.3.1
Checking shlex v1.3.0
Checking lexopt v0.3.0
Compiling escargot v0.5.10
Compiling tar v0.4.40
Compiling flate2 v1.0.28
Checking newline-converter v0.3.0
Checking termion v2.0.3
Checking fxhash v0.2.1
Checking faster-hex v0.9.0
Checking unicode-width v0.1.11
Checking dyn-clone v1.0.17
Compiling radicle-surf v0.22.0
Checking inquire v0.7.5
Checking unicode-display-width v0.3.0
Checking termion v3.0.0
Checking gix-utils v0.1.12
Compiling tree-sitter-typescript v0.20.5
Compiling tree-sitter-html v0.20.0
Compiling tree-sitter-ruby v0.20.1
Compiling tree-sitter-md v0.1.7
Compiling tree-sitter-bash v0.20.5
Compiling tree-sitter-rust v0.20.4
Compiling tree-sitter-c v0.20.8
Compiling tree-sitter-css v0.20.0
Compiling tree-sitter-json v0.20.2
Compiling tree-sitter-python v0.20.4
Compiling tree-sitter-go v0.20.0
Compiling tree-sitter-toml v0.20.0
Checking gix-hash v0.14.2
Checking same-file v1.0.6
Checking sqlite3-sys v0.15.2
Checking nonempty v0.5.0
Checking sqlite v0.32.0
Checking base64 v0.13.1
Compiling radicle-cli v0.11.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-cli)
Checking walkdir v2.5.0
Checking tree-sitter-highlight v0.20.1
Checking timeago v0.4.2
Checking sha1_smol v1.0.0
Checking prodash v28.0.0
Checking smallvec v1.13.2
Compiling lock_api v0.4.11
Checking gix-features v0.38.2
Compiling parking_lot_core v0.9.9
Compiling time-core v0.1.2
Checking powerfmt v0.2.0
Compiling num-conv v0.1.0
Checking scopeguard v1.2.0
Compiling time-macros v0.2.18
Checking deranged v0.3.11
Checking home v0.5.9
Checking num_threads v0.1.7
Checking parking_lot v0.12.1
Checking gix-path v0.10.9
Checking winnow v0.6.8
Checking gix-validate v0.8.5
Checking gix-chunk v0.4.8
Checking memmap2 v0.9.4
Checking time v0.3.36
Checking shell-words v1.1.0
Checking gix-command v0.3.6
Checking gix-commitgraph v0.24.3
Checking gix-hashtable v0.5.2
Checking gix-url v0.27.3
Checking gix-config-value v0.14.6
Checking gix-fs v0.11.2
Checking gix-date v0.8.7
Checking gix-quote v0.4.12
Checking gix-sec v0.10.6
Checking gix-tempfile v14.0.1
Checking gix-actor v0.31.5
Checking gix-prompt v0.8.4
Checking gix-object v0.42.3
Checking gix-packetline v0.17.5
Checking gix-credentials v0.24.2
Compiling maybe-async v0.2.10
Checking gix-transport v0.42.0
Checking arc-swap v1.7.1
Checking popol v3.0.0
Checking gix-revwalk v0.13.2
Checking gix-diff v0.44.1
Checking either v1.11.0
Checking gix-traverse v0.39.2
Checking io-reactor v0.5.2
Checking gix-pack v0.51.1
Checking salsa20 v0.10.2
Checking gix-protocol v0.45.0
Checking socket2 v0.5.7
Compiling radicle-node v0.10.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-node)
Checking siphasher v0.3.11
Checking bloomy v1.2.0
Checking netservices v0.8.0
Checking scrypt v0.11.0
Checking radicle-systemd v0.9.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-systemd)
Compiling qcheck-macros v1.0.0
Compiling radicle-remote-helper v0.10.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-remote-helper)
Checking gix-odb v0.61.1
Checking git2 v0.19.0
Checking radicle-git-ext v0.8.0
Checking radicle-term v0.11.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-term)
Checking radicle-crypto v0.11.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-crypto)
Checking radicle-cob v0.12.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-cob)
Checking radicle-crdt v0.1.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-crdt)
Checking radicle v0.13.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle)
Checking radicle-cli-test v0.10.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-cli-test)
Checking radicle-fetch v0.10.0 (/e78c68b5-5776-4988-ace4-c632fbfc6e94/w/radicle-fetch)
error: all variants have the same prefix: `File`
--> radicle-cli/src/commands/patch/review/builder.rs:140:1
|
140 | / pub enum ReviewItem {
141 | | FileAdded {
142 | | path: PathBuf,
143 | | header: FileHeader,
... |
178 | | },
179 | | }
| |_^
|
= help: remove the prefixes and use full paths to the variants instead of glob imports
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names
= note: `-D clippy::enum-variant-names` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::enum_variant_names)]`
error: very complex type used. Consider factoring parts into `type` definitions
--> radicle-cli/src/commands/patch/review/builder.rs:195:24
|
195 | fn paths(&self) -> (Option<(&Path, Oid)>, Option<(&Path, Oid)>) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity
= note: `-D clippy::type-complexity` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::type_complexity)]`
error: could not compile `radicle-cli` (lib) due to 2 previous errors
warning: build failed, waiting for other jobs to finish...
error: could not compile `radicle-cli` (lib test) due to 2 previous errors
Exit code: 101
{
"response": "finished",
"result": "failure"
}