Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
cli: Implement `patch delete`
Alexis Sellier committed 3 years ago
commit cb3b7a3765680a1a940cca530443526816849493
parent e972cda2c473cb430b30f70d6223ea90037c2bba
2 files changed +27 -0
modified radicle-cli/src/commands/patch.rs
@@ -4,6 +4,8 @@ mod checkout;
mod common;
#[path = "patch/create.rs"]
mod create;
+
#[path = "patch/delete.rs"]
+
mod delete;
#[path = "patch/list.rs"]
mod list;
#[path = "patch/show.rs"]
@@ -36,6 +38,7 @@ Usage
    rad patch open [<option>...]
    rad patch update <id> [<option>...]
    rad patch checkout <id>
+
    rad patch delete <id>

Create/Update options

@@ -56,6 +59,7 @@ pub enum OperationName {
    Open,
    Show,
    Update,
+
    Delete,
    Checkout,
    #[default]
    List,
@@ -73,6 +77,9 @@ pub enum Operation {
        patch_id: Option<PatchId>,
        message: Message,
    },
+
    Delete {
+
        patch_id: PatchId,
+
    },
    Checkout {
        patch_id: PatchId,
    },
@@ -154,6 +161,7 @@ impl Args for Options {
                    "o" | "open" => op = Some(OperationName::Open),
                    "s" | "show" => op = Some(OperationName::Show),
                    "u" | "update" => op = Some(OperationName::Update),
+
                    "d" | "delete" => op = Some(OperationName::Delete),
                    "c" | "checkout" => op = Some(OperationName::Checkout),
                    unknown => anyhow::bail!("unknown operation '{}'", unknown),
                },
@@ -176,6 +184,9 @@ impl Args for Options {
            OperationName::Show => Operation::Show {
                patch_id: patch_id.ok_or_else(|| anyhow!("a patch id must be provided"))?,
            },
+
            OperationName::Delete => Operation::Delete {
+
                patch_id: patch_id.ok_or_else(|| anyhow!("a patch id must be provided"))?,
+
            },
            OperationName::Update => Operation::Update { patch_id, message },
            OperationName::Checkout => Operation::Checkout {
                patch_id: patch_id.ok_or_else(|| anyhow!("a patch id must be provided"))?,
@@ -230,6 +241,9 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
                &options,
            )?;
        }
+
        Operation::Delete { patch_id } => {
+
            delete::run(&repository, &profile, &patch_id)?;
+
        }
        Operation::Checkout { ref patch_id } => {
            checkout::run(&repository, &workdir, patch_id)?;
        }
added radicle-cli/src/commands/patch/delete.rs
@@ -0,0 +1,13 @@
+
use super::*;
+

+
use radicle::cob::patch;
+
use radicle::prelude::*;
+
use radicle::storage::git::Repository;
+

+
pub fn run(repository: &Repository, profile: &Profile, patch_id: &PatchId) -> anyhow::Result<()> {
+
    let signer = &term::signer(profile)?;
+
    let patches = patch::Patches::open(repository)?;
+
    patches.remove(patch_id, signer)?;
+

+
    Ok(())
+
}