Skip to content
CAI
Software that uses CAICheck a score

ninjarobot/FSharp.Text.Docker

45.7

Weak · 3 October 2026

345

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

FSharp.Text.Docker is a library that provides type-safe generation of Dockerfiles using F\#. It allows developers to construct Docker specifications programmatically, supporting a comprehensive set of instructions such as FROM, RUN, COPY, and ENV, including multi-stage build capabilities. The system compiles these F\# types into valid Dockerfile strings and is designed to be compatible with both .NET and JavaScript environments via Fable.

Features

Added usage examples for FSharp.Text.Docker

The example directory now includes sample programs demonstrating how to use the FSharp.Text.Docker library. These samples show how to generate Dockerfiles for various scenarios, including a basic Debian-based setup, a specific configuration for Paket, and a simple hello-world container with exposed ports and user settings.

example · high confidence

Expanded Dockerfile instruction support and Fable compatibility

The library now supports generating Dockerfiles with a significantly broader set of instructions, including COPY (with multi-stage build support via --from), ENTRYPOINT, VOLUME, WORKDIR, ARG, ONBUILD, LABEL, EXPOSE, ENV, ADD, STOPSIGNAL, HEALTHCHECK, and SHELL. Additionally, the codebase has been updated to target .NET 5.0 and includes conditional compilation support for Fable, allowing the library to be used in JavaScript environments.

src · high confidence

Initial release of FSharp.Text.Docker with type-safe Dockerfile generation

The repository has been renamed to FSharp.Text.Docker and initialized with an initial version that provides type-safe Dockerfile construction in F\#. This release adds support for core Dockerfile instructions including FROM, RUN, and CMD, allowing users to define Docker specifications using F\# types and compile them into valid Dockerfile strings. The project includes a solution file, a Makefile for building and testing, and a global.json pinning the SDK version to 9.0.\*.

(repo-wide) · high confidence

Test coverage

Added unit tests for Dockerfile instruction generation and builder composition

Added test coverage in \tests/BuilderTests.fs\ and \tests/DockerfileTests.fs\ for the F\# Dockerfile generation library. The tests verify that the \dockerfile\ computation expression builder correctly composes multi-stage builds (including \FROM\, \RUN\, \WORKDIR\, \COPY --from\, \EXPOSE\, \ENV\, and \CMD\) and that the underlying instruction printers correctly serialize Dockerfile directives such as \FROM\, \RUN\, \CMD\, \LABEL\, \EXPOSE\, \ENV\, \ADD\, \COPY\, \ENTRYPOINT\, and \VOLUME\ into their expected string representations, including handling of exec vs. shell forms, quoted arguments, and named build stages.

tests · high confidence

Dependencies

Add Paket-based example and update project dependencies

This change introduces a new example project demonstrating how to use FSharp.Text.Docker with Paket, including the necessary dependency and lock files. It also updates the main library project to explicitly reference System.Text.Json version 6.0.10 and FSharp.Core version 5.0.0 for the netstandard2.0 target, and updates the test project to use .NET 9.0 along with xunit v3. The example project has been renamed and now references the library via a project reference instead of the FParsec package.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 49 → 46 (-3.0)
  • Rubric changed (rubric-2026.09.13 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 69 → 69 (+0.0)
  • Maturity 31 → 31 (+0.0)
  • Readiness 58 → 58 (+0.0)
  • Security 63 → 49 (-13.3)

Resolved (2)

  • Documentation: no contributor guidance (README.md)
  • Documentation: no usage examples (README.md)

New (2)

  • End-of-life runtime: .NET net9.0
  • End-of-life runtime: .NET netcoreapp2.0

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

ninjarobot/FSharp.Text.Docker was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 417b745d90b080ef4588b72b3dc4aa2856d57ba2 — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-4f4226d619ea.