cli

package
v0.1.18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 11, 2025 License: MIT Imports: 12 Imported by: 2

README

cli —— 轻量级命令行工具集合

基于 Go 标准库 flag 的薄封装,提供子命令组织、长短参数支持和友好的帮助信息。

快速上手

package main

import (
    "fmt"
    "os"
    cli "github.com/Rehtt/Kit/cli"
)

func main() {
    // 创建根命令
    root := cli.NewCLI("app", "示例应用")
    root.Usage = "[flags] [command]"
    
    // 定义参数
    var verbose bool
    root.BoolVar(&verbose, "v", false, "详细输出")

    // 子命令
    hello := cli.NewCLI("hello", "打印问候语")
    hello.Usage = "[flags]"
    name := hello.String("name", "world", "名字")
    // 参数示例
    env := hello.String("env", "dev", "环境", cli.NewFlagItemSelectString("dev", "prod"))
    hello.CommandFunc = func(args []string) error {
        if verbose {
            fmt.Println("verbose mode")
        }
        fmt.Printf("Hello, %s\n", *name)
        return nil
    }

    // 添加子命令
    _ = root.AddCommand(hello)

    // 运行
    if err := root.Run(os.Args[1:]); err != nil {
        fmt.Fprintf(os.Stderr, "Error: %v\n", err)
        os.Exit(2)
    }
}

长短参数支持

方式一:使用别名

var config string
root.StringVar(&config, "config", "", "配置文件")
root.Alias("c", "config")  // -c 作为 --config 的别名

方式二:ShortLong 方法

var host string
var port int
var verbose bool

root.StringVarShortLong(&host, "h", "host", "localhost", "监听地址")
root.IntVarShortLong(&port, "p", "port", 8080, "监听端口")
root.BoolVarShortLong(&verbose, "v", "verbose", false, "详细输出")

支持混合使用:app -h 127.0.0.1 --port 9000 -v

组合短 Flag

支持将多个短 flag 组合在一起(Unix 风格):

app -vh 127.0.0.1 --port 9000    # -v -h 127.0.0.1

规则

  • 组合中的 flag(除最后一个)必须为布尔类型
  • 最后一个可以是任意类型

示例

  • -abc-a -b -c (三个布尔flag)
  • -abf value-a -b -f value (前两个布尔,最后一个需要值)

内联值支持

当遇到需要值的 flag 时,后面的字符可以直接作为该 flag 的值:

# -c123 等同于 -c 123
app -c123

# -abcasd 等同于 -a -b -c asd
# (其中 a 和 b 是布尔类型,c 需要值)
app -abcasd

参考实际应用示例

gcc -O2 main.c           # 优化级别为 2
gcc -vWO3 -oapp main.c   # 详细输出 + 警告 + 优化级别3 + 输出文件
tar -cvf archive.tar .   # 创建 + 详细 + 文件名

支持的类型

原生类型:String, Int, Int64, Uint, Uint64, Float64, Duration, Bool

扩展类型:Strings(字符串切片), PasswordString(密码类型)

核心 API

  • NewCLI(use, instruction string) *CLI - 创建命令
  • AddCommand(cli ...*CLI) error - 添加子命令
  • Run(arguments []string) error - 解析并执行
  • Alias(alias, original string) - 添加参数别名

全局实例

// 使用全局 CommandLine 实例
verbose := cli.Bool("v", false, "详细输出")
hello := cli.NewCLI("hello", "问候")
cli.AddCommand(hello)
cli.Run()

终端补全功能

提供两种补全方案,支持 Bash、Zsh、Fish。

方案对比

特性 动态补全 (completion) 静态补全 (completion_gen)
实现方式 程序运行时生成 静态脚本
自定义补全 ✅ 支持复杂逻辑 ❌ 仅支持基础类型
运行时开销 每次补全调用程序 纯脚本,无开销
动态数据 ✅ 可查询实时数据 ❌ 固定选项
维护成本 代码变更需重新安装 代码变更需重新生成
适用场景 需要动态数据/复杂逻辑 简单命令行工具

