cli: Add `-v` flag to `rad patch show`

With this flag, additional data such as the patch base is shown.
This commit is contained in:
Alexis Sellier 2023-06-13 11:47:54 +02:00
parent 48f44f4af5
commit a6782ac2d6
No known key found for this signature in database
3 changed files with 20 additions and 4 deletions

View File

@ -55,12 +55,13 @@ $ rad patch list
When showing the patch, we see that it is `ahead 1, behind 1`, since master has
diverged by one commit:
```
$ rad patch show -p 866f59c
$ rad patch show -v -p 866f59c
╭────────────────────────────────────────────────────────────────────╮
│ Title Add Alan │
│ Patch 866f59c001cd4d78a151f444b34265566c83c264 │
│ Author did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi │
│ Head 5c88a79d75f5c2b4cc51ee6f163d2db91ee198d7 │
│ Base f64fb2c8fe28f7c458c72ec8d700373924794943 │
│ Branches feature/1 │
│ Commits ahead 1, behind 1 │
│ Status open │
@ -100,12 +101,13 @@ To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkE
When we look at the patch, we see that it has both commits, because this new
patch uses the same base as the previous patch:
```
$ rad patch show 57cb9b2758518e547de324456ac967fda456c6c1
$ rad patch show -v 57cb9b2758518e547de324456ac967fda456c6c1
╭────────────────────────────────────────────────────────────────────╮
│ Title Add Mel │
│ Patch 57cb9b2758518e547de324456ac967fda456c6c1 │
│ Author did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi │
│ Head 7f63fcbcf23fc39eea784c091ad3d20d7e4bd005 │
│ Base f64fb2c8fe28f7c458c72ec8d700373924794943 │
│ Branches feature/2 │
│ Commits ahead 2, behind 1 │
│ Status open │

View File

@ -55,6 +55,7 @@ Usage
Show options
-p, --patch Show the actual patch diff
-v, --verbose Show additional information about the patch
Edit options
@ -126,6 +127,7 @@ pub enum Operation {
Show {
patch_id: Rev,
diff: bool,
verbose: bool,
},
Update {
patch_id: Option<Rev>,
@ -296,6 +298,7 @@ impl Args for Options {
OperationName::List => Operation::List { filter },
OperationName::Show => Operation::Show {
patch_id: patch_id.ok_or_else(|| anyhow!("a patch must be provided"))?,
verbose,
diff,
},
OperationName::Delete => Operation::Delete {
@ -355,9 +358,13 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
Operation::List { filter: Filter(f) } => {
list::run(f, &repository, &profile)?;
}
Operation::Show { patch_id, diff } => {
Operation::Show {
patch_id,
diff,
verbose,
} => {
let patch_id = patch_id.resolve(&repository.backend)?;
show::run(&patch_id, diff, &profile, &repository, &workdir)?;
show::run(&patch_id, diff, verbose, &profile, &repository, &workdir)?;
}
Operation::Update {
ref patch_id,

View File

@ -54,6 +54,7 @@ fn patch_commits(patch: &patch::Patch, stored: &Repository) -> anyhow::Result<Ve
pub fn run(
patch_id: &PatchId,
diff: bool,
verbose: bool,
profile: &Profile,
stored: &Repository,
// TODO: Should be optional.
@ -92,6 +93,12 @@ pub fn run(
term::format::tertiary("Head".to_owned()).into(),
term::format::secondary(revision.head().to_string()).into(),
]);
if verbose {
attrs.push([
term::format::tertiary("Base".to_owned()).into(),
term::format::secondary(revision.base().to_string()).into(),
]);
}
if !branches.is_empty() {
attrs.push([
term::format::tertiary("Branches".to_owned()).into(),