1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
use std::path::PathBuf;
use clap::{Parser, Subcommand};
#[derive(Default, Debug, Parser)]
#[command(name = "gitu")]
#[command(flatten_help = true)]
pub struct Args {
#[command(subcommand)]
pub command: Option<Commands>,
/// Send keys on startup (eg: `gitu -k ll`).
/// It is possible to send:
/// - single char-keys: a, b, c, ...
/// - special keys: <backspace>, <enter>, <up>, <tab>, <delete>, <esc>, ...
/// - modifiers: <ctrl+a>, <ctrl+shift+alt+a>, <shift+delete>
#[clap(short, long, verbatim_doc_comment)]
pub keys: Option<String>,
/// Print one frame and exit. Useful for debugging.
#[clap(long, action)]
pub print: bool,
/// Read a patch on stdin and browse it, for use as git's pager:
/// GIT_PAGER='gitu --pager' git show
#[clap(long, action, verbatim_doc_comment)]
pub pager: bool,
/// With --pager, print what fits on one screen and exit, as less's --quit-if-one-screen.
#[clap(long, action, requires = "pager")]
pub quit_if_one_screen: bool,
/// Enable logging to 'gitu.log'
#[clap(long, action)]
pub log: bool,
/// Show external command output in the message area.
#[clap(long, action)]
pub debug: bool,
#[clap(long, action)]
/// Print version
pub version: bool,
/// Config file to use
#[clap(short, long)]
pub config: Option<PathBuf>,
}
#[derive(Debug, Subcommand)]
pub enum Commands {
Show {
reference: String,
},
/// Interactively rebase onto <upstream>, editing the instruction list in Gitu.
Rebase {
upstream: String,
},
/// Edit a `git rebase -i` instruction list, for use as GIT_SEQUENCE_EDITOR:
/// GIT_SEQUENCE_EDITOR='gitu sequence-editor' git rebase -i <upstream>
#[clap(verbatim_doc_comment)]
SequenceEditor {
file: PathBuf,
},
Blame {
file: String,
#[clap(short, long)]
rev: Option<String>,
},
}