cli

package module
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Jan 13, 2022 License: MIT Imports: 9 Imported by: 0

README

cli

雑に cli をつくるための go ライブラリ

Example

package main

import (
	"fmt"
	"os"

	"github.com/thamaji/cli"
)

func main() {
	command := &cli.Command{
		Name:        "hoge",
		Description: "Hoge CLI",
		Version:     "v1.0.0",
		ArgsUsage:   "ID [ID...]",
		Options: []cli.Option{
			&cli.StringOption{
				Name:        "username",
				Short:       "u",
				Description: "set username",
			},
			&cli.StringOption{
				Name:        "password",
				Short:       "p",
				Description: "set password",
			},
		},
		Action: func(ctx *cli.Context) error {
			if len(ctx.Args()) < 1 {
				return ctx.ShowHelp(os.Stdout)
			}

			username, err := ctx.StringOrInput("username")
			if err != nil {
				return err
			}

			password, err := ctx.StringOrPassword("password")
			if err != nil {
				return err
			}

			fmt.Println("username", username)
			fmt.Println("password", password)

			for _, id := range ctx.Args() {
				fmt.Println(id)
			}

			return nil
		},
	}

	if err := command.Run(os.Args, cli.ShowHelp(os.Stdout)); err != nil {
		fmt.Fprintln(os.Stderr, err.Error())
		os.Exit(1)
	}
}
$ go run main.go --help
NAME:
  hoge - Hoge CLI

USAGE:
  hoge [OPTIONS] ID [ID...]

OPTIONS:
  -u,--username=string set username
  -p,--password=string set password
  -v,--version         show version
  -h,--help            show help

VERSION:
  v1.0.0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ReadInputBool

func ReadInputBool(msg string) (bool, error)

func ReadInputFloat32

func ReadInputFloat32(msg string) (float32, error)

func ReadInputFloat64

func ReadInputFloat64(msg string) (float64, error)

func ReadInputInt

func ReadInputInt(msg string) (int, error)

func ReadInputInt32

func ReadInputInt32(msg string) (int32, error)

func ReadInputInt64

func ReadInputInt64(msg string) (int64, error)

func ReadInputString

func ReadInputString(msg string) (string, error)

func ReadPasswordBool

func ReadPasswordBool(msg string) (bool, error)

func ReadPasswordFloat32

func ReadPasswordFloat32(msg string) (float32, error)

func ReadPasswordFloat64

func ReadPasswordFloat64(msg string) (float64, error)

func ReadPasswordInt

func ReadPasswordInt(msg string) (int, error)

func ReadPasswordInt32

func ReadPasswordInt32(msg string) (int32, error)

func ReadPasswordInt64

func ReadPasswordInt64(msg string) (int64, error)

func ReadPasswordString

func ReadPasswordString(msg string) (string, error)

func ShowHelp

func ShowHelp(out io.Writer) func(*Context) error

Types

type Author

type Author struct {
	Name  string
	Email string
}

type BoolOption

type BoolOption struct {
	Name        string
	Short       string
	Description string
	Usage       string
	ArgUsage    string
}

func (*BoolOption) Apply

func (option *BoolOption) Apply(options map[string]interface{}, args ...string) (int, error)

func (*BoolOption) Help

func (option *BoolOption) Help() [2]string

func (*BoolOption) Keywords

func (option *BoolOption) Keywords() []string

func (*BoolOption) SetDefaultValue

func (option *BoolOption) SetDefaultValue(options map[string]interface{})

type Command

type Command struct {
	Name        string
	Aliases     []string
	ArgsUsage   string
	Description string
	Options     []Option
	Commands    []*Command
	Action      func(*Context) error

	Copyright string
	Version   string
	NoHelp    bool
}

func (*Command) Run

func (command *Command) Run(args []string, defaultAction func(*Context) error) error

type Context

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

func (Context) Args

func (context Context) Args() []string

func (Context) Bool

func (context Context) Bool(name string) bool

func (Context) BoolOr

func (context Context) BoolOr(name string, value bool) bool

func (Context) BoolOrInput

func (context Context) BoolOrInput(name string) (bool, error)

func (Context) BoolOrPassword

func (context Context) BoolOrPassword(name string) (bool, error)

func (Context) Float32

func (context Context) Float32(name string) float32

func (Context) Float32Or

func (context Context) Float32Or(name string, value float32) float32

func (Context) Float32OrInput

func (context Context) Float32OrInput(name string) (float32, error)

func (Context) Float32OrPassword

func (context Context) Float32OrPassword(name string) (float32, error)

func (Context) Float64

func (context Context) Float64(name string) float64

func (Context) Float64Or

func (context Context) Float64Or(name string, value float64) float64

func (Context) Float64OrInput

func (context Context) Float64OrInput(name string) (float64, error)

func (Context) Float64OrPassword

func (context Context) Float64OrPassword(name string) (float64, error)

func (Context) Int

func (context Context) Int(name string) int

func (Context) Int32

func (context Context) Int32(name string) int32

func (Context) Int32Or

