cli

package
v0.1.13 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2025 License: MIT Imports: 9 Imported by: 2

README

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

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

安装

go get github.com/Rehtt/Kit/cli

快速上手

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", "名字")
    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

支持的类型

原生类型: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()

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

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) *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) *bool

func BoolVar

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

func BoolVarShortLong added in v0.1.13

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

func Duration

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

func DurationShortLong added in v0.1.13

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

func DurationVar

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

func DurationVarShortLong added in v0.1.13

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

func Float64

func Float64(name string, value float64, usage string) *float64

func Float64ShortLong added in v0.1.13

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

func Float64Var

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

func Float64VarShortLong added in v0.1.13

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

func Func

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

func Int

func Int(name string, value int, usage string) *int

func Int64

func Int64(name string, value int64, usage string) *int64

func Int64ShortLong added in v0.1.13

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

func Int64Var

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

func Int64VarShortLong added in v0.1.13

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

func IntShortLong added in v0.1.13

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

func IntVar

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

func IntVarShortLong added in v0.1.13

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

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) *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)

func Run

func Run() error

func Set

func Set(name, value string) error

func String

func String(name string, value string, usage string) *string

func StringShortLong added in v0.1.13

func StringShortLong(short, long string, value string, usage string) *string

func StringVar

func StringVar(p *string, name string, value string, usage string)

func StringVarShortLong added in v0.1.13

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

func Strings added in v0.1.13

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

func StringsShortLong added in v0.1.13

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

func StringsVar added in v0.1.13

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

func StringsVarShortLong added in v0.1.13

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

func TextVar

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

func Uint

func Uint(name string, value uint, usage string) *uint

func Uint64

func Uint64(name string, value uint64, usage string) *uint64

func Uint64ShortLong added in v0.1.13

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

func Uint64Var

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

func Uint64VarShortLong added in v0.1.13

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

func UintShortLong added in v0.1.13

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

func UintVar

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

func UintVarShortLong added in v0.1.13

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

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         string
	Instruction string
	Usage       string
	CommandFunc CommandFunc
	*FlagSet
	SubCommands map[string]*CLI
}
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) 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 FlagSet added in v0.1.12

type FlagSet struct {
	*flag.FlagSet
	// contains filtered or unexported fields
}

func (*FlagSet) Alias added in v0.1.13

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

Alias 为已存在的 flag 添加别名

func (*FlagSet) BoolShortLong added in v0.1.13

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

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

func (*FlagSet) BoolVarShortLong added in v0.1.13

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

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

func (*FlagSet) DurationShortLong added in v0.1.13

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

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

func (*FlagSet) DurationVarShortLong added in v0.1.13

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

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

func (*FlagSet) Float64ShortLong added in v0.1.13

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

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

func (*FlagSet) Float64VarShortLong added in v0.1.13

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

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

func (*FlagSet) Int64ShortLong added in v0.1.13

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

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

func (*FlagSet) Int64VarShortLong added in v0.1.13

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

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

func (*FlagSet) IntShortLong added in v0.1.13

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

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

func (*FlagSet) IntVarShortLong added in v0.1.13

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

IntVarShortLong 定义一个带短名和长名的 int 类型 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) *string

PasswordStringShortLong 定义并返回一个带短名和长名的密码字符串类型 flag 指针

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)

PasswordStringVarShortLong 定义一个带短名和长名的密码字符串类型 flag

func (*FlagSet) PrintDefaults added in v0.1.13

func (f *FlagSet) PrintDefaults()

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

func (*FlagSet) StringShortLong added in v0.1.13

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

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

func (*FlagSet) StringVarShortLong added in v0.1.13

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

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

func (*FlagSet) Strings added in v0.1.13

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

Strings 定义并返回一个字符串切片类型 flag 指针

func (*FlagSet) StringsShortLong added in v0.1.13

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

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

func (*FlagSet) StringsVar added in v0.1.13

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

StringsVar 定义一个字符串切片类型 flag

func (*FlagSet) StringsVarShortLong added in v0.1.13

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

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

func (*FlagSet) Uint64ShortLong added in v0.1.13

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

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

func (*FlagSet) Uint64VarShortLong added in v0.1.13

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

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

func (*FlagSet) UintShortLong added in v0.1.13

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

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

func (*FlagSet) UintVarShortLong added in v0.1.13

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

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

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

Jump to

Keyboard shortcuts

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