Skip to main content

logbrew_cli/
help.rs

1//! CLI help text kept separate from command parsing.
2
3use crate::HelpTopic;
4
5/// Returns user-facing help for a topic.
6#[must_use]
7pub const fn help_text(topic: HelpTopic) -> &'static str {
8    match topic {
9        HelpTopic::Root => ROOT_HELP,
10        HelpTopic::Login => LOGIN_HELP,
11        HelpTopic::Logout => LOGOUT_HELP,
12        HelpTopic::Setup => SETUP_HELP,
13        HelpTopic::Status => STATUS_HELP,
14        HelpTopic::Version => VERSION_HELP,
15        HelpTopic::Auth => AUTH_HELP,
16        HelpTopic::Json => JSON_HELP,
17        HelpTopic::Read => READ_HELP,
18        HelpTopic::ReadLogs => READ_LOGS_HELP,
19        HelpTopic::ReadIssues => READ_ISSUES_HELP,
20        HelpTopic::ReadActions => READ_ACTIONS_HELP,
21        HelpTopic::ReadReleases => READ_RELEASES_HELP,
22        HelpTopic::ReadTrace => READ_TRACE_HELP,
23        HelpTopic::ReadIssue => READ_ISSUE_HELP,
24        HelpTopic::Watch => WATCH_HELP,
25        HelpTopic::Explain => EXPLAIN_HELP,
26        HelpTopic::Set => SET_HELP,
27    }
28}
29
30/// Root command help text.
31const ROOT_HELP: &str = "\
32LogBrew CLI
33
34Usage:
35  logbrew login [--no-open] [--json]
36  logbrew logout [--json]
37  logbrew setup [--auto] [--yes] [--json]
38  logbrew status [--json]
39  logbrew health [--json]
40  logbrew doctor [--json]
41  logbrew whoami [--json]
42  logbrew me [--json]
43  logbrew version [--json]
44  logbrew read logs [--severity error] [--search checkout] [--release <release>] [--environment \
45                         production] [--since 24h] [--json]
46  logbrew logs checkout failed [--severity error] [--release <release>] [--environment \
47                         production] [--json]
48  logbrew logs error checkout failed [--release <release>] [--environment production] [--json]
49  logbrew search checkout [--release <release>] [--environment production] [--json]
50  logbrew find checkout [--release <release>] [--environment production] [--json]
51  logbrew grep checkout [--release <release>] [--environment production] [--json]
52  logbrew show logs [--release <release>] [--environment production] [--json]
53  logbrew latest logs [--limit 20] [--json]
54  logbrew last 10 logs [--json]
55  logbrew last 5 open issues [--json]
56  logbrew list issues [--status unresolved] [--json]
57  logbrew issues open [--release <release>] [--environment production] [--json]
58  logbrew issue open [--release <release>] [--environment production] [--json]
59  logbrew open issues [--release <release>] [--environment production] [--json]
60  logbrew open issue [--release <release>] [--environment production] [--json]
61  logbrew errors closed [--release <release>] [--environment production] [--json]
62  logbrew get issue <issue_id> [--json]
63  logbrew read issues [--release <release>] [--environment production] [--status unresolved] \
64                         [--json]
65  logbrew read actions [--release <release>] [--environment production] [--name checkout_failed] \
66                         [--json]
67  logbrew events checkout_failed [--release <release>] [--environment production] [--json]
68  logbrew read releases [--environment production] [--json]
69  logbrew read trace <trace_id> [--release <release>] [--environment production] [--json]
70  logbrew trace <trace_id> [--release <release>] [--environment production] [--json]
71  logbrew issue <issue_id> [--json]
72  logbrew issue <issue_id> explain [--json]
73  logbrew trace <trace_id> explain [--json]
74  logbrew explain issue <issue_id> [--json]
75  logbrew explain trace <trace_id> [--json]
76  logbrew explain <issue_id_or_trace_id> [--json]
77  logbrew <issue_id_or_trace_id> explain [--json]
78  logbrew set issue <issue_id> resolved [--json]
79  logbrew resolve <issue_id> [--json]
80  logbrew close <issue_id> [--json]
81  logbrew ignore <issue_id> [--json]
82  logbrew reopen <issue_id> [--json]
83
84Popular terms: auth, status, health, logs, issues, errors, traces, spans, actions, events, \
85                         releases, environments.
86Health aliases: logbrew status, logbrew health, logbrew ping, logbrew doctor.
87Setup aliases (non-mutating plan): logbrew init, logbrew install, logbrew configure, logbrew sdk.
88Shortcuts: logbrew auth, logbrew whoami, logbrew me, logbrew log, logbrew logs, logbrew issues, \
89                         logbrew logs checkout failed, logbrew logs error checkout, logbrew \
90                         search checkout, logbrew find checkout, logbrew grep checkout, logbrew \
91                         errors, logbrew actions, logbrew events, logbrew events checkout_failed, \
92                         logbrew release, logbrew releases, logbrew trace <id>, logbrew issue \
93                         <id>, logbrew resolve <id>, logbrew close <id>, logbrew ignore <id>, \
94                         logbrew reopen <id>.
95Read verbs: logbrew show logs, logbrew latest logs, logbrew last 10 logs, logbrew recent issues, \
96                         logbrew list issues, logbrew get issue <id>.
97Singular read aliases: logbrew read log, read release, show log, list issue, get release.
98Pasted IDs: logbrew issue_123 or logbrew <trace_id>.
99Topic help: logbrew logs --help, logbrew help logs, logbrew help read logs, or logbrew help json.
100JSON mode: logbrew --json status and logbrew status --json both work.
101Use --json for stable machine-readable output.";
102
103/// Login command help text.
104const LOGIN_HELP: &str = "\
105Usage:
106  logbrew login [--no-open] [--json]
107
108Starts browser login for the native CLI. Use --no-open to print the URL without opening a browser.
109--json prints the auth handoff without opening a browser.";
110
111/// Logout command help text.
112const LOGOUT_HELP: &str = "\
113Usage:
114  logbrew logout [--json]
115
116Removes the local CLI token. If LOGBREW_TOKEN is set, unset it to fully log out.";
117
118/// Setup command help text.
119const SETUP_HELP: &str = "\
120Usage:
121  logbrew setup [--auto] [--yes] [--json]
122
123Detects supported project manifests and prints a non-mutating SDK setup plan.
124No files are changed. Install: not ready.
125Aliases (same non-mutating plan): logbrew init, logbrew install, logbrew configure, logbrew sdk.
126Options: --auto records automatic detection preference; --yes records confirmation preference; \
127                          --json prints stable setup JSON.
128Supported manifests: package.json, pyproject.toml, Pipfile, Cargo.toml, Package.swift, \
129                          project.yml, project.yaml, .xcodeproj, .xcworkspace, go.mod, \
130                          composer.json.
131Package managers: npm, pnpm, yarn, bun, pip, uv, poetry, pipenv, cargo, SwiftPM, XcodeGen, Go, \
132                          Composer.";
133
134/// Status command help text.
135const STATUS_HELP: &str = "\
136Usage:
137  logbrew status [--json]
138  logbrew health [--json]
139  logbrew ping [--json]
140  logbrew doctor [--json]
141  logbrew whoami [--json]
142  logbrew me [--json]
143  logbrew auth status [--json]
144
145Checks local auth and API reachability.
146Identity aliases: logbrew whoami, logbrew me, logbrew auth status.";
147
148/// Version command help text.
149const VERSION_HELP: &str = "\
150Usage:
151  logbrew version [--json]
152  logbrew --version [--json]
153
154Prints the installed CLI version.
155The CLI is a native Rust binary.";
156
157/// Auth workflow help text.
158const AUTH_HELP: &str = "\
159Usage:
160  logbrew login [--no-open] [--json]
161  logbrew auth login [--no-open] [--json]
162  logbrew status [--json]
163  logbrew auth status [--json]
164  logbrew auth whoami [--json]
165  logbrew auth me [--json]
166  logbrew whoami [--json]
167  logbrew me [--json]
168  logbrew logout [--json]
169  logbrew auth logout [--json]
170
171Use login once, status/whoami/me to verify API/auth state, and logout to remove the local token.
172Use --json for agent-readable auth checks.";
173
174/// JSON output help text.
175const JSON_HELP: &str = "\
176Usage:
177  logbrew --json status
178  logbrew status --json
179  logbrew logs --json
180  logbrew help json --json
181
182Use --json before or after commands for stable machine-readable output.
183Stable JSON keeps server response shapes for reads and mutations.
184Errors include ok, error, message, and next.";
185
186/// Read command help text.
187const READ_HELP: &str = "\
188Usage:
189  logbrew read logs [filters] [--json]
190  logbrew read log [filters] [--json]
191  logbrew show logs [filters] [--json]
192  logbrew list issues [filters] [--json]
193  logbrew get issue <issue_id> [--json]
194  logbrew read issues [filters] [--json]
195  logbrew read actions [filters] [--json]
196  logbrew read releases [filters] [--json]
197  logbrew read release [filters] [--json]
198  logbrew read trace <trace_id> [--json]
199  logbrew read issue <issue_id> [--json]
200
201Reads historical observability data for agents and developers.
202Singular read aliases: logbrew read log, read release, show log, list issue, get release.
203Recency counts are limit shortcuts: logbrew last 10 logs or logbrew recent 5 issues.
204Use --environment <environment> with logs, issues, actions, releases, or traces.
205Filter aliases: --env, --project-id, --trace-id, and --distinct-id.";
206
207/// Read logs help text.
208const READ_LOGS_HELP: &str = "\
209Usage:
210  logbrew read logs [--severity error] [--search checkout] [--release <release>] [--environment \
211                              production] [--since 24h] [--trace <trace_id>] [--project \
212                              <project_id>] [--limit 100] [--json]
213  logbrew logs checkout failed [--severity error] [--release <release>] [--environment \
214                              production] [--json]
215  logbrew logs error checkout failed [--release <release>] [--environment production] [--json]
216
217Reads structured logs. Severity values are info, warning, error, and critical.
218Legacy severity aliases are accepted on input and normalized.
219Severity matching is case-insensitive. --level is accepted as a compatibility alias for \
220                              --severity.
221The logs shortcut accepts obvious multi-word search text, such as logbrew logs checkout failed.
222Shortcut levels can include search text, such as logbrew logs error checkout failed.
223Recency counts are limit shortcuts, such as logbrew last 10 logs.
224Explicit filters accept unquoted search text too, such as logbrew logs --severity warning checkout \
225                              failed or logbrew logs --search checkout failed.
226Use -- before literal flag-looking search text, such as logbrew logs -- --timeout --json.
227Filter by severity, message search, release, or trace_id to correlate logs with spans.
228Limit must be a positive whole number.";
229
230/// Read issues help text.
231const READ_ISSUES_HELP: &str = "\
232Usage:
233  logbrew read issues [--release <release>] [--environment production] [--status unresolved] \
234                                [--project <project_id>] [--limit 100] [--json]
235  logbrew issues open [--release <release>] [--environment production] [--json]
236  logbrew issue open [--release <release>] [--environment production] [--json]
237  logbrew open issues [--release <release>] [--environment production] [--json]
238  logbrew open issue [--release <release>] [--environment production] [--json]
239  logbrew last 5 open issues [--json]
240  logbrew errors closed [--release <release>] [--environment production] [--json]
241
242Reads grouped issues across releases and environments.
243Status accepts unresolved/open, resolved/closed, or ignored, case-insensitively.
244Issue shortcuts accept status words, such as logbrew issues open, logbrew issue open, logbrew open \
245                                issues, logbrew open issue, or logbrew errors closed.
246Recency issue shortcuts can include status and count, such as logbrew last 5 open issues.
247Limit must be a positive whole number.";
248
249/// Read actions help text.
250const READ_ACTIONS_HELP: &str = "\
251Usage:
252  logbrew read actions [--release <release>] [--environment production] [--name checkout_failed] \
253                                 [--user <distinct_id>] [--since 24h] [--project <project_id>] \
254                                 [--limit 100] [--json]
255  logbrew events checkout_failed [--release <release>] [--environment production] [--json]
256
257Reads product actions. Use distinct_id to follow one actor or session.
258Action/event aliases accept one positional name as the same filter as --name.
259Limit must be a positive whole number.";
260
261/// Read releases help text.
262const READ_RELEASES_HELP: &str = "\
263Usage:
264  logbrew read releases [--release <release>] [--environment production] [--project <project_id>] \
265                                  [--limit 100] [--json]
266
267Reads release summaries with counts for issues, logs, trace spans, and actions.
268Limit must be a positive whole number.";
269
270/// Read trace help text.
271const READ_TRACE_HELP: &str = "\
272Usage:
273  logbrew read trace <trace_id> [--release <release>] [--environment production] [--project \
274                               <project_id>] [--json]
275
276Reads spans for one distributed trace.";
277
278/// Read issue help text.
279const READ_ISSUE_HELP: &str = "\
280Usage:
281  logbrew read issue <issue_id> [--json]
282
283Reads one grouped issue with status, release, environment, and occurrence counts.";
284
285/// Watch command help text.
286const WATCH_HELP: &str = "\
287Usage:
288  logbrew watch --json
289  logbrew watch logs [--json]
290  logbrew watch issues [--json]
291  logbrew watch actions [--json]
292  logbrew watch --severity error,critical --json
293
294Aliases: tail, follow, and stream use the same live watch flow.
295Live watch uses a short-lived feed ticket and WebSocket stream.
296Server-side live filters are not sent yet; severity filtering is applied client-side.";
297
298/// Explain command help text.
299const EXPLAIN_HELP: &str = "\
300Usage:
301  logbrew explain issue <issue_id> [--json]
302  logbrew explain trace <trace_id> [--json]
303  logbrew explain <issue_id_or_trace_id> [--json]
304  logbrew issue <issue_id> explain [--json]
305  logbrew trace <trace_id> explain [--json]
306  logbrew <issue_id_or_trace_id> explain [--json]
307
308Fetches enough context for an AI agent to explain what happened.
309Pasted UUID/issue_* values are treated as issues; 32-hex/trace_* values are treated as traces.";
310
311/// Set command help text.
312const SET_HELP: &str = "\
313Usage:
314  logbrew set issue <issue_id> unresolved [--json]
315  logbrew set issue <issue_id> resolved [--json]
316  logbrew set issue <issue_id> ignored [--json]
317  logbrew resolve <issue_id> [--json]
318  logbrew close <issue_id> [--json]
319  logbrew ignore <issue_id> [--json]
320  logbrew reopen <issue_id> [--json]
321  logbrew issue <issue_id> resolve [--json]
322  logbrew issue <issue_id> close [--json]
323  logbrew issue <issue_id> ignore [--json]
324  logbrew issue <issue_id> reopen [--json]
325  logbrew <issue_id> resolve [--json]
326  logbrew resolved <issue_id> [--json]
327  logbrew closed <issue_id> [--json]
328  logbrew ignored <issue_id> [--json]
329  logbrew open <issue_id> [--json]
330  logbrew unresolved <issue_id> [--json]
331
332Updates grouped issue status. Resolve/close map to resolved; ignore maps to ignored; reopen maps \
333                        to unresolved.
334Close is an alias for resolved.
335Issue-first, pasted-ID, and status-first aliases are useful after reading issue detail.
336Status values are case-insensitive.";