Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Output and Exit Codes

What devset prints, where, and what its exit code means; the same for every command.

Where Output Goes

  • stdout has what a command answers: status and its JSON, diff, explain, list and completions.
  • stderr has everything else: the log of what a command did or would do, errors, notes, a help: line with the next step, prompts, and a Fetching <url> line before devset reaches a remote.

So devset status | grep edited sees only the status, devset apply 2>/dev/null prints nothing, and a reader that stops early, as devset status | head does, is not an error.

The log reads as cargo’s does: a verb aligned on the right, past tense for what happened, and a Finished summary. A dry run says Would instead, and ends nothing written.

   Created mise.toml
    Merged clippy.toml
Conflicted deny.toml  merged, but invalid: duplicate key at line 56
  Finished 2 changes, 1 conflict

Errors

An error says what is wrong, then what fixes it. A file that does not parse is shown with the offending line marked; a mistyped layer, variable or path gets a did-you-mean, or else a list of what exists.

error: no layer is named teem
  |
  = help: did you mean `team`?

Global Options

OptionDoes
-q, --quietPrint only results, conflicts and errors: no log, no notes, no fetch lines.
--no-inputNever prompt; fail with the flags to pass instead.
--no-colorNever colour output. Setting NO_COLOR does the same.

devset prompts only when both stdin and stderr are terminals, and git may ask for credentials only when devset may prompt.

Exit Codes

CodeMeans
0Success.
1A merge conflicted; or, under status --exit-code, the target has drifted or an update is unfinished.
2An error, invalid arguments included.