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.
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).

Packages and indexes ​

CommandWhat it does
indexManage the package indexes searched by search, info and add (several side by side, none by default).
searchSearch the configured package indexes (and the indexes they follow).
infoShow what a package's source holds: versions, build system, modules, licence.
addAdd a dependency to the fobos, resolved through the package indexes (the fobos gets its URL).
removeRemove a dependency from the fobos (and the recipe fobis add copied for it), or from fpm.toml.
publishPublish the current project: a release archive for static hosting, an entry of an index.
pkgPackages built for your compiler and installed in a store (install, list, uninstall, upgrade, path).
auditReport the advisories that affect the fetched dependencies (exit 1 when one does).

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.