You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在F#的Argu库中为--help添加Examples示例章节?

在Argu的--help输出中添加Examples章节的方法

Argu支持通过自定义帮助文本生成器扩展默认的--help输出,以下是具体实现步骤:

1. 定义CLI参数类型(已实现可跳过)

确保你已经定义了符合IArgParserTemplate的参数类型,示例如下:

open Argu

type CLIArguments =
    | [<AltCommandLine("-w")>] Working_Directory of path:string
    | [<AltCommandLine("-l")>] Listener of host:string * port:int
    | [<AltCommandLine("-d")>] Data of base64:string
    | [<AltCommandLine("-p")>] Port of tcpPort:int
    | [<AltCommandLine("-log")>] Log_Level of level:string
    | [<AltCommandLine("-det")>] Detach
    | [<CliPrefix(CliPrefix.None)>] Help
    interface IArgParserTemplate with
        member s.Usage =
            match s with
            | Working_Directory _ -> "指定工作目录。"
            | Listener _ -> "指定监听器(主机名:端口)。"
            | Data _ -> "Base64编码的二进制数据。"
            | Port _ -> "指定主端口。"
            | Log_Level _ -> "设置日志级别。"
            | Detach -> "将守护进程与控制台分离。"
            | Help -> "显示选项列表。"

2. 创建自定义帮助文本生成器

继承Argu的HelpTextGenerator类,重写GenerateText方法,在默认帮助文本后追加Examples章节:

type CustomHelpTextGenerator() =
    inherit HelpTextGenerator()

    override this.GenerateText(parser: ArgumentParser<_>, args: ParseResults<_>, format: HelpTextOutputFormat) =
        // 获取默认生成的帮助文本
        let defaultHelpContent = base.GenerateText(parser, args, format)
        // 自定义Examples章节内容
        let examplesSection = """

EXAMPLES:

# 基础启动:指定工作目录与端口
gadget.exe --working-directory ./runtime-data --port 8080

# 带监听器的调试模式
gadget.exe --listener 0.0.0.0 9090 --log-level debug

# 后台守护进程模式
gadget.exe --detach --log-level info
"""
        // 拼接默认内容与自定义章节
        defaultHelpContent + examplesSection

3. 使用自定义生成器初始化参数解析器

在创建ArgumentParser实例时,通过helpTextGenerator参数指定自定义生成器,这样--help输出就会包含Examples章节:

[<EntryPoint>]
let main argv =
    // 初始化带自定义帮助生成器的解析器
    let parser = ArgumentParser.Create<CLIArguments>(helpTextGenerator = CustomHelpTextGenerator())
    try
        let results = parser.Parse(argv)
        // 处理帮助请求
        if results.Contains Help then
            printfn "%s" (parser.PrintUsage())
            0
        else
            // 此处添加业务逻辑处理
            0
    with
    | :? ArguParseException as ex ->
        printfn "%s" ex.Message
        1

效果说明

运行gadget.exe --help时,输出会在默认OPTIONS章节后自动追加你定义的EXAMPLES内容,完全符合需求格式。

内容的提问来源于stack exchange,提问作者inwenis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:53:14