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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
use {
crate::{
app_context::AppContext,
},
minimad::{
Text,
TextTemplate,
},
};
static MD: &str = r#"
# broot ${version}
**broot** lets you explore directory trees and launch commands.
It's best used when launched as **br**.
See **https://dystroy.org/broot** for a complete guide.
The *esc* key gets you back to the previous state.
Typing some letters searches the tree and selects the most relevant file.
To use a regular expression, use a slash at start or end eg `/j(ava|s)$`.
The *↑* and *↓* arrow keys can be used to change selection.
The mouse can be used to select (on click) or open (on double-click).
## Verbs
To execute a verb, type a space or `:` then start of its name or shortcut.
|:-:|:-:|:-:|:-:
|**name**|**shortcut**|**key**|**description**
|-:|:-:|:-:|:-
${verb-rows
|${name}|${shortcut}|${key}|${description}`${execution}`
}
|-:
## Configuration
Verbs and skin can be configured in **${config-path}**.
## Launch Arguments
Some options can be set on launch:
* `-h` or `--hidden` : show hidden files
* `-f` or `--only-folders` : only show folders
* `-s` or `--sizes` : display sizes
* `-d` or `--dates` : display last modified dates
(for the complete list, run `broot --help`)
## Flags
Flags are displayed at bottom right:
* `h:y` or `h:n` : whether hidden files are shown
* `gi:a`, `gi:y`, `gi:n` : whether gitignore is on `auto`, `yes` or `no`
When gitignore is auto, .gitignore rules are respected if the displayed root is a git repository or in one.
"#;
pub fn build_text(con: &AppContext) -> Text<'_> {
lazy_static! {
static ref TEMPLATE: TextTemplate<'static> = TextTemplate::from(MD);
}
let mut expander = TEMPLATE.expander();
expander
.set("version", env!("CARGO_PKG_VERSION"))
.set("config-path", &con.config_path);
for verb in &con.verb_store.verbs {
let sub = expander
.sub("verb-rows")
.set("name", &verb.invocation.name)
.set(
"shortcut",
if let Some(sk) = &verb.shortcut { &sk } else { "" },
)
.set("key", &verb.key_desc);
if let Some(description) = &verb.description {
sub.set_md("description", &description);
sub.set("execution", "");
} else {
sub.set("description", "");
sub.set("execution", &verb.execution);
}
}
expander.expand()
}