c# - 用于解析嵌套命令行参数的 F# 库
问题描述
我有一个应用程序正在运行具有指定参数的任务。它一次运行 1 个任务。
type MagicOptions = {
Param1: string
Param2: string
}
type NoMagicOptions = {
Param3: string
Param4: string
}
app.exe -task magic -param1 val -param2 val
app.exe -task no-magic -param3 val -param4 val
or it can be:
app.exe magic -param1 val -param2 val
app.exe no-magic -param3 val -param4 val
每当用户指定任务类型时,它应该解析由 Magic/NoMagic 类型描述的确切参数。
我已经尝试过Argu并希望使用 DU,但它不受支持。
有现成的解决方案吗?
解决方案
我认为Argu 3.0中的子命令实际上正是您所要求的。
该示例(来自文档,已删除帮助)定义了一个git
命令,该命令可用作git clean
或git commit
与这两个表示的不同选项一起使用。选择由 DU 表示:
[<CliPrefix(CliPrefix.Dash)>]
type CleanArgs =
| D
| F
| X
and CommitArgs =
| Amend
| [<AltCommandLine("-p")>] Patch
| [<AltCommandLine("-m")>] Message of msg:string
and GitArgs =
| Version
| [<AltCommandLine("-v")>] Verbose
| [<CliPrefix(CliPrefix.None)>] Clean of ParseResults<CleanArgs>
| [<CliPrefix(CliPrefix.None)>] Commit of ParseResults<CommitArgs>
推荐阅读
- python - 将表(几页)抓取到 Pandas Dataframe
- scala - spark <2.2和scala中字符串列数组中多个值的出现计数
- microsoft-graph-api - 如何创建 GraphServiceClient?
- angular - 如何将具有非纯函数的大型组件类(1300+ 行)划分为多个打字稿文件
- c# - 使用 Roslyn 在服务器端 API 上安全执行代码
- wordpress - 如何在WordPress中根据用户的语言动态更改电子邮件的语言?
- kubernetes - GKE 自动部署具有不同映像的多个部署/服务
- java - 在我输入数学运算的运算符之前程序终止
- java - 在一个查询中实现两个 SELECT DISTINCT?
- node.js - 静态文件未在生产中提供| 从任何文件夹