Skip to content

Commands ​

Every fobis command, by area. Each page lists all the options of the command (generated from the command line itself); fobis <command> --help prints the same. The fobos file holds the settings a command reads from the project, the user configuration those of the machine.

Building ​

CommandWhat it does
buildBuild all programs found or specific target(s).
cleanClean project: remove all OBJs and MODs files. Use carefully.
runBuild a target (if needed) and execute it.
installInstall previously built files, or clone+build+install a GitHub-hosted FoBiS project.
ruleExecute special rules or user-defined ones from a fobos file.
cacheManage the FoBiS build artifact cache.
introspectEmit machine-readable JSON project metadata.
treePrint the resolved inter-project dependency tree.
checkValidate the dependency graph without building.

Dependencies and projects ​

CommandWhat it does
newCreate a project: a module in src/, a program in app/, a test in test/, a fobos with debug and release modes and a [test] section, a .gitignore and a git repository (nothing committed). An existing file is never overwritten.
fetchFetch and build GitHub-hosted Fortran dependencies listed in the fobos [dependencies] section.
fpmInteroperate with the Fortran Package Manager: fpm.toml to fobos and back.
scaffoldManage project boilerplate via bundled scaffold templates.
ecosystemManage a set of interconnected FoBiS projects (registry: [ecosystem] in the user config).

Testing ​

CommandWhat it does
testDiscover, build, and run Fortran test programs.
doctestsTest all valid doctests snippets found.
coverageGenerate HTML/XML coverage reports from instrumented test runs.

Verifying results ​

CommandWhat it does
caseRun the cases declared in the fobos ([case:NAME]) and extract their quantities.
provenancePrint what a result produced now would depend on: commit, dependency pins, compiler, flags, machine.
verifyRun cases and compare their quantities with the stored references, within each quantity's tolerance.
matrixBuild, test (and verify) every mode x shadow combination available on this machine.
assessAssess the numerical error and uncertainty of a case's quantities from ensembles of its variants.
diff-runRun the cases on a revision and on the working tree, in scratch copies, and compare their quantities.
benchMeasure the run time of cases: warm-up, then runs until the median's 95% interval is narrow enough; compared with the case's recorded history or, with --compare, with a revision. Faster or slower only when the intervals do not overlap.
gateOne verdict for a change: build, review of the changed lines, tests, verify, diff-run and bench against the base, assessment budgets and the declared matrix, each reduced to pass/fail/skipped with its first failing fact. Exit 1 when a non-advisory stage fails.
profileProfile a case: where it spends its time (gprof), its instructions (callgrind) or its GPU time and transfers (nsys), mapped to the project's procedures and source lines.

Code analysis ​

CommandWhat it does
lintReport bug-prone and obsolescent Fortran constructs (rules: fobis lint --list-rules).
reviewReport the lint findings on the changed lines only (staged, since a base, or uncommitted).
queryAnswer a question about the code from the analysis: who calls what, who writes a variable, where a name is defined, which directive regions hold a line, where a variable lives on the device, which MPI calls are made.
modernizeApply the automatic lint fixes (array constructors, relational operators, generic intrinsics, character length, labelled DO loops) to a scratch copy and keep them only when it builds, the tests still pass and the declared cases give equivalent results; each rule is checked alone when the whole set fails.
bindingsGenerate bind(c) shims (NAME_c.f90), a C header (NAME.h) and a Python ctypes wrapper (NAME.py) for the public procedures of the modules whose arguments allow it; report why the others are not bound.
agents-mdGenerate the build, test and verification instructions for coding agents (AGENTS.md) from the fobos and the sources, between fobis:begin/end markers: the rest of the file is kept.

AI assistance ​

CommandWhat it does
llmManage the local LLM: models pulled from the Hugging Face Hub (nothing is downloaded implicitly).
askAnswer a question from the knowledge packs (and, with --project, the project's procedures), citing sources.
kbSearch the knowledge packs (Fortran, OpenMP, OpenACC, MPI references; your own packs).
testgenGenerate a test program for a module's public procedures; kept only when it builds, runs and checks.
merge-assistPropose resolutions for merge, rebase or cherry-pick conflicts, checked by the compiler; never stages.
commitGenerate a Conventional Commits message for staged changes via a local LLM.
mcpServe lint, rules, knowledge packs and build commands to MCP clients over stdio.