func (context Context) Int32Or(name string, value int32) int32

func (Context) Int32OrInput

func (context Context) Int32OrInput(name string) (int32, error)

func (Context) Int32OrPassword

func (context Context) Int32OrPassword(name string) (int32, error)

func (Context) Int64

func (context Context) Int64(name string) int64

func (Context) Int64Or

func (context Context) Int64Or(name string, value int64) int64

func (Context) Int64OrInput

func (context Context) Int64OrInput(name string) (int64, error)

func (Context) Int64OrPassword

func (context Context) Int64OrPassword(name string) (int64, error)

func (Context) IntOr

func (context Context) IntOr(name string, value int) int

func (Context) IntOrInput

func (context Context) IntOrInput(name string) (int, error)

func (Context) IntOrPassword

func (context Context) IntOrPassword(name string) (int, error)

func (Context) IsSet

func (context Context) IsSet(name string) bool

func (*Context) Name

func (context *Context) Name() string

func (*Context) ShowHelp

func (context *Context) ShowHelp(out io.Writer) error

func (Context) String

func (context Context) String(name string) string

func (Context) StringOr

func (context Context) StringOr(name string, value string) string

func (Context) StringOrInput

func (context Context) StringOrInput(name string) (string, error)

func (Context) StringOrPassword

func (context Context) StringOrPassword(name string) (string, error)

func (Context) UserCacheDir

func (context Context) UserCacheDir() (string, error)

func (Context) UserConfigDir

func (context Context) UserConfigDir() (string, error)

type Float32Option

type Float32Option struct {
	Name         string
	Short        string
	DefaultValue float32
	Description  string
	Usage        string
	ArgUsage     string
}

func (*Float32Option) Apply

func (option *Float32Option) Apply(options map[string]interface{}, args ...string) (int, error)

func (*Float32Option) Help

func (option *Float32Option) Help() [2]string

func (*Float32Option) Keywords

func (option *Float32Option) Keywords() []string

func (*Float32Option) SetDefaultValue

func (option *Float32Option) SetDefaultValue(options map[string]interface{})

type Float64Option

type Float64Option struct {
	Name         string
	Short        string
	DefaultValue float64
	Description  string
	Usage        string
	ArgUsage     string
}

func (*Float64Option) Apply

func (option *Float64Option) Apply(options map[string]interface{}, args ...string) (int, error)

func (*Float64Option) Help

func (option *Float64Option) Help() [2]string

func (*Float64Option) Keywords

func (option *Float64Option) Keywords() []string

func (*Float64Option) SetDefaultValue

func (option *Float64Option) SetDefaultValue(options map[string]interface{})

type Int32Option

type Int32Option struct {
	Name         string
	Short        string
	DefaultValue int32
	Description  string
	Usage        string
	ArgUsage     string
}

func (*Int32Option) Apply

func (option *Int32Option) Apply(options map[string]interface{}, args ...string) (int, error)

func (*Int32Option) Help

func (option *Int32Option) Help() [2]string

func (*Int32Option) Keywords

func (option *Int32Option) Keywords() []string

func (*Int32Option) SetDefaultValue

func (option *Int32Option) SetDefaultValue(options map[string]interface{})

type Int64Option

type Int64Option struct {
	Name         string
	Short        string
	DefaultValue int64
	Description  string
	Usage        string
	ArgUsage     string
}

func (*Int64Option) Apply

func (option *Int64Option) Apply(options map[string]interface{}, args ...string) (int, error)

func (*Int64Option) Help

func (option *Int64Option) Help() [2]string

func (*Int64Option) Keywords

func (option *Int64Option) Keywords() []string

func (*Int64Option) SetDefaultValue

func (option *Int64Option) SetDefaultValue(options map[string]interface{})

type IntOption

type IntOption struct {
	Name         string
	Short        string
	DefaultValue int
	Description  string
	Usage        string
	ArgUsage     string
}

func (*IntOption) Apply

func (option *IntOption) Apply(options map[string]interface{}, args ...string) (int, error)

func (*IntOption) Help

func (option *IntOption) Help() [2]string

func (*IntOption) Keywords

func (option *IntOption) Keywords() []string

func (*IntOption) SetDefaultValue

func (option *IntOption) SetDefaultValue(options map[string]interface{})

type Option

type Option interface {
	SetDefaultValue(map[string]interface{})
	Keywords() []string
	Apply(map[string]interface{}, ...string) (int, error)
	Help() [2]string
}

type StringOption

type StringOption struct {
	Name         string
	Short        string
	DefaultValue string
	Description  string
	Usage        string
	ArgUsage     string
}

func (*StringOption) Apply

func (option *StringOption) Apply(options map[string]interface{}, args ...string) (int, error)

func (*StringOption) Help

func (option *StringOption) Help() [2]string

func (*StringOption) Keywords

func (option *StringOption) Keywords() []string

func (*StringOption) SetDefaultValue

func (option *StringOption) SetDefaultValue(options map[string]interface{})

Jump to

Keyboard shortcuts

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