CLI Reference
The build and publish scripts. Each takes a small set of flags; the rest of the work is path defaults.
scripts/build_managed.py
Thin wrapper around @common/scripts/build_managed.py. Forwards:
--csproj PATH— required.--out DIR— output dir fordotnet publish.--config PATH— path toconfig.json(forlast_published.version).--library-version V— override the semver base.
The wrapper adds the per-worker paths:
- MANAGED_CSPROJ → HttpGetWorker/src/Virtufin.Worker.HttpGetWorker.Managed/Virtufin.Worker.HttpGetWorker.Managed.csproj
- CONFIG → HttpGetWorker/config/config.json
- NUPKG_DIR → ../build/Virtufin.Worker.HttpGetWorker.Managed.nupkg (the canonical output dir for the PackageWorker MSBuild target)
scripts/build_aot.py
Thin wrapper around @common/scripts/build_aot.py. Forwards:
--managed-csproj PATH— used to auto-discover the AOT csproj.--rids RID1,RID2— comma-separated (defaultlinux-arm64,linux-x64).--native-csproj PATH— override the auto-discovered AOT csproj.--out DIR— per-RID AOT publish output.--config PATH,--library-version V— same as the managed build.--docker-image IMG— defaultdocker.haenerconsulting.com/library/dotnet-crossbuild:10.
The wrapper adds:
- MANAGED_CSPROJ → same as above.
- NATIVE_CSPROJ → HttpGetWorker/src/Virtufin.Worker.HttpGetWorker.Native/Virtufin.Worker.HttpGetWorker.Native.csproj.
- NUPKG_DIR → ../build/Virtufin.Worker.HttpGetWorker.Native.nupkg.
- DEFAULT_OUT = os.environ.get("OUT", str(NUPKG_DIR)) — the OUT env var overrides the canonical dir.
scripts/build_both.py
Thin shell orchestrator that calls build_managed.py and build_aot.py and combines. Flags:
--rids RID1,RID2— comma-separated (defaultlinux-arm64,linux-x64).--out DIR— output dir for the combined nupkg (default../build/Virtufin.Worker.HttpGetWorker.nupkg.both/).--no-clean— don't delete the output dir before building.--skip-managed/--skip-aot— skip one of the sub-builds.
scripts/publish.py
Uploads the nupkg to the Gitea NuGet feed. Reads the Gitea credentials from the VIRTUFIN_REGISTRY_USER / VIRTUFIN_REGISTRY_TOKEN env vars. The last_published.version is updated after a successful upload. No flags.
scripts/create_worker.py / scripts/start_worker.py / scripts/delete_worker.py
Thin wrappers around the same-named @common/scripts/ scripts, auto-injecting --version/--worker-zip-dir from build_hash.txt when one exists from a prior build. Forward:
--api-client-host/--api-client-port— the API gateway to deploy against.--config PATH— path toconfig.json(default:./config.json).--id ID— the worker id (start_worker.py/delete_worker.pyonly;create_worker.pyprints it on success).
No smoke_test_aot.py or examples/ directory exists for this worker — see the Worker Author Guide for the pattern if your own worker needs an AOT smoke test.
See also
- Build Script — what each script does at each step
- Packaging Modes — the three packaging modes