flagx

package
v0.0.0-...-1b4d16b Latest Latest
Warning

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

Go to latest
Published: Jul 22, 2026 License: CC0-1.0 Imports: 14 Imported by: 0

Documentation

Overview

Example
package main

import (
	"fmt"

	"codeberg.org/ungo/untools/flagx"
)

func main() {
	fs := flagx.New("myapp")

	host := fs.String("host", "H", "localhost", "server host")
	port := fs.Int("port", "p", 8080, "server port")
	verbose := fs.Bool("verbose", "v", false, "enable verbose output")

	fs.AddExamples(map[string]string{
		"run server": "myapp --host 0.0.0.0 --port 9090",
	})

	err := fs.Parse([]string{"--host", "example.com", "-p", "3000", "--verbose"})
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	fmt.Println(*host)
	fmt.Println(*port)
	fmt.Println(*verbose)

}
Output:
example.com
3000
true

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CLI

type CLI struct {
	Root *Command
	// contains filtered or unexported fields
}
Example
package main

import (
	"fmt"

	"codeberg.org/ungo/untools/flagx"
)

func main() {
	cli := flagx.NewCLI("app")

	serveCmd := &flagx.Command{
		Name:        "serve",
		Description: "start the server",
		Flags:       flagx.New("serve"),
		Run: func(args []string) error {
			fmt.Println("server started")
			return nil
		},
	}
	serveCmd.Flags.String("port", "p", "8080", "listen port")

	cli.AddCommand(serveCmd)
	cli.Run([]string{"serve", "--port", "9090"})

}
Output:
server started

func NewCLI

func NewCLI(name string) *CLI

func (*CLI) AddCommand

func (cli *CLI) AddCommand(cmd *Command)

func (*CLI) GlobalFlags

func (cli *CLI) GlobalFlags() *FlagSet

func (*CLI) Help

func (cli *CLI) Help() string

func (*CLI) Parse

func (cli *CLI) Parse(args []string) error

func (*CLI) Run

func (cli *CLI) Run(args []string) error

type Command

type Command struct {
	Name        string
	Description string
	Flags       *FlagSet
	Subcommands []*Command
	Run         func(args []string) error
	Aliases     []string
}

type FlagMeta

type FlagMeta struct {
	Shorthand   string
	Usage       string
	Default     string
	EnvVars     []string
	Validators  []func(string) error
	Group       string
	Deprecated  bool
	Deprecation string
	Hidden      bool
	Aliases     []string
	Suggestions []string
	CompleteFn  func() []string
}

type FlagSet

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

func New

func New(name string) *FlagSet

func (*FlagSet) AddExamples

func (fs *FlagSet) AddExamples(examples map[string]string)

func (*FlagSet) Alias

func (fs *FlagSet) Alias(flag, alias string)

func (*FlagSet) AutoBindEnv

func (fs *FlagSet) AutoBindEnv()

func (*FlagSet) BindEnv

func (fs *FlagSet) BindEnv(name, envVar string)
Example
package main

import (
	"fmt"

	"codeberg.org/ungo/untools/flagx"
)

func main() {
	fs := flagx.New("app")
	fs.String("db-host", "", "localhost", "database host")
	fs.BindEnv("db-host", "DB_HOST")
	fmt.Println(fs.IsSet("db-host"))
}
Output:
false

func (*FlagSet) Bool

func (fs *FlagSet) Bool(name, shorthand string, value bool, usage string) *bool

func (*FlagSet) BoolSlice

func (fs *FlagSet) BoolSlice(name, shorthand string, usage string) *[]bool

func (*FlagSet) Completion

func (fs *FlagSet) Completion(shell string) string

func (*FlagSet) Custom

func (fs *FlagSet) Custom(name string, fn func(string) error)

func (*FlagSet) Deprecate

func (fs *FlagSet) Deprecate(flag, message string)

func (*FlagSet) Dir

func (fs *FlagSet) Dir(name, shorthand, value, usage string) *string

func (*FlagSet) DirExists

func (fs *FlagSet) DirExists(name string)

func (*FlagSet) Duration

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

func (*FlagSet) Email

func (fs *FlagSet) Email(name string)

func (*FlagSet) Enum

func (fs *FlagSet) Enum(name, shorthand, value string, allowed []string, usage string) *string

func (*FlagSet) File

func (fs *FlagSet) File(name, shorthand, value, usage string) *string

func (*FlagSet) FileExists

func (fs *FlagSet) FileExists(name string)

func (*FlagSet) FlagGroup

func (fs *FlagSet) FlagGroup(name string) []string

func (*FlagSet) Float64

func (fs *FlagSet) Float64(name, shorthand string, value float64, usage string) *float64

func (*FlagSet) Group

func (fs *FlagSet) Group(name string, flags ...string)
Example
package main

import (
	"fmt"

	"codeberg.org/ungo/untools/flagx"
)

func main() {
	fs := flagx.New("app")
	fs.String("host", "H", "localhost", "server host")
	fs.Int("port", "p", 8080, "server port")
	fs.Bool("verbose", "v", false, "verbose output")
	fs.Group("Server", "host", "port")

	fmt.Println(fs.FlagGroup("Server"))
}
Output:
[host port]

