Marey.Toolchain
0.7.0
dotnet add package Marey.Toolchain --version 0.7.0
NuGet\Install-Package Marey.Toolchain -Version 0.7.0
<PackageReference Include="Marey.Toolchain" Version="0.7.0" />
<PackageVersion Include="Marey.Toolchain" Version="0.7.0" />
<PackageReference Include="Marey.Toolchain" />
paket add Marey.Toolchain --version 0.7.0
#r "nuget: Marey.Toolchain, 0.7.0"
#:package Marey.Toolchain@0.7.0
#addin nuget:?package=Marey.Toolchain&version=0.7.0
#tool nuget:?package=Marey.Toolchain&version=0.7.0
Marey.Toolchain
External-program resolution and invocation for Marey, a dimensionally-typed visualization system for F#. A tool is resolved and reported, or it is absent and the absence names what to install.
#r "nuget: Marey.Toolchain"
open Marey
let ffmpeg = Toolchain.resolve "ffmpeg, from your package manager" "ffmpeg"
printfn "%s" (Toolchain.report "nothing was encoded" ffmpeg)
match Toolchain.runArgs ffmpeg [ "-version" ] "." 20_000 with
| ToolRan run -> printfn "%d: %s" run.ExitCode run.Out
| ToolUnavailable why -> printfn "%s" why
| ToolTimedOut why -> printfn "%s" why
Marey drives programs it does not ship — pdflatex for the TikZ goldens, pdftoppm for the ink
gate, ffmpeg for video. This is the one place that answers "is it there?", and the wording of
"it is not installed" is part of what it implements. It exists because that question had been
answered five times in four files, in three different registers, and a reader had to know which
one printed which.
Zero dependencies, deliberately. The packages that consume this already drag a toolchain each; the module that reports their absence must not be a third thing to install.
What is in it
Toolchain.onPath— a hand-rolledPATHwalk rather than a shell-out towhere/which, because those are themselves external tools and their absence would be reported as the absence of the thing being looked for.ResolvedTool, carrying the install sentence rather than deriving it: the right thing to say differs per tool and per platform.Toolchain.run/runArgs, which capture both streams and drain them concurrently — reading one to the end and then the other deadlocks as soon as the child fills the second pipe's buffer, which is to say on the run that finally had enough errors to be worth reading. PreferrunArgswhenever an argument is a path:ProcessStartInfo.Argumentsis re-split using Windows' quoting rules on every platform, and a vector needs no quoting.ToolOutcome, three cases and not aResult: "not installed", "timed out" and "ran and exited" call for different behaviour at every call site, and collapsing them is how a gate goes quietly vacuous.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- FSharp.Core (>= 8.0.100)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Marey.Toolchain:
| Package | Downloads |
|---|---|
|
Marey.Tools.Tex
Mathematical typesetting for Marey figures: TeX source on a scene's text runs becomes vector outlines, by shelling out to latex and dvisvgm. Degrades to plain text when TeX is absent. |
|
|
Marey.Tools.Video
Encode a rendered frame sequence to video by shelling out to ffmpeg. Degrades to the numbered frames when ffmpeg is absent. |
GitHub repositories
This package is not used by any popular GitHub repositories.