方案一:动态补全 (completion)

适合:需要自定义补全逻辑、查询动态数据(如 Git 分支、数据库列表等)

import "github.com/Rehtt/Kit/cli/completion"

root := cli.NewCLI("myapp", "我的应用")

// FlagItem 自动生成补全
root.StringVarShortLong(&config, "c", "config", "", "配置文件",
    cli.NewFlagItemFile())
root.StringVarShortLong(&env, "e", "env", "dev", "环境",
    cli.NewFlagItemSelectString("dev", "prod"))

// 创建补全管理器
cm := completion.New(root)

// 可选:自定义补全逻辑(支持动态数据)
cm.RegisterCustomCompletion(root, "branch", func(toComplete string) []string {
    return getGitBranches() // 实时查询 Git 分支
})

// 添加 completion 子命令
comp := cli.NewCLI("completion", "生成补全脚本")
comp.CommandFunc = func(args []string) error {
    if len(args) == 0 {
        return fmt.Errorf("用法: myapp completion [bash|zsh|fish]")
    }
    return cm.GenerateCompletion(args[0])
}
root.AddCommand(comp)

安装

# 生成并安装(脚本会回调程序获取补全)
myapp completion bash | sudo tee /etc/bash_completion.d/myapp
myapp completion zsh > "${fpath[1]}/_myapp"
myapp completion fish > ~/.config/fish/completions/myapp.fish

详见completion/README.md


方案二:静态补全 (completion_gen)

适合:简单工具、追求性能、无需动态数据

使用 completion_gen 工具从源码生成纯脚本补全文件:

# 安装工具
go install github.com/Rehtt/Kit/cli/completion_gen@latest

# 生成补全脚本(解析源码,一次生成)
./completion_gen -s bash -n myapp /path/to/project > myapp.bash
./completion_gen -s zsh -n myapp /path/to/project > _myapp
./completion_gen -s fish -n myapp /path/to/project > myapp.fish

# 安装
sudo cp myapp.bash /etc/bash_completion.d/
cp _myapp "${fpath[1]}/"
cp myapp.fish ~/.config/fish/completions/

优点

  • ✅ 纯脚本,补全速度极快
  • ✅ 自动识别 FlagItem 类型(文件/目录/选项)
  • ✅ 无需在程序中添加 completion 命令

限制

  • ❌ 不支持运行时动态补全
  • ❌ 代码变更后需重新生成脚本

详见completion_gen/README.md

Documentation

Index

Constants

View Source
const (
	// CommandSortAdded 表示按照添加顺序排序命令
	CommandSortAdded commandSort = iota
	// CommandSortAlphaAsc 表示按照字母升序排序命令
	CommandSortAlphaAsc
	// CommandSortAlphaDesc 表示按照字母降序排序命令
	CommandSortAlphaDesc
)

Variables

View Source
var SingleLongFlagError = "flag -%s is a long flag, use --%s instead"

Functions

func AddCommand

func AddCommand(cli ...*CLI) error

func Alias added in v0.1.13

func Alias(alias, original string)

func Args

func Args() []string

func Bool

func Bool(name string, value bool, usage string, item ...FlagItem) *bool

func BoolFunc

func BoolFunc(name, usage string, fn func(string) error)

func BoolShortLong added in v0.1.13

func BoolShortLong(short, long string, value bool, usage string, item ...FlagItem) *bool

func BoolVar

func BoolVar(p *bool, name string, value bool, usage string, item ...FlagItem)

func BoolVarShortLong added in v0.1.13

func BoolVarShortLong(p *bool, short, long string, value bool, usage string, item ...FlagItem)

func Duration

func Duration(name string, value time.Duration, usage string, item ...FlagItem) *time.Duration

func DurationShortLong added in v0.1.13

func DurationShortLong(short, long string, value time.Duration, usage string, item ...FlagItem) *time.Duration

func DurationVar

func DurationVar(p *time.Duration, name string, value time.Duration, usage string, item ...FlagItem)

func DurationVarShortLong added in v0.1.13

