Skip to content

5. Shared boilerplate ​

Every project of a family carries the same files besides its code: CI workflows, release and test scripts, the documentation's configuration, the licence. fobis scaffold keeps them identical to FoBiS's templates (with each project's name and URLs filled in), and the ecosystem checks them all:

console
$ fobis ecosystem scaffold status
core: in sync
  SKIPPED  scripts/release.sh (project-owned)
mathx: in sync
  SKIPPED  scripts/release.sh (project-owned)
app: in sync
  SKIPPED  scripts/release.sh (project-owned)

A file a project must own (here each demo project's release.sh) is listed in the fobos [scaffold] skip and never touched. A local edit to a managed file is drift:

console
$ fobis ecosystem scaffold status
core: in sync
  SKIPPED  scripts/release.sh (project-owned)
mathx: 1 not in sync
  OUTDATED .github/workflows/ci.yml
  SKIPPED  scripts/release.sh (project-owned)
app: in sync
  SKIPPED  scripts/release.sh (project-owned)
[exit status 1]

In the project, the file by file view:

console
$ cd mathx && fobis scaffold status
  OUTDATED .github/workflows/ci.yml
  OK       .github/workflows/docs.yml
  OK       .github/workflows/install.yml
  OK       .github/actions/setup-build-env/action.yml
  OK       .github/actions/run-coverage-analysis/action.yml
  SKIPPED  scripts/release.sh (project-owned: fobos [scaffold] skip)
  OK       scripts/run_tests.sh
  OK       scripts/install.sh
  OK       scripts/compute-coverage.sh
  OK       docs/package.json
  OK       cliff.toml
  OK       docs/guide/contributing.md
  OK       CONTRIBUTING.md
  OK       LICENSE.gpl3.md
  OK       .github/workflows/release.yml
  OK       docs/.vitepress/config.mts
  OK       docs/ford.md
  OK       fpm.toml
  OK       fobos

sync shows each difference and asks before writing (--yes does not ask, --dry-run only shows):

console
$ cd mathx && fobis scaffold sync --yes && git status --short

--- .github/workflows/ci.yml ---
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -27,4 +27,3 @@
     - name: Run tests with coverage
       id: cov
       uses: ./.github/actions/run-coverage-analysis
-# local edit

  Written  .github/workflows/ci.yml

1 file(s) updated.

What you learned

fobis scaffold status and sync, [scaffold] skip, fobis ecosystem scaffold status. Reference: scaffold.

Next: 6. The release train.