Skip to content

ecosystem command ​

Manage a set of interconnected FoBiS projects: know their state, act across them in dependency order, release them as a train.

bash
fobis ecosystem <subcommand> [options]

How to use it, with examples: Many projects.

All options ​

fobis ecosystem add ​

Register projects in the ecosystem (the [ecosystem] projects list of the user config).

Arguments: PROJECTS...

OptionValueDefaultDescription
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]

fobis ecosystem check ​

Pre-release impact check: build and test every dependent against PROJECT's local working copy.

Arguments: PROJECT

OptionValueDefaultDescription
--keepKeep the staged copies even when every check passes
--fail-fastStop at the first failure
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]

fobis ecosystem dashboard ​

Show the state of every project: git, release, CI, scaffold drift, dependency pins.

OptionValueDefaultDescription
--formatTEXTterminalOutput format: terminal or html
--output, -oTEXTHTML file to write [default: ~/.cache/fobis/ecosystem.html]
--no-openWrite the HTML page without opening the browser
--no-fetchSkip 'git fetch': faster and offline, but upstream, CI and pins may be old
--no-ciDo not query GitHub Actions (CI shows 'unknown')
--themeTEXTHTML palette (see the [ecosystem] theme key) [default: from config, else github]
--modeTEXTHTML mode: auto, light or dark [default: from config, else auto]
--jobs, -jINTEGER8Projects examined concurrently
--jsonPrint machine-readable JSON instead of text
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]

fobis ecosystem discover ​

List git repositories with a fobos file under the root that are not registered yet.

OptionValueDefaultDescription
--root, -rTEXTDirectory to scan [default: the configured ecosystem root]
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]

fobis ecosystem exec ​

Run a command in every project, dependencies first: fobis ecosystem exec -- <command>.

OptionValueDefaultDescription
--onlyTEXTComma-separated projects to act on [default: all]
--fromTEXTStart from this project in release order (resume after a failure)
--fail-fastStop at the first failure
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]

fobis ecosystem fetch ​

Run 'fobis fetch --update' in every project with dependencies, dependencies first.

OptionValueDefaultDescription
--onlyTEXTComma-separated projects to act on [default: all]
--fromTEXTStart from this project in release order (resume after a failure)
--fail-fastStop at the first failure
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]

fobis ecosystem graph ​

Print the dependency tree and the release order of the projects.

OptionValueDefaultDescription
--jsonPrint machine-readable JSON instead of text
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]

fobis ecosystem impact ​

Which dependent projects a change of PROJECT's public Fortran interfaces breaks, and where.

Arguments: PROJECT

OptionValueDefaultDescription
--baseTEXTCompare its working tree with this revision [default: its latest tag, else HEAD]
--formatTEXTtexttext, markdown or json
--deepAdd a cited LLM summary for the release train
--deep-contextPrint what the model would receive for --deep, run no model
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]

fobis ecosystem release ​

Release train: release every project with releasable commits, dependencies first.

OptionValueDefaultDescription
--onlyTEXTComma-separated projects to act on [default: all]
--fromTEXTStart from this project in release order (resume after a failure)
--bumpTEXTOverride a bump: NAME=major|minor|patch|vX.Y.Z (repeatable)
--dry-runShow the plan and stop
--yes, -yDo not ask: approve the plan and answer each release.sh prompt
--no-fetchPlan without 'git fetch' (not recommended)
--no-waitDo not wait for the GitHub releases
--timeoutINTEGER900Seconds to wait for each GitHub release
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]

fobis ecosystem remove ​

Unregister projects (the repositories themselves are not touched).

Arguments: PROJECTS...

OptionValueDefaultDescription
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]

fobis ecosystem scaffold ​

Scaffold drift across the projects (honours each fobos [scaffold] skip).

fobis ecosystem scaffold status ​

List the managed files not in sync, project by project (exit 1 when any drifts or cannot be read).

OptionValueDefaultDescription
--onlyTEXTComma-separated projects to act on [default: all]
--filesTEXTLimit to managed files matching this glob
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]

fobis ecosystem scaffold sync ​

Show (default) or apply the scaffold changes, project by project.

OptionValueDefaultDescription
--onlyTEXTComma-separated projects to act on [default: all]
--filesTEXTLimit to managed files matching this glob
--applyWrite the changes (default: only show them)
--yes, -yWith --apply: do not ask for each project
--config, -cTEXTUser config file [default: ~/.config/fobis/config.ini]