cli: Get fetch after track working

When tracking a repository with the `--fetch` option, we run a fetch
once the tracking is done.

When tracking nodes, we don't accept the `--fetch` flag, as there may
not be a repository to fetch.
This commit is contained in:
Alexis Sellier 2023-04-25 17:30:02 +02:00
parent 8d1bf9e997
commit 7a08a1d459
No known key found for this signature in database
5 changed files with 21 additions and 17 deletions

View File

@ -9,13 +9,13 @@ storage. In this scenario, we know that the project is
have to track the project. have to track the project.
``` ```
$ rad track rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji $ rad track rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji --no-fetch
✓ Tracking policy updated for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with scope 'trusted' ✓ Tracking policy updated for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with scope 'trusted'
! Warning: fetch after track is not yet supported
``` ```
Now that the project is tracked we can fetch it and we will have it in Now that the project is tracked we can fetch it and we will have it in
our local storage. our local storage. Note that the `track` command can also be told to fetch
by passing the `--fetch` option.
``` ```
$ rad sync --fetch rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji $ rad sync --fetch rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji

View File

@ -35,7 +35,7 @@ those commands we'll first track a peer so that we have something to
see. see.
``` ```
$ rad track did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk --alias Bob --no-fetch $ rad track did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk --alias Bob
✓ Tracking policy updated for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (Bob) ✓ Tracking policy updated for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (Bob)
``` ```

View File

@ -2,7 +2,7 @@ To configure our node's tracking policy, we can use the `rad track` command.
For example, let's track a remote node we know about, and alias it to "eve": For example, let's track a remote node we know about, and alias it to "eve":
``` ```
$ rad track did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk --alias eve --no-fetch $ rad track did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk --alias eve
✓ Tracking policy updated for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (eve) ✓ Tracking policy updated for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (eve)
``` ```

View File

@ -5,7 +5,6 @@ Changes have been proposed by another person (or peer) via a radicle patch. To
``` ```
$ rad track did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk --alias bob $ rad track did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk --alias bob
✓ Tracking policy updated for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (bob) ✓ Tracking policy updated for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (bob)
! Warning: fetch after track is not yet supported
$ rad sync --fetch $ rad sync --fetch
✓ Fetching rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from z6Mkt67…v4N1tRk.. ✓ Fetching rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from z6Mkt67…v4N1tRk..
✓ Fetched repository from 1 seed(s) ✓ Fetched repository from 1 seed(s)
@ -15,7 +14,8 @@ Additionally, we need to add a new 'git remote' to our working copy for the
peer. Upcoming versions of radicle will not require this step. peer. Upcoming versions of radicle will not require this step.
``` ```
$ git remote add bob rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk $ rad remote add z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk --name bob
✓ Remote bob added with rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
$ git fetch bob $ git fetch bob
``` ```

View File

@ -6,6 +6,7 @@ use radicle::node::tracking::{Alias, Scope};
use radicle::node::{Handle, NodeId}; use radicle::node::{Handle, NodeId};
use radicle::{prelude::*, Node}; use radicle::{prelude::*, Node};
use crate::commands::rad_sync as sync;
use crate::terminal as term; use crate::terminal as term;
use crate::terminal::args::{Args, Error, Help}; use crate::terminal::args::{Args, Error, Help};
@ -16,7 +17,7 @@ pub const HELP: Help = Help {
usage: r#" usage: r#"
Usage Usage
rad track <nid> [--[no-]fetch] [--alias <name>] [<option>...] rad track <nid> [--alias <name>] [<option>...]
rad track <rid> [--[no-]fetch] [--scope <scope>] [<option>...] rad track <rid> [--[no-]fetch] [--scope <scope>] [<option>...]
The `track` command takes either an NID or an RID. Based on the argument, it will The `track` command takes either an NID or an RID. Based on the argument, it will
@ -30,7 +31,7 @@ Usage
Options Options
--alias <name> Associate an alias to a tracked node --alias <name> Associate an alias to a tracked node
--fetch Fetch refs after tracking --[no-]fetch Fetch refs after tracking
--scope <scope> Node (remote) tracking scope for a repository --scope <scope> Node (remote) tracking scope for a repository
--verbose, -v Verbose output --verbose, -v Verbose output
--help Print help --help Print help
@ -94,7 +95,8 @@ impl Args for Options {
.ok_or_else(|| anyhow!("scope specified is not UTF-8"))? .ok_or_else(|| anyhow!("scope specified is not UTF-8"))?
.parse()?; .parse()?;
} }
(Long("no-fetch"), _) => fetch = false, (Long("fetch"), Some(Operation::TrackRepo { .. })) => fetch = true,
(Long("no-fetch"), Some(Operation::TrackRepo { .. })) => fetch = false,
(Long("verbose") | Short('v'), _) => verbose = true, (Long("verbose") | Short('v'), _) => verbose = true,
(Long("help"), _) => { (Long("help"), _) => {
return Err(Error::Help.into()); return Err(Error::Help.into());
@ -121,15 +123,17 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
let mut node = radicle::Node::new(profile.socket()); let mut node = radicle::Node::new(profile.socket());
match options.op { match options.op {
Operation::TrackNode { nid, alias } => track_node(nid, alias, &mut node), Operation::TrackNode { nid, alias } => {
Operation::TrackRepo { rid, scope } => track_repo(rid, scope, &mut node), track_node(nid, alias, &mut node)?;
}?; }
Operation::TrackRepo { rid, scope } => {
track_repo(rid, scope, &mut node)?;
if options.fetch { if options.fetch {
// TODO: Run a proper fetch here. sync::fetch(rid, profile, &mut node, None)?;
term::warning("fetch after track is not yet supported"); }
}
} }
Ok(()) Ok(())
} }