magus v0.4.3 is out. See what's new
¶ View markdown source · ✎ Suggest an edit
1 min read

output-redirect

A deny rule: it refuses magus output redirected to a file, which the run log already holds, and names what to run instead.

What it catches

Magus output redirected to a file, which the run log already holds.

Why

There is no legitimate shape of this against magus. Silencing and keeping are the only two intents and magus has a lever for each: --silent says nothing until something fails, and -o json --tee <file> keeps the STRUCTURED output rather than console text, which is not a format anything should parse. A target run persists its whole log either way and prints a ref for it, so capturing the console is redundant.

Seeing it

A verdict names its rule in brackets, which is how you got here:

deny [output-redirect]: ...

magus describe rule output-redirect prints the same entry at a terminal, and magus describe rules lists every rule this workspace enforces.

See also

  • All rules - what this workspace enforces, deny first
  • The guard - how a verdict is reached and wired
guardrulesoutput-redirectdeny
Last updated (d966bfce)
Glossary

Workspace

The magus root directory that owns a set of projects and shared config; the unit magus operates over. See workspace.

Target

A named operation (build, test, ...) you invoke with magus run <target>; it may compose a spell's tool-native operations and depend on other targets. See targets.

CI

An ordinary magusfile-defined target you compose yourself with magus\needs - magus does not hardcode its stages. Magus.RunCI treats it specially only in that it strips the rw charm, it is the anchor magus affected ci keys off, and a selected scope with no project declaring it is a load error rather than a silent no-op. See targets.

Run

One target executing under one magus invocation, such as magus run test web or magus affected ci. A run keeps its captured output behind an output reference. Every magus run is a run whether or not any job asked for it; see Job for how the two relate.

Conventions

Placeholders

Angle brackets mark a value you replace with your own - never type the brackets:

magus run <target>
magus completion <shell>    # e.g. bash, zsh, fish

<target>, <path>, <shell>, <name> and the like are stand-ins, not literal text.