Radish alpha
h
rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
Radicle Heartwood Protocol & Stack
Radicle
Git
cli: do not require RID for sync inventory
Merged fintohaps opened 2 years ago

The inventory operation of the rad sync command does not require an RID. Localise resolving the RID in the match arms that require it.

Signed-off-by: Fintan Halpenny fintan.halpenny@gmail.com X-Clacks-Overhead: GNU Terry Pratchett

1 file changed +17 -10 057af40e ea31040e
modified radicle-cli/src/commands/sync.rs
@@ -298,15 +298,6 @@ impl Args for Options {

pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
    let profile = ctx.profile()?;
-
    let rid = match options.rid {
-
        Some(rid) => rid,
-
        None => {
-
            let (_, rid) =
-
                radicle::rad::cwd().context("Current directory is not a Radicle repository")?;
-

-
            rid
-
        }
-
    };
    let mut node = radicle::Node::new(profile.socket());
    if !node.is_running() {
        anyhow::bail!(
@@ -316,13 +307,29 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {

    match options.op {
        Operation::Status => {
+
            let rid = match options.rid {
+
                Some(rid) => rid,
+
                None => {
+
                    let (_, rid) = radicle::rad::cwd()
+
                        .context("Current directory is not a Radicle repository")?;
+
                    rid
+
                }
+
            };
            sync_status(rid, &mut node, &profile, &options)?;
        }
        Operation::Synchronize(SyncMode::Repo {
            settings,
            direction,
        }) => {
-
            let settings = settings.with_profile(&profile);
+
            let rid = match options.rid {
+
                Some(rid) => rid,
+
                None => {
+
                    let (_, rid) = radicle::rad::cwd()
+
                        .context("Current directory is not a Radicle repository")?;
+
                    rid
+
                }
+
            };
+
            let settings = settings.clone().with_profile(&profile);

            if [SyncDirection::Fetch, SyncDirection::Both].contains(&direction) {
                if !profile.policies()?.is_seeding(&rid)? {