func DurationVarShortLong(p *time.Duration, short, long string, value time.Duration, usage string, item ...FlagItem)

func Float64

func Float64(name string, value float64, usage string, item ...FlagItem) *float64

func Float64ShortLong added in v0.1.13

func Float64ShortLong(short, long string, value float64, usage string, item ...FlagItem) *float64

func Float64Var

func Float64Var(p *float64, name string, value float64, usage string, item ...FlagItem)

func Float64VarShortLong added in v0.1.13

func Float64VarShortLong(p *float64, short, long string, value float64, usage string, item ...FlagItem)

func Func

func Func(name, usage string, fn func(string) error)

func Int

func Int(name string, value int, usage string, item ...FlagItem) *int

func Int64

func Int64(name string, value int64, usage string, item ...FlagItem) *int64

func Int64ShortLong added in v0.1.13

func Int64ShortLong(short, long string, value int64, usage string, item ...FlagItem) *int64

func Int64Var

func Int64Var(p *int64, name string, value int64, usage string, item ...FlagItem)

func Int64VarShortLong added in v0.1.13

func Int64VarShortLong(p *int64, short, long string, value int64, usage string, item ...FlagItem)

func IntShortLong added in v0.1.13

func IntShortLong(short, long string, value int, usage string, item ...FlagItem) *int

func IntVar

func IntVar(p *int, name string, value int, usage string, item ...FlagItem)

func IntVarShortLong added in v0.1.13

func IntVarShortLong(p *int, short, long string, value int, usage string, item ...FlagItem)

func Lookup

func Lookup(name string) *flag.Flag

func NArg

func NArg() int

func Parse

func Parse() error

func Parsed

func Parsed() bool

func PasswordString added in v0.1.12

func PasswordString(name string, value string, usage string, showNum ...int) *string

func PasswordStringShortLong added in v0.1.13

func PasswordStringShortLong(short, long string, value string, usage string, showNum int, item ...FlagItem) *string

func PasswordStringVar added in v0.1.12

func PasswordStringVar(p *string, name string, value string, usage string, showNum ...int)

func PasswordStringVarShortLong added in v0.1.13

func PasswordStringVarShortLong(p *string, short, long string, value string, usage string, showNum int, item ...FlagItem)

func Run

func Run() error

func Set

func Set(name, value string) error

func String

func String(name string, value string, usage string, item ...FlagItem) *string

func StringShortLong added in v0.1.13

func StringShortLong(short, long string, value string, usage string, item ...FlagItem) *string

func StringVar

func StringVar(p *string, name string, value string, usage string, item ...FlagItem)

func StringVarShortLong added in v0.1.13

func StringVarShortLong(p *string, short, long string, value string, usage string, item ...FlagItem)

func Strings added in v0.1.13

func Strings(name string, value []string, usage string, item ...FlagItem) *[]string

func StringsShortLong added in v0.1.13

func StringsShortLong(short, long string, value []string, usage string, item ...FlagItem) *[]string

func StringsVar added in v0.1.13

func StringsVar(p *[]string, name string, value []string, usage string, item ...FlagItem)

func StringsVarShortLong added in v0.1.13

func StringsVarShortLong(p *[]string, short, long string, value []string, usage string, item ...FlagItem)

func TextVar

func TextVar(p encoding.TextUnmarshaler, name string, value encoding.TextMarshaler, usage string)

func Uint

func Uint(name string, value uint, usage string, item ...FlagItem) *uint

func Uint64

func Uint64(name string, value uint64, usage string, item ...FlagItem) *uint64

func Uint64ShortLong added in v0.1.13

func Uint64ShortLong(short, long string, value uint64, usage string, item ...FlagItem) *uint64

func Uint64Var

func Uint64Var(p *uint64, name string, value uint64, usage string, item ...FlagItem)

func Uint64VarShortLong added in v0.1.13

func Uint64VarShortLong(p *uint64, short, long string, value uint64, usage string, item ...FlagItem)

func UintShortLong added in v0.1.13

func UintShortLong(short, long string, value uint, usage string, item ...FlagItem) *uint

