magus-buzz
Synopsis
magus buzz [file...|-|lsp] [flags]
Description
Run Buzz source from a REPL, a file, stdin, or an inline snippet.
With no argument on a terminal it opens a REPL with the magusfile at the current directory loaded, its targets and bindings ready. A piped or redirected stdin runs as a script instead. In both, the Buzz stdlib, every magus host module (fs, os, http, markdown, and the rest), and the magus namespace are available, so a one-off script needs no dependency install.
A script run inside a workspace runs under that workspace's sandbox policy, the same one a target gets, so its file, process and network access is governed identically and a refusal is recorded on the activity trail.
Parsing is upstream-strict by default: a file written for the magusfile engine needs --embedded, or it fails on rules upstream Buzz enforces and magus does not. The most common one is "argument N must be labeled".
-t runs a file's test blocks and reports pass or fail, which is how Buzz code in this ecosystem is tested. --coverprofile writes an LCOV report for the file under -t (entry file only; imports are measured when they are the -t subject). The lsp subcommand speaks the Language Server Protocol over stdio for an editor integration.
--check parses and type-checks the named files and does not run them, which is the only way to judge a script whose whole job is a side effect: a hook that reads stdin and shells out cannot be validated by running it. It takes several paths, reports every diagnostic rather than stopping at the first, and fails only on errors; warnings print and pass. Resolving a file import still executes that module's top level, since there is no check-only import pass.
It cannot resolve magus/spell/*, which the workspace loader binds, so a magusfile or a target definition reports an unresolved import. Those are the files magus already checks by loading them; --check is for the ones nothing loads.
Options
- -C string
- Working directory for the REPL's import resolution (default: cwd)
- --check
- Parse and type-check the named files without running them; report every diagnostic
- --coverprofile -t
- Write an LCOV coverprofile for the file under `-t` (requires `-t`)
- -e code
- Execute `code` given on the command line instead of a file
- --embedded
- Relax upstream strictness (top-level statements, optional argument labels) to match the magusfile engine
- --no-autoload
- Start the REPL without executing the magusfile
- -t
- Run the file's test "..." {} blocks and report pass/fail
- --test
- Alias for -t
Subcommands
- lsp
- Language server over stdio (LSP)
Examples
Open a REPL with the magusfile loaded
magus buzz
Run a script
magus buzz scripts/report.buzz
Run an inline snippet
magus buzz -e 'import "std"; fun main() > void { std\print("hi"); } main();'
Run a file's test blocks
magus buzz -t scripts/report.buzz
Check files without running them
magus buzz --check scripts/report.buzz scripts/build.buzz
Run a magusfile-style file
magus buzz --embedded scripts/target.buzz
Write an LCOV coverprofile while testing
magus buzz -t --coverprofile=out.lcov scripts/report.buzz
See Also
magus(1), magus-ls(1), magus-describe(1), magus-run(1), magus-x(1), magus-where(1), magus-affected(1), magus-graph(1), magus-query(1), magus-explain(1), magus-path(1), magus-refs(1), magus-watch(1), magus-events(1), magus-status(1), magus-clean(1), magus-shell(1), magus-vcs(1), magus-queue(1), magus-doctor(1), magus-config(1), magus-session(1), magus-memory(1), magus-job(1), magus-notes(1), magus-diff(1), magus-server(1), magus-broker(1), magus-mcp(1), magus-completion(1), magus-man(1), magus-init(1), magus-spell(1), magus-agent(1), magus-self(1), magus-version(1)