ecosystem command
Manage a set of interconnected FoBiS projects: know their state, act across them in dependency order, release them as a train.
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...
| Option | Value | Default | Description |
|---|---|---|---|
--config, -c | TEXT | User 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
| Option | Value | Default | Description |
|---|---|---|---|
--keep | Keep the staged copies even when every check passes | ||
--fail-fast | Stop at the first failure | ||
--config, -c | TEXT | User config file [default: ~/.config/fobis/config.ini] |
fobis ecosystem dashboard
Show the state of every project: git, release, CI, scaffold drift, dependency pins.
| Option | Value | Default | Description |
|---|---|---|---|
--format | TEXT | terminal | Output format: terminal or html |
--output, -o | TEXT | HTML file to write [default: ~/.cache/fobis/ecosystem.html] | |
--no-open | Write the HTML page without opening the browser | ||
--no-fetch | Skip 'git fetch': faster and offline, but upstream, CI and pins may be old | ||
--no-ci | Do not query GitHub Actions (CI shows 'unknown') | ||
--theme | TEXT | HTML palette (see the [ecosystem] theme key) [default: from config, else github] | |
--mode | TEXT | HTML mode: auto, light or dark [default: from config, else auto] | |
--jobs, -j | INTEGER | 8 | Projects examined concurrently |
--json | Print machine-readable JSON instead of text | ||
--config, -c | TEXT | User 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.
| Option | Value | Default | Description |
|---|---|---|---|
--root, -r | TEXT | Directory to scan [default: the configured ecosystem root] | |
--config, -c | TEXT | User config file [default: ~/.config/fobis/config.ini] |
fobis ecosystem exec
Run a command in every project, dependencies first: fobis ecosystem exec -- <command>.
| Option | Value | Default | Description |
|---|---|---|---|
--only | TEXT | Comma-separated projects to act on [default: all] | |
--from | TEXT | Start from this project in release order (resume after a failure) | |
--fail-fast | Stop at the first failure | ||
--config, -c | TEXT | User config file [default: ~/.config/fobis/config.ini] |
fobis ecosystem fetch
Run 'fobis fetch --update' in every project with dependencies, dependencies first.
| Option | Value | Default | Description |
|---|---|---|---|
--only | TEXT | Comma-separated projects to act on [default: all] | |
--from | TEXT | Start from this project in release order (resume after a failure) | |
--fail-fast | Stop at the first failure | ||
--config, -c | TEXT | User config file [default: ~/.config/fobis/config.ini] |
fobis ecosystem graph
Print the dependency tree and the release order of the projects.
| Option | Value | Default | Description |
|---|---|---|---|
--json | Print machine-readable JSON instead of text | ||
--config, -c | TEXT | User 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
| Option | Value | Default | Description |
|---|---|---|---|
--base | TEXT | Compare its working tree with this revision [default: its latest tag, else HEAD] | |
--format | TEXT | text | text, markdown or json |
--deep | Add a cited LLM summary for the release train | ||
--deep-context | Print what the model would receive for --deep, run no model | ||
--config, -c | TEXT | User config file [default: ~/.config/fobis/config.ini] |
fobis ecosystem release
Release train: release every project with releasable commits, dependencies first.
| Option | Value | Default | Description |
|---|---|---|---|
--only | TEXT | Comma-separated projects to act on [default: all] | |
--from | TEXT | Start from this project in release order (resume after a failure) | |
--bump | TEXT | Override a bump: NAME=major|minor|patch|vX.Y.Z (repeatable) | |
--dry-run | Show the plan and stop | ||
--yes, -y | Do not ask: approve the plan and answer each release.sh prompt | ||
--no-fetch | Plan without 'git fetch' (not recommended) | ||
--no-wait | Do not wait for the GitHub releases | ||
--timeout | INTEGER | 900 | Seconds to wait for each GitHub release |
--config, -c | TEXT | User config file [default: ~/.config/fobis/config.ini] |
fobis ecosystem remove
Unregister projects (the repositories themselves are not touched).
Arguments: PROJECTS...
| Option | Value | Default | Description |
|---|---|---|---|
--config, -c | TEXT | User 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).
| Option | Value | Default | Description |
|---|---|---|---|
--only | TEXT | Comma-separated projects to act on [default: all] | |
--files | TEXT | Limit to managed files matching this glob | |
--config, -c | TEXT | User config file [default: ~/.config/fobis/config.ini] |
fobis ecosystem scaffold sync
Show (default) or apply the scaffold changes, project by project.
| Option | Value | Default | Description |
|---|---|---|---|
--only | TEXT | Comma-separated projects to act on [default: all] | |
--files | TEXT | Limit to managed files matching this glob | |
--apply | Write the changes (default: only show them) | ||
--yes, -y | With --apply: do not ask for each project | ||
--config, -c | TEXT | User config file [default: ~/.config/fobis/config.ini] |