Radish alpha
h
rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
Radicle Heartwood Protocol & Stack
Radicle
Git
CLI: Fix `issue` command asking for passphrase on readonly operations
Merged did:key:z6MktMPA...oRBR opened 2 years ago

Add test for rad issue readonly operations

Only require signer when doing a write operation

1 file changed +9 -1 50833d88 13d5b4f6
modified radicle-cli/src/commands/issue.rs
@@ -411,7 +411,6 @@ impl Args for Options {

pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
    let profile = ctx.profile()?;
-
    let signer = term::signer(&profile)?;
    let (_, rid) = radicle::rad::cwd()?;
    let repo = profile.storage.repository_mut(rid)?;
    let announce = options.announce
@@ -433,6 +432,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
            title,
            description,
        } => {
+
            let signer = term::signer(&profile)?;
            let issue = edit(&mut issues, &repo, id, title, description, &signer)?;
            if !options.quiet {
                term::issue::show(&issue, issue.id(), Format::Header, &profile)?;
@@ -444,6 +444,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
            labels,
            assignees,
        } => {
+
            let signer = term::signer(&profile)?;
            let issue = issues.create(title, description, &labels, &assignees, [], &signer)?;
            if !options.quiet {
                term::issue::show(&issue, issue.id(), Format::Header, &profile)?;
@@ -454,6 +455,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
            message,
            reply_to,
        } => {
+
            let signer = term::signer(&profile)?;
            let issue_id = id.resolve::<cob::ObjectId>(&repo.backend)?;
            let mut issue = issues.get_mut(&issue_id)?;
            let (body, reply_to) = prompt_comment(message, reply_to, &issue, &repo)?;
@@ -478,6 +480,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
            }
        }
        Operation::State { id, state } => {
+
            let signer = term::signer(&profile)?;
            let id = id.resolve(&repo.backend)?;
            let mut issue = issues.get_mut(&id)?;
            issue.lifecycle(state, &signer)?;
@@ -489,6 +492,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
        } => {
            let id = id.resolve(&repo.backend)?;
            if let Ok(mut issue) = issues.get_mut(&id) {
+
                let signer = term::signer(&profile)?;
                let comment_id = comment_id.unwrap_or_else(|| {
                    let (comment_id, _) = term::io::comment_select(&issue).unwrap();
                    *comment_id
@@ -502,6 +506,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
            ref labels,
            ref assignees,
        } => {
+
            let signer = term::signer(&profile)?;
            open(
                title.clone(),
                description.clone(),
@@ -517,6 +522,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
            id,
            opts: AssignOptions { add, delete },
        } => {
+
            let signer = term::signer(&profile)?;
            let id = id.resolve(&repo.backend)?;
            let Ok(mut issue) = issues.get_mut(&id) else {
                anyhow::bail!("Issue `{id}` not found");
@@ -533,6 +539,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
            id,
            opts: LabelOptions { add, delete },
        } => {
+
            let signer = term::signer(&profile)?;
            let id = id.resolve(&repo.backend)?;
            let Ok(mut issue) = issues.get_mut(&id) else {
                anyhow::bail!("Issue `{id}` not found");
@@ -549,6 +556,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
            list(&issues, &assigned, &state, &profile)?;
        }
        Operation::Delete { id } => {
+
            let signer = term::signer(&profile)?;
            let id = id.resolve(&repo.backend)?;
            issues.remove(&id, &signer)?;
        }