cli

package module
v0.0.0-...-d18ac3d Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2024 License: MIT Imports: 16 Imported by: 5

README

go.cli

A command line interface framework.

pkg.go.dev GitHub Actions Appveyor Codecov

Installation

$ go get -u github.com/hattya/go.cli

Usage

package main

import (
	"os"

	"github.com/hattya/go.cli"
)

var app = cli.NewCLI()

func main() {
	app.Version = "1.0"
	app.Usage = "<options> hello"
	app.Add(&cli.Command{
		Name: []string{"hello"},
		Action: func(ctx *cli.Context) error {
			ctx.UI.Println("Hello World!")
			return nil
		},
	})

	if err := app.Run(os.Args[1:]); err != nil {
		if _, ok := err.(cli.FlagError); ok {
			os.Exit(2)
		}
		os.Exit(1)
	}
}

License

go.cli is distributed under the terms of the MIT License.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrCommand = errors.New("cli: command required")
	ErrFlags   = errors.New("cli: flag parsing is disabled")
	ErrArgs    = errors.New("invalid arguments")
)
View Source
var (
	Help    = ShowHelp
	Usage   = FormatUsage
	MetaVar = FormatMetaVar
)
View Source
var DefaultAction = Subcommand
View Source
var Version = ShowVersion

Functions

func Chain

func Chain(ctx *Context) error

func Dedent

func Dedent(s string) string

func ErrorHandler

func ErrorHandler(ctx *Context, err error) error

func FormatMetaVar

func FormatMetaVar(f *Flag) string

func FormatUsage

func FormatUsage(ctx *Context) []string

func FuncMap

func FuncMap() template.FuncMap

func ShowHelp

func ShowHelp(ctx *Context) error

func ShowVersion

func ShowVersion(ctx *Context) error

func Subcommand

func Subcommand(ctx *Context) error

Types

type Abort

type Abort struct {
	Err  error
	Hint string
}

func (Abort) Error

func (e Abort) Error() string

type Action

type Action func(*Context) error

func Option

func Option(action Action) Action

func Simple

func Simple(action Action) Action

type CLI

type CLI struct {
	Name    string
	Version string
	Usage   interface{}
	Desc    string
	Epilog  string
	Cmds    []*Command
	Flags   *FlagSet

	Prepare      func(*Context, *Command) error
	Action       Action
	ErrorHandler func(*Context, error) error

	Stdin  io.Reader
	Stdout io.Writer
	Stderr io.Writer
	// contains filtered or unexported fields
}

func NewCLI

func NewCLI() *CLI

func (*CLI) Add

func (ui *CLI) Add(cmd *Command)

func (*CLI) Context

func (ui *CLI) Context() context.Context

func (*CLI) Error

func (ui *CLI) Error(a ...interface{}) (int, error)

func (*CLI) Errorf

func (ui *CLI) Errorf(format string, a ...interface{}) (int, error)

func (*CLI) Errorln

func (ui *CLI) Errorln(a ...interface{}) (int, error)

func (*CLI) Interrupt

func (ui *CLI) Interrupt()

func (*CLI) Password

func (ui *CLI) Password(prompt string) (string, error)

func (*CLI) Print

func (ui *CLI) Print(a ...interface{}) (int, error)

func (*CLI) Printf

func (ui *CLI) Printf(format string, a ...interface{}) (int, error)

func (*CLI) Println

func (ui *CLI) Println(a ...interface{}) (int, error)

func (*CLI) Prompt

func (ui *CLI) Prompt(prompt string) (string, error)

func (*CLI) Run

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

func (*CLI) Title

func (ui *CLI) Title(title string) error

type Command

type Command struct {
	Name   []string
	Usage  interface{}
	Desc   string
	Epilog string
	Cmds   []*Command
	Flags  *FlagSet
	Action func(*Context) error
	Data   interface{}
}

func FindCommand

func FindCommand(cmds []*Command, name string) (cmd *Command, err error)

func NewHelpCommand

func NewHelpCommand() *Command

func NewVersionCommand

func NewVersionCommand() *Command

func (*Command) Add

func (c *Command) Add(cmd *Command)

func (*Command) Run

func (c *Command) Run(ctx *Context) error

type CommandError

type CommandError struct {
	Name string
	List []string
}

func (CommandError) Error

func (e CommandError) Error() string

type CommandSlice

type CommandSlice []*Command

func (CommandSlice) Len

func (p CommandSlice) Len() int

func (CommandSlice) Less

func (p CommandSlice) Less(i, j int) bool

func (CommandSlice) Sort

func (p CommandSlice) Sort()

func (CommandSlice) Swap

func (p CommandSlice) Swap(i, j int)

type Context

type Context struct {
	UI    *CLI
	Stack []*Command

	Cmds  []*Command
	Flags *FlagSet
	Args  []string
	Data  interface{}
}

func NewContext

func NewContext(ui *CLI) *Context

func (*Context) Bool

func (ctx *Context) Bool(name string) bool

func (*Context) Command

func (ctx *Context) Command() (cmd *Command, err error)

