mbo 0.15.0

Shell style

Follow the Google Shell Style Guide unless
this document or repository tooling says otherwise.

Tooling

The formatter and linter versions are pinned in .pre-commit-config.yaml.

Functions return values; they do not mutate callers

A function does not return a result by changing a caller variable, global counter, working
directory, shell option, or trap. Write the result to standard output and capture it:

make_tree() {
  local root
  root="$(test_tmpdir tree)"
  mkdir -p "${root}/src"
  echo "${root}"
}

root="$(make_tree)"

Do not use printf -v, eval, or global counters as hidden return channels. A function whose
purpose is an external effect may perform that named effect; keep it local and explicit. Send
diagnostics to standard error.

Tests and temporary files

Portability