kant2002/FSharpPacker
57.1
Adequate · 2 October 2026
336
lines of production code
F#
primary language
2
measurements over time
What this system is
FSharpPacker is a command-line tool that packages F\# script files (.fsx) into self-contained executables. It processes script directives such as \#load, \#r, and \#i to resolve dependencies and references, then generates a .NET project for compilation. The system supports reproducible builds via Nix and Docker, and handles features like multiple file loading and custom NuGet feeds.
Features
Initial release of FSharpPacker tool with Nix and Docker support
This entry introduces the FSharpPacker tool, which packages F\# script (.fsx) files into self-contained executables. The release includes a new Dockerfile for containerized builds, Nix flake definitions (flake.nix, build.nix) for reproducible development and packaging, and a comprehensive README detailing usage, supported FSX directives (such as \#load, \#r, and \#i), and command-line options like --framework, --aot, and --projectref. The solution structure is updated to include the FSharpPacker.FSharp project and test suite, with dependencies managed via a new deps.json file.
(repo-wide) · high confidence
Behavioural changes
Core F\# script processing engine rewritten in F\#
The internal logic for parsing and processing F\# script files (\.fsx\) has been rewritten from C\# to F\#. This change introduces a new preprocessor (\FsxPreprocessor\) and core processing module (\Packer\) that handle script directives such as \\#r\ (with support for \fsproj\ and \nuget\ references), \\#i\ (package sources), \\#load\, and \\#I\ (include paths). The rewrite ensures that source files are processed in the order they are loaded and correctly resolves relative paths and dependencies during the conversion of scripts into executable projects.
FSharpPacker.FSharp · high confidence
FSharpPacker rewritten in F\# with .NET 6 target
The C\# implementation of FSharpPacker (FsxPreprocessor, Program, SourceFile, NugetReference) has been removed and replaced with an F\# implementation. This change includes a migration to the .NET 6 framework (previously .NET 7 in the generated project template) and introduces support for multiple files in \#load commands, the \#I directive, and specifying the Target Framework Moniker (TFM) via the command line.
FSharpPacker · high confidence
Test coverage
Added test coverage for F\# script preprocessing features
Added unit tests in FSharpPacker.Tests to verify the FsxPreprocessor's handling of various F\# script directives and scenarios. The new tests cover conditional compilation (\#if), project references (\#r fsproj), custom NuGet feeds (\#i), shebang lines, namespace parsing, multiple \#load directives, and file path normalization. The test suite also validates the updated FsxPreprocessor constructor signature (accepting a verbose flag) and ensures correct resolution of assembly and package references.
FSharpPacker.Tests · high confidence
Dependencies
Migration to F\# and .NET 6 with updated test infrastructure
The main application project has been rewritten from C\# to F\# (FSharpPacker.FSharp), targeting .NET 6 and including the Argu CLI parsing library. The previous C\# project has been removed. The test project has been updated to target .NET 6, switched to the MSTest.Sdk, upgraded the coverlet.collector package, and now references the new F\# project instead of the old C\# one.
(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 58 → 57 (-0.6)
- Rubric changed (rubric-2026.09.13 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 97 → 97 (+0.0)
- Architecture 54 → 54 (+0.0)
- Maturity 55 → 55 (+0.0)
- Readiness 51 → 51 (+0.0)
- Security 96 → 88 (-8.0)
Resolved (3)
- Documentation: no architecture or design documentation (README.md)
- misleading comment (FSharpPacker.Tests/UnitTest1.cs)
- misleading comment (FSharpPacker.Tests/UnitTest1.cs)
New (3)
- End-of-life runtime: .NET net6.0
- misleading comment (FSharpPacker.Tests/UnitTest1.cs)
- misleading comment (FSharpPacker.Tests/UnitTest1.cs)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
kant2002/FSharpPacker 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 2 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 e5c602ac5f7e7ab10afdc5197d5dd1d5100448a4 — 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-351388015767.