func (*Context) Context

func (ctx *Context) Context() context.Context

func (*Context) Duration

func (ctx *Context) Duration(name string) time.Duration

func (*Context) ErrorHandler

func (ctx *Context) ErrorHandler(err error) error

func (*Context) Float64

func (ctx *Context) Float64(name string) float64

func (*Context) Int

func (ctx *Context) Int(name string) int

func (*Context) Int64

func (ctx *Context) Int64(name string) int64

func (*Context) Interrupt

func (ctx *Context) Interrupt()

func (*Context) Name

func (ctx *Context) Name() string

func (*Context) Prepare

func (ctx *Context) Prepare(cmd *Command) error

func (*Context) String

func (ctx *Context) String(name string) string

func (*Context) Uint

func (ctx *Context) Uint(name string) uint

func (*Context) Uint64

func (ctx *Context) Uint64(name string) uint64

func (*Context) Value

func (ctx *Context) Value(name string) interface{}

type Flag

type Flag struct {
	Name    []string
	Usage   string
	Value   flag.Getter
	Default string
	MetaVar string
	EnvVar  string
}

func (*Flag) Format

func (f *Flag) Format(sep string) string

func (*Flag) IsBool

func (f *Flag) IsBool() bool

type FlagError

type FlagError string

func (FlagError) Error

func (e FlagError) Error() string

type FlagSet

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

func NewFlagSet

func NewFlagSet() *FlagSet

func (*FlagSet) Add

func (fs *FlagSet) Add(f *Flag)

func (*FlagSet) Arg

func (fs *FlagSet) Arg(i int) string

func (*FlagSet) Args

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

func (*FlagSet) Bool

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

func (*FlagSet) BoolEnv

func (fs *FlagSet) BoolEnv(envVar, name string, value bool, usage string) *Flag

func (*FlagSet) Choice

func (fs *FlagSet) Choice(name string, value interface{}, choices map[string]interface{}, usage string) *Flag

func (*FlagSet) ChoiceEnv

func (fs *FlagSet) ChoiceEnv(envVar, name string, value interface{}, choices map[string]interface{}, usage string) *Flag

func (*FlagSet) Duration

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

func (*FlagSet) DurationEnv

func (fs *FlagSet) DurationEnv(envVar, name string, value time.Duration, usage string) *Flag

func (*FlagSet) Float64

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

func (*FlagSet) Float64Env

func (fs *FlagSet) Float64Env(envVar, name string, value float64, usage string) *Flag

func (*FlagSet) Get

func (fs *FlagSet) Get(name string) interface{}

func (*FlagSet) Int

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

func (*FlagSet) Int64

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

func (*FlagSet) Int64Env

func (fs *FlagSet) Int64Env(envVar, name string, value int64, usage string) *Flag

func (*FlagSet) IntEnv

func (fs *FlagSet) IntEnv(envVar, name string, value int, usage string) *Flag

func (*FlagSet) Lookup

func (fs *FlagSet) Lookup(name string) *Flag

func (*FlagSet) MetaVar

func (fs *FlagSet) MetaVar(name, metaVar string) error

func (*FlagSet) NArg

func (fs *FlagSet) NArg() int

func (*FlagSet) NFlag

func (fs *FlagSet) NFlag() int

func (*FlagSet) Parse

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

func (*FlagSet) Parsed

func (fs *FlagSet) Parsed() bool

func (*FlagSet) PrefixChoice

func (fs *FlagSet) PrefixChoice(name string, value interface{}, choices map[string]interface{}, usage string) *Flag

func (*FlagSet) PrefixChoiceEnv

func (fs *FlagSet) PrefixChoiceEnv(envVar, name string, value interface{}, choices map[string]interface{}, usage string) *Flag

func (*FlagSet) Reset

func (fs *FlagSet) Reset()

func (*FlagSet) Set

func (fs *FlagSet) Set(name, value string) error

func (*FlagSet) String

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

func (*FlagSet) StringEnv

func (fs *FlagSet) StringEnv(envVar, name string, value string, usage string) *Flag

func (*FlagSet) Uint

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

func (*FlagSet) Uint64

func (fs *FlagSet) Uint64(name string, value uint64, usage string) *Flag

func (*FlagSet) Uint64Env

func (fs *FlagSet) Uint64Env(envVar, name string, value uint64, usage string) *Flag

func (*FlagSet) UintEnv

func (fs *FlagSet) UintEnv(envVar, name string, value uint, usage string) *Flag

func (*FlagSet) Var

func (fs *FlagSet) Var(name string, value flag.Getter, usage string) *Flag

func (*FlagSet) VarEnv

func (fs *FlagSet) VarEnv(envVar, name string, value flag.Getter, usage string) *Flag

func (*FlagSet) Visit

func (fs *FlagSet) Visit(fn func(*Flag))

func (*FlagSet) VisitAll

func (fs *FlagSet) VisitAll(fn func(*Flag))

type Interrupt

type Interrupt struct{}

func (Interrupt) Error

func (e Interrupt) Error() string

Jump to

Keyboard shortcuts

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