Skip to content

pubgo/redant

Repository files navigation

Redant 命令行框架

Redant 是一个用于构建大型 Go 命令行程序的框架,提供命令树、选项系统、中间件链、帮助系统与多格式参数解析能力。

文档导航

README 仅保留“快速上手 + 能力入口”。详细设计与流程请跳转:

核心能力

  • 命令树与子命令继承(支持嵌套)
  • 选项多来源配置(命令行、环境变量、默认值)
  • 中间件链式编排
  • 自动帮助信息与全局标志
  • 多格式参数解析(位置参数、查询串、表单、JSON)
  • Busybox 风格 argv0 调度(软链接命令入口)
  • MCP 工具暴露(将命令树映射为 Model Context Protocol Tools)
  • Web 控制台(web 子命令):可视化选择命令、填写 Flags/Args、查看调用过程与执行结果

仓库范围说明

  • 当前 redant 仓库聚焦 CLI 框架核心能力(命令树、Flag/Args 解析、中间件、帮助系统、MCP/Web/WebTTY)。
  • agentlinecopilot-demo 及相关示例已迁移到独立项目维护(fastgit 侧),不再作为本仓库内置模块继续演进。
  • 如需 Agent 交互与 Copilot 集成演示,请在迁移后的项目中使用对应目录与示例。

快速开始

package main

import (
    "context"
    "fmt"
    "os"

    "github.com/pubgo/redant"
)

func main() {
    cmd := redant.Command{
        Use:   "echo <text>",
        Short: "输出传入文本",
        Handler: func(ctx context.Context, inv *redant.Invocation) error {
            if len(inv.Args) == 0 {
                return fmt.Errorf("缺少文本参数")
            }
            fmt.Fprintln(inv.Stdout, inv.Args[0])
            return nil
        },
    }

    if err := cmd.Invoke().WithOS().Run(); err != nil {
        fmt.Fprintln(os.Stderr, err)
        os.Exit(1)
    }
}

常用能力速览

参数与标志

  • 子命令支持空格路径与冒号路径(如 app repo commit / app repo:commit)。
  • 参数支持位置参数、query、form、JSON 四种形态。
  • 推荐写法:app <command> [flags...] [args...]

常用全局标志:

  • --help, -h
  • --list-commands
  • --list-flags
  • --env, -e KEY=VALUE
  • --env-file FILE
  • --args VALUE(内部隐藏,用于覆盖位置参数)

详细解析规则见:docs/USAGE_AT_A_GLANCE.md

Web 调试界面

app web
app web --addr 127.0.0.1:18080 --open=false

Web 控制台支持可视化填写 flags/args,并展示 curl 与多行 CLI 调用过程。更多说明见:docs/USAGE_AT_A_GLANCE.md

WebTTY 本地终端

app webtty
app webtty --addr 127.0.0.1:18081 --open=false

webtty 提供最简本地 Web 终端能力(WebSocket + PTY),并支持文件上传/下载。详细接口与迭代路线见:docs/WEBTTY.md

Richline 交互终端(可选挂载)

若你的应用挂载了 cmds/richlinecmd,可通过以下方式进入交互终端:

app richline

当前 richline 界面支持:

  • 状态栏:IDLE / RUNNING / OUTPUT_SCROLL
  • 焦点提示:focus=INPUT / OUTPUT
  • 输出区滚动状态:显示 offset/rows
  • 快捷切换:Ctrl+O 在输入区与输出滚动区之间切换,并给出显式切换提示

MCP 集成

app mcp list
app mcp list --format text
app mcp serve --transport stdio

MCP 输入/输出协议、Schema 规则与排查建议见:docs/MCP.md

示例目录

  • example/demo:综合示例
  • example/echo:最小命令示例
  • example/env-test:环境变量示例
  • example/globalflags:全局标志示例
  • example/args-test:参数解析示例

开发与维护

许可证

本项目采用 MIT 许可证,详见 LICENSE

About

This is a simple command-line tool framework

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors