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