func UintVar

func UintVar(p *uint, name string, value uint, usage string, item ...FlagItem)

func UintVarShortLong added in v0.1.13

func UintVarShortLong(p *uint, short, long string, value uint, usage string, item ...FlagItem)

func Var

func Var(p flag.Value, name string, usage string)

func Visit

func Visit(fn func(*flag.Flag))

func VisitAll

func VisitAll(fn func(*flag.Flag))

Types

type CLI

type CLI struct {
	// Use 是命令的名称
	Use string
	// Instruction 是命令被调用时显示的说明信息
	Instruction string
	// Usage 是在没有参数时显示的用法信息
	Usage string
	// CommandFunc 是该命令被调用时执行的函数
	CommandFunc CommandFunc
	*FlagSet
	SubCommands *SubCommands
	// Hidden 表示该命令在帮助中不显示
	Hidden bool
	// Raw 表示该命令不被解析
	Raw bool
}
var CommandLine *CLI

func NewCLI

func NewCLI(use, instruction string) *CLI

func (*CLI) AddCommand

func (c *CLI) AddCommand(cli ...*CLI) error

func (*CLI) Help

func (c *CLI) Help()

func (*CLI) IsCompleteFlag added in v0.1.14

func (c *CLI) IsCompleteFlag(arg string) bool

IsCompleteFlag 检查给定的字符串是否是一个完整的参数名

func (*CLI) IsCompleteFlagInContext added in v0.1.14

func (c *CLI) IsCompleteFlagInContext(arg string, args []string) bool

IsCompleteFlagInContext 在给定上下文中检查参数是否完整

func (*CLI) OutputErrHelp added in v0.1.15

func (c *CLI) OutputErrHelp(err error)

func (*CLI) Parse

func (c *CLI) Parse(arguments []string) error

func (*CLI) Run

func (c *CLI) Run(arguments []string) error

type CommandFunc

type CommandFunc func(args []string) error

type FlagItem added in v0.1.14

type FlagItem struct {
	Type  FlagType
	Nodes []FlagItemNode
}

func NewFlagItemDir added in v0.1.14

func NewFlagItemDir() FlagItem

func NewFlagItemFile added in v0.1.14

func NewFlagItemFile() FlagItem

func NewFlagItemSelect added in v0.1.14

func NewFlagItemSelect(nodes ...FlagItemNode) FlagItem

func NewFlagItemSelectString added in v0.1.14

func NewFlagItemSelectString(value ...string) FlagItem

func (FlagItem) String added in v0.1.14

func (f FlagItem) String() string

type FlagItemNode added in v0.1.14

type FlagItemNode struct {
	Value       string
	Description string
}

func NewFlagItemNode added in v0.1.14

func NewFlagItemNode(value string, description string) FlagItemNode

type FlagSet added in v0.1.12

type FlagSet struct {
	*flag.FlagSet
	ShortLongMap map[string]*ShortLongValue // 跟踪短长名关系
	Item         map[*ShortLongValue]FlagItem
}

func (*FlagSet) Alias added in v0.1.13

func (f *FlagSet) Alias(alias, original string)

Alias 为已存在的 flag 添加别名

func (*FlagSet) Bool added in v0.1.14

func (f *FlagSet) Bool(name string, value bool, usage string, item ...FlagItem) *bool

Bool 定义并返回一个 bool 类型 flag 指针 (支持 FlagItem)

func (*FlagSet) BoolShortLong added in v0.1.13

func (f *FlagSet) BoolShortLong(short, long string, value bool, usage string, item ...FlagItem) *bool

BoolShortLong 定义并返回一个带短名和长名的 bool 类型 flag 指针

func (*FlagSet) BoolVar added in v0.1.14

func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string, item ...FlagItem)

BoolVar 定义一个 bool 类型 flag (支持 FlagItem)

func (*FlagSet) BoolVarShortLong added in v0.1.13

func (f *FlagSet) BoolVarShortLong(p *bool, short, long string, value bool, usage string, item ...FlagItem)

BoolVarShortLong 定义一个带短名和长名的 bool 类型 flag