func (*FlagSet) Groups

func (fs *FlagSet) Groups() []string

func (*FlagSet) Help

func (fs *FlagSet) Help() string

func (*FlagSet) HelpColor

func (fs *FlagSet) HelpColor() string

func (*FlagSet) Hidden

func (fs *FlagSet) Hidden(names ...string)

func (*FlagSet) IP

func (fs *FlagSet) IP(name string)

func (*FlagSet) Int

func (fs *FlagSet) Int(name, shorthand string, value int, usage string) *int

func (*FlagSet) Int64

func (fs *FlagSet) Int64(name, shorthand string, value int64, usage string) *int64

func (*FlagSet) IntSlice

func (fs *FlagSet) IntSlice(name, shorthand string, usage string) *[]int

func (*FlagSet) IsSet

func (fs *FlagSet) IsSet(name string) bool

func (*FlagSet) LoadConfig

func (fs *FlagSet) LoadConfig(path string) error

func (*FlagSet) LoadConfigAuto

func (fs *FlagSet) LoadConfigAuto() error

func (*FlagSet) MapString

func (fs *FlagSet) MapString(name, shorthand string, usage string) *map[string]string

func (*FlagSet) Markdown

func (fs *FlagSet) Markdown() string

func (*FlagSet) Max

func (fs *FlagSet) Max(name string, max int)

func (*FlagSet) MaxLength

func (fs *FlagSet) MaxLength(name string, n int)

func (*FlagSet) Min

func (fs *FlagSet) Min(name string, min int)

func (*FlagSet) MinLength

func (fs *FlagSet) MinLength(name string, n int)

func (*FlagSet) Mutex

func (fs *FlagSet) Mutex(name string, flags ...string)
Example
package main

import (
	"fmt"

	"codeberg.org/ungo/untools/flagx"
)

func main() {
	fs := flagx.New("app")
	fs.Bool("json", "", false, "output as json")
	fs.Bool("yaml", "", false, "output as yaml")
	fs.Mutex("format", "json", "yaml")

	err := fs.Parse([]string{"--json", "--yaml"})
	fmt.Println(err != nil)
}
Output:
true

func (*FlagSet) Name

func (fs *FlagSet) Name() string

func (*FlagSet) OneOf

func (fs *FlagSet) OneOf(name string, values ...string)

func (*FlagSet) Parse

func (fs *FlagSet) Parse(args []string) error

func (*FlagSet) ParseArgs

func (fs *FlagSet) ParseArgs(args []string) error

func (*FlagSet) Parsed

func (fs *FlagSet) Parsed() bool

func (*FlagSet) Pattern

func (fs *FlagSet) Pattern(name, pattern string)

func (*FlagSet) Port

func (fs *FlagSet) Port(name string)

func (*FlagSet) PrintHelp

func (fs *FlagSet) PrintHelp()

func (*FlagSet) Regexp

func (fs *FlagSet) Regexp(name, shorthand string, value *regexp.Regexp, usage string) *regexp.Regexp

func (*FlagSet) Required

func (fs *FlagSet) Required(name string)
Example
package main

import (
	"fmt"

	"codeberg.org/ungo/untools/flagx"
)

func main() {
	fs := flagx.New("app")
	fs.String("name", "n", "", "your name")
	fs.Required("name")

	err := fs.Parse(nil)
	fmt.Println(err != nil)
}
Output:
true

func (*FlagSet) SaveConfig

func (fs *FlagSet) SaveConfig(path string) error

func (*FlagSet) SetCalled

func (fs *FlagSet) SetCalled(fn func(name string))

func (*FlagSet) SetCompletion

func (fs *FlagSet) SetCompletion(name string, fn func() []string)

func (*FlagSet) SetOutput

func (fs *FlagSet) SetOutput(w io.Writer)

func (*FlagSet) SetSuggestions

func (fs *FlagSet) SetSuggestions(name string, suggestions []string)

func (*FlagSet) String

func (fs *FlagSet) String(name, shorthand, value, usage string) *string

func (*FlagSet) StringSlice

func (fs *FlagSet) StringSlice(name, shorthand string, usage string) *[]string

func (*FlagSet) Time

func (fs *FlagSet) Time(name, shorthand string, value time.Time, layout, usage string) *time.Time

func (*FlagSet) URL

func (fs *FlagSet) URL(name, shorthand, value, usage string) *url.URL

func (*FlagSet) URLFlag

func (fs *FlagSet) URLFlag(name string)

func (*FlagSet) Uint

func (fs *FlagSet) Uint(name, shorthand string, value uint, usage string) *uint

func (*FlagSet) Unset

func (fs *FlagSet) Unset(name string)

func (*FlagSet) Var

func (fs *FlagSet) Var(name, shorthand string, value flag.Value, usage string)

func (*FlagSet) Version

func (fs *FlagSet) Version(version, sha, date string)

func (*FlagSet) WriteHelp

func (fs *FlagSet) WriteHelp(w *os.File)

Jump to

Keyboard shortcuts

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