argparse

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 23, 2024 License: MIT Imports: 9 Imported by: 1

README

Examples

you can check more examples here

basic example

package main

import (
	"fmt"
	"os"

	"github.com/sloweax/argparse"
)

// $ go run . -v -s abc
// verbose=true short=abc long= positional=

// $ go run . -vs xyz
// verbose=true short=xyz long= positional=

// $ go run . -s abc --long 123 xyz
// verbose=false short=abc long=123 positional=xyz

// $ go run . --help
// usage: ./basic [-h] [-v] [-s var] [--long var] [positional]
//
// options:
//     -h, --help     shows usage and exits
//     -v
//     -s var
//     --long var
//     positional

func main() {
	parser := argparse.NewWithDefaults()

	verbose := false
	short := ""
	long := ""
	positional := ""

	parser.AddOption(argparse.Bool("v", &verbose))
	parser.AddOption(argparse.String("s", &short))
	parser.AddOption(argparse.String("long", &long))
	parser.AddOption(argparse.StringPositional("positional", &positional))

	if err := parser.ParseArgs(); err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	fmt.Printf("verbose=%v short=%v long=%v positional=%v\n", verbose, short, long, positional)
}

from struct example

package main

import (
	"fmt"
	"os"

	"github.com/sloweax/argparse"
)

type MyStruct struct {
	// alias accepts a comma separated list of names
	Flag       bool   `alias:"f"`
	LongName   string `alias:"l"`
	Positional string `type:"positional" required:"true"`
	// if name is not specified. it will be auto generated based on field name
	BadNameForOption string `name:"nice-name"`
	// dont add the option below
	Ignored string `ignored:"true"`
}

// go run . --long-name abc -f 123 --nice-name test
// Flag=true
// LongName=abc
// Positional=123
// BadNameForOption=test

func main() {
	ms := MyStruct{}
	parser := argparse.FromStruct(&ms)

	if err := parser.ParseArgs(); err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	fmt.Printf("Flag=%v\n", ms.Flag)
	fmt.Printf("LongName=%v\n", ms.LongName)
	fmt.Printf("Positional=%v\n", ms.Positional)
	fmt.Printf("BadNameForOption=%v\n", ms.BadNameForOption)
}

subparser example

package main

import (
	"fmt"
	"os"

	"github.com/sloweax/argparse"
)

// $ go run . --prefix cool- add file
// adding file cool-file

// $ go run . --prefix very- del bad-file
// deleting file very-bad-file

func main() {
	parser := argparse.New()
	add_parser := argparse.New()
	del_parser := argparse.New()

	parser.AddSubParser("add", add_parser)
	parser.AddSubParser("del", del_parser)

	prefix := ""
	parser.AddOption(argparse.String("prefix", &prefix))

	file := ""
	add_parser.AddOption(argparse.StringPositional("file", &file).SetRequired(true))
	del_parser.AddOption(argparse.StringPositional("file", &file).SetRequired(true))

	if err := parser.ParseArgs(); err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	switch parser.SubParser {
	case add_parser:
		fmt.Printf("adding file %s\n", prefix+file)
	case del_parser:
		fmt.Printf("deleting file %s\n", prefix+file)
	default:
		fmt.Println("nothing to do")
	}
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	BreakLineThreshold = 80
)

Functions

This section is empty.

Types

type ArgParser

type ArgParser struct {
	Name        string
	Description string

	// selected subparser
	SubParser     *ArgParser
	SubParserName string
	// contains filtered or unexported fields
}

func FromStruct

func FromStruct(s any) *ArgParser

func New

func New() *ArgParser

func NewWithDefaults

func NewWithDefaults() *ArgParser

func (*ArgParser) AddOption

func (a *ArgParser) AddOption(opt Option)

func (*ArgParser) AddOptionWithAlias

func (a *ArgParser) AddOptionWithAlias(opt Option, aliases ...string)

func (*ArgParser) AddSubParser

func (a *ArgParser) AddSubParser(name string, p *ArgParser)

func (*ArgParser) Aliases

func (a *ArgParser) Aliases() [][]*Option

func (*ArgParser) LoadStruct

func (a *ArgParser) LoadStruct(s any)

func (*ArgParser) Options

func (a *ArgParser) Options() []*Option

func (*ArgParser) Parse

func (a *ArgParser) Parse(args ...string) error

func (*ArgParser) ParseArgs

func (a *ArgParser) ParseArgs() error

func (*ArgParser) String

func (a *ArgParser) String() string

func (*ArgParser) Unparceable

func (a *ArgParser) Unparceable(callback func(*Context, string, error))

func (*ArgParser) Usage

func (a *ArgParser) Usage() string

type Context

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

func (*Context) Abort

func (c *Context) Abort()

func (*Context) AbortWithError

func (c *Context) AbortWithError(err error)

func (*Context) Next

func (c *Context) Next() string

func (*Context) NextN

func (c *Context) NextN(n int) []string

func (*Context) Option

func (c *Context) Option() *Option

return current option

func (*Context) Peek

func (c *Context) Peek() string

func (*Context) Remain

func (c *Context) Remain() []string

func (*Context) Remaining

func (c *Context) Remaining() int

func (*Context) Skip

func (c *Context) Skip(n int)

type Option

type Option struct {
	Name        string
	Nargs       int
	Positional  bool
	Callback    func(ctx *Context, args ...string)
	Required    bool
	Metavar     string
	Description string
	// contains filtered or unexported fields
}

func Bool

func Bool(name string, v *bool) Option

func Func

func Func(name string, f func()) Option

func Int

func Int(name string, v *int) Option

func IntPositional

func IntPositional(name string, v *int) Option

func Sscanf

func Sscanf(name string, format string, v ...any) Option

func String

func String(name string, v *string) Option

func StringAddr

func StringAddr(name string, v **string) Option

func StringAddrPositional

func StringAddrPositional(name string, v **string) Option

func StringAppend

func StringAppend(name string, v *[]string) Option

func StringAppendPositional

func StringAppendPositional(name string, v *[]string) Option

func StringPositional

func StringPositional(name string, v *string) Option

func StringRest

func StringRest(name string, v *[]string) Option

func StringRestPositional

func StringRestPositional(name string, v *[]string) Option

func Uint

func Uint(name string, v *uint) Option

func (Option) SetAll

func (o Option) SetAll(required bool, description, metavar string) Option

func (Option) SetDescription

func (o Option) SetDescription(val string) Option

func (Option) SetMetavar

func (o Option) SetMetavar(val string) Option

func (Option) SetPositional

func (o Option) SetPositional(val bool) Option

func (Option) SetRequired

func (o Option) SetRequired(val bool) Option

func (*Option) String

func (o *Option) String() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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