func (*FlagSet) Duration added in v0.1.14

func (f *FlagSet) Duration(name string, value time.Duration, usage string, item ...FlagItem) *time.Duration

Duration 定义并返回一个 time.Duration 类型 flag 指针 (支持 FlagItem)

func (*FlagSet) DurationShortLong added in v0.1.13

func (f *FlagSet) DurationShortLong(short, long string, value time.Duration, usage string, item ...FlagItem) *time.Duration

DurationShortLong 定义并返回一个带短名和长名的 time.Duration 类型 flag 指针

func (*FlagSet) DurationVar added in v0.1.14

func (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string, item ...FlagItem)

DurationVar 定义一个 time.Duration 类型 flag (支持 FlagItem)

func (*FlagSet) DurationVarShortLong added in v0.1.13

func (f *FlagSet) DurationVarShortLong(p *time.Duration, short, long string, value time.Duration, usage string, item ...FlagItem)

DurationVarShortLong 定义一个带短名和长名的 time.Duration 类型 flag

func (*FlagSet) Float64 added in v0.1.14

func (f *FlagSet) Float64(name string, value float64, usage string, item ...FlagItem) *float64

Float64 定义并返回一个 float64 类型 flag 指针 (支持 FlagItem)

func (*FlagSet) Float64ShortLong added in v0.1.13

func (f *FlagSet) Float64ShortLong(short, long string, value float64, usage string, item ...FlagItem) *float64

Float64ShortLong 定义并返回一个带短名和长名的 float64 类型 flag 指针

func (*FlagSet) Float64Var added in v0.1.14

func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string, item ...FlagItem)

Float64Var 定义一个 float64 类型 flag (支持 FlagItem)

func (*FlagSet) Float64VarShortLong added in v0.1.13

func (f *FlagSet) Float64VarShortLong(p *float64, short, long string, value float64, usage string, item ...FlagItem)

Float64VarShortLong 定义一个带短名和长名的 float64 类型 flag

func (*FlagSet) Int added in v0.1.14

func (f *FlagSet) Int(name string, value int, usage string, item ...FlagItem) *int

Int 定义并返回一个 int 类型 flag 指针 (支持 FlagItem)

func (*FlagSet) Int64 added in v0.1.14

func (f *FlagSet) Int64(name string, value int64, usage string, item ...FlagItem) *int64

Int64 定义并返回一个 int64 类型 flag 指针 (支持 FlagItem)

func (*FlagSet) Int64ShortLong added in v0.1.13

func (f *FlagSet) Int64ShortLong(short, long string, value int64, usage string, item ...FlagItem) *int64

Int64ShortLong 定义并返回一个带短名和长名的 int64 类型 flag 指针

func (*FlagSet) Int64Var added in v0.1.14

func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string, item ...FlagItem)

Int64Var 定义一个 int64 类型 flag (支持 FlagItem)

func (*FlagSet) Int64VarShortLong added in v0.1.13

func (f *FlagSet) Int64VarShortLong(p *int64, short, long string, value int64, usage string, item ...FlagItem)

Int64VarShortLong 定义一个带短名和长名的 int64 类型 flag

func (*FlagSet) IntShortLong added in v0.1.13

func (f *FlagSet) IntShortLong(short, long string, value int, usage string, item ...FlagItem) *int

IntShortLong 定义并返回一个带短名和长名的 int 类型 flag 指针

func (*FlagSet) IntVar added in v0.1.14

func (f *FlagSet) IntVar(p *int, name string, value int, usage string, item ...FlagItem)

IntVar 定义一个 int 类型 flag (支持 FlagItem)

func (*FlagSet) IntVarShortLong added in v0.1.13

func (f *FlagSet) IntVarShortLong(p *int, short, long string, value int, usage string, item ...FlagItem)

IntVarShortLong 定义一个带短名和长名的 int 类型 flag

func (*FlagSet) Parse added in v0.1.14

func (f *FlagSet) Parse(arguments []string) error

Parse 重写 Parse 方法以支持组合的短 flag

