Add Argu for argument parsing

This commit is contained in:
Sven van Heugten 2026-05-12 16:24:19 +02:00
parent ae246d3f36
commit 294b2f85a9
No known key found for this signature in database
GPG key ID: D612F88666F4F660
2 changed files with 15 additions and 5 deletions

View file

@ -11,6 +11,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Argu" Version="6.2.5" />
<PackageReference Include="Fli" Version="1.1000.0" />
<PackageReference Include="System.Reflection.MetadataLoadContext" Version="9.0.1" />
</ItemGroup>

View file

@ -3,6 +3,7 @@ open System.IO
open System.Reflection
open System.Runtime.InteropServices
open Fli
open Argu
type MutationCase = { TestName: string; Patch: string }
@ -118,18 +119,26 @@ let getMutationCases projectPath =
| _ -> None))
|> Seq.toList
type Arguments =
| [<MainCommand; ExactlyOnce>] ProjectPath of ProjectPath: string
interface IArgParserTemplate with
member s.Usage =
match s with
| ProjectPath _ -> "path/to/project.csproj|fsproj"
[<EntryPoint>]
let main argv =
if argv.Length <> 1 then
eprintf "Usage: mutannot <path/to/project.csproj|fsproj>\n"
exit 1
let parsedArguments =
ArgumentParser.Create<Arguments>(programName = "mutannot")
|> _.ParseCommandLine(argv)
let projectPath = parsedArguments.GetResult ProjectPath
ensureCleanWorkingDirectory ()
AppDomain.CurrentDomain.ProcessExit.Add(fun _ -> restore ())
let projectPath = argv[0]
for index, mutationCase in getMutationCases projectPath |> Seq.indexed do
Console.ForegroundColor <- ConsoleColor.Green
printf $"MUTATION {index + 1}\n"