func (*FlagSet) PasswordString added in v0.1.12

func (f *FlagSet) PasswordString(name string, value string, usage string, showNum ...int) *string

PasswordString 定义并返回一个密码字符串类型 flag 指针

func (*FlagSet) PasswordStringShortLong added in v0.1.13

func (f *FlagSet) PasswordStringShortLong(short, long string, value string, usage string, showNum int, item ...FlagItem) *string

PasswordStringShortLong 定义并返回一个带短名和长名的密码字符串类型 flag 指针 showNum: 0 表示*数量与 value 一致

func (*FlagSet) PasswordStringVar added in v0.1.12

func (f *FlagSet) PasswordStringVar(p *string, name string, value string, usage string, showNum ...int)

PasswordStringVar 定义一个密码字符串类型 flag,在帮助信息中密码值会被隐藏

func (*FlagSet) PasswordStringVarShortLong added in v0.1.13

func (f *FlagSet) PasswordStringVarShortLong(p *string, short, long string, value string, usage string, showNum int, item ...FlagItem)

PasswordStringVarShortLong 定义一个带短名和长名的密码字符串类型 flag showNum: 0 表示*数量与 value 一致

func (*FlagSet) PrintDefaults added in v0.1.13

func (f *FlagSet) PrintDefaults()

PrintDefaults 自定义帮助信息显示,将短长名合并显示

func (*FlagSet) String added in v0.1.14

func (f *FlagSet) String(name string, value string, usage string, item ...FlagItem) *string

String 定义并返回一个 string 类型 flag 指针 (支持 FlagItem)

func (*FlagSet) StringShortLong added in v0.1.13

func (f *FlagSet) StringShortLong(short, long string, value string, usage string, item ...FlagItem) *string

StringShortLong 定义并返回一个带短名和长名的 string 类型 flag 指针

func (*FlagSet) StringVar added in v0.1.14

func (f *FlagSet) StringVar(p *string, name string, value string, usage string, item ...FlagItem)

StringVar 定义一个 string 类型 flag (支持 FlagItem)

func (*FlagSet) StringVarShortLong added in v0.1.13

func (f *FlagSet) StringVarShortLong(p *string, short, long string, value string, usage string, item ...FlagItem)

StringVarShortLong 定义一个带短名和长名的 string 类型 flag

func (*FlagSet) Strings added in v0.1.13

func (f *FlagSet) Strings(name string, value []string, usage string, item ...FlagItem) *[]string

Strings 定义并返回一个字符串切片类型 flag 指针 (支持 FlagItem)

func (*FlagSet) StringsShortLong added in v0.1.13

func (f *FlagSet) StringsShortLong(short, long string, value []string, usage string, item ...FlagItem) *[]string

StringsShortLong 定义并返回一个带短名和长名的字符串切片类型 flag 指针

func (*FlagSet) StringsVar added in v0.1.13

func (f *FlagSet) StringsVar(p *[]string, name string, value []string, usage string, item ...FlagItem)

StringsVar 定义一个字符串切片类型 flag (支持 FlagItem)

func (*FlagSet) StringsVarShortLong added in v0.1.13

func (f *FlagSet) StringsVarShortLong(p *[]string, short, long string, value []string, usage string, item ...FlagItem)

StringsVarShortLong 定义一个带短名和长名的字符串切片类型 flag

func (*FlagSet) Uint added in v0.1.14

func (f *FlagSet) Uint(name string, value uint, usage string, item ...FlagItem) *uint

Uint 定义并返回一个 uint 类型 flag 指针 (支持 FlagItem)

func (*FlagSet) Uint64 added in v0.1.14

func (f *FlagSet) Uint64(name string, value uint64, usage string, item ...FlagItem) *uint64

Uint64 定义并返回一个 uint64 类型 flag 指针 (支持 FlagItem)

func (*FlagSet) Uint64ShortLong added in v0.1.13

func (f *FlagSet) Uint64ShortLong(short, long string, value uint64, usage string, item ...FlagItem) *uint64

Uint64ShortLong 定义并返回一个带短名和长名的 uint64 类型 flag 指针

func (*FlagSet) Uint64Var added in v0.1.14

func (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage string, item ...FlagItem)

Uint64Var 定义一个 uint64 类型 flag (支持 FlagItem)

func (*FlagSet) Uint64VarShortLong added in v0.1.13

func (f *FlagSet) Uint64VarShortLong(p *uint64, short, long string, value uint64, usage string, item ...FlagItem)

Uint64VarShortLong 定义一个带短名和长名的 uint64 类型 flag

func (*FlagSet) UintShortLong added in v0.1.13

func (f *FlagSet) UintShortLong(short, long string, value uint, usage string, item ...FlagItem) *uint

UintShortLong 定义并返回一个带短名和长名的 uint 类型 flag 指针

func (*FlagSet) UintVar added in v0.1.14

func (f *FlagSet) UintVar(p *uint, name string, value uint, usage string, item ...FlagItem)

UintVar 定义一个 uint 类型 flag (支持 FlagItem)

func (*FlagSet) UintVarShortLong added in v0.1.13

func (f *FlagSet) UintVarShortLong(p *uint, short, long string, value uint, usage string, item ...FlagItem)

UintVarShortLong 定义一个带短名和长名的 uint 类型 flag

type FlagType added in v0.1.14

type FlagType uint8
const (
	FlagItemSelect FlagType = iota
	FlagItemFile
	FlagItemDir
)

type PasswordValue added in v0.1.13

type PasswordValue struct {
	// contains filtered or unexported fields
}

func (*PasswordValue) Get added in v0.1.13

func (p *PasswordValue) Get() any

func (*PasswordValue) Set added in v0.1.13

func (p *PasswordValue) Set(s string) error

func (*PasswordValue) String added in v0.1.13

func (p *PasswordValue) String() string

type ShortLongValue added in v0.1.13

type ShortLongValue struct {
	Value     flag.Value
	ShortName string
	LongName  string
}

func (*ShortLongValue) Get added in v0.1.13

func (sl *ShortLongValue) Get() any

func (*ShortLongValue) GetNames added in v0.1.13

func (sl *ShortLongValue) GetNames() string

func (*ShortLongValue) Set added in v0.1.13

func (sl *ShortLongValue) Set(s string) error

func (*ShortLongValue) String added in v0.1.13

func (sl *ShortLongValue) String() string

type StringsValue added in v0.1.13

type StringsValue []string

func (*StringsValue) Get added in v0.1.13

func (s *StringsValue) Get() any

func (*StringsValue) Set added in v0.1.13

func (s *StringsValue) Set(value string) error

func (*StringsValue) String added in v0.1.13

func (s *StringsValue) String() string

type SubCommands added in v0.1.14

type SubCommands struct {
	// contains filtered or unexported fields
}

func (*SubCommands) Add added in v0.1.14

func (s *SubCommands) Add(cli ...*CLI) error

func (*SubCommands) CloneList added in v0.1.14

func (s *SubCommands) CloneList() []*CLI

func (*SubCommands) Get added in v0.1.14

func (s *SubCommands) Get(use string) *CLI

func (*SubCommands) GetSort added in v0.1.14

func (s *SubCommands) GetSort() commandSort

func (*SubCommands) Len added in v0.1.14

func (s *SubCommands) Len() int

func (*SubCommands) Range added in v0.1.14

func (s *SubCommands) Range(f func(cli *CLI) bool)

func (*SubCommands) SetSort added in v0.1.14

func (s *SubCommands) SetSort(sort commandSort)

Directories

Path Synopsis
completion_exec 是一个可执行的二进制工具,用于解析 Go 项目代码 它能识别使用 github.com/Rehtt/Kit/cli 注册的命令和 flag 并生成对应的 shell 补全脚本(支持 bash/zsh/fish)
completion_exec 是一个可执行的二进制工具,用于解析 Go 项目代码 它能识别使用 github.com/Rehtt/Kit/cli 注册的命令和 flag 并生成对应的 shell 补全脚本(支持 bash/zsh/fish)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL