args

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

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

Go to latest
Published: Mar 2, 2019 License: MIT Imports: 1 Imported by: 0

README

go-args

Go's argv consumer.

Parser returns pointer to Args, From splits the arguments given into their corresponding Bucket. FromArgv takes arguments from os.Argv.

The initial bucket is DefaultBucket (its just prefix: "--"). If the default Bucket is found in arguments list, all remaining arguments are assigned to the default bucket. Meaning that arguments found before any bucket and any found after DefaultBucket.prefix, are assigned to DefaultBucket

Since each bucket may produce zero or more values, Values returns a *[]string, if response is nil then bucket name is not known. Note that bucket name is prefix concatenated with name.

Note that a bucket like args.WithPrefix("super", "@") must use @super as bucket name to get its values.

Installation

go get github.com/dberstein/go-args

... or to add as requirement to go.mod ...

go mod edit -require github.com/dberstein/go-args@master

Usage

package main

import (
	"fmt"

	"github.com/dberstein/go-args"
)

func main() {
	// Create argument bucket for "--name"
	namesBucket := args.With("name")
	// Create parser with single bucket (note that default bucket "--" is created automatically)
	arguments := args.Parser(namesBucket).FromArgv()
	// Print values found in default and "name" buckets
	for _, bucket := range []string{args.DefaultBucket.Bucket(), namesBucket.Bucket()} {
		fmt.Printf("Bucket %s: %q\n", bucket, *arguments.Values(bucket))
	}
}
go run example.go p1 --name n1 n2 -- p2

would produce:

Bucket --: ["p1", "p2"]
Bucket --name: ["n1", "n2"]
Create arguments
// Create argument "--name"
arg1 := args.With("name")

// Create argument with non-standard prefix
arg2 := args.WithPrefix("name", "%")
Parse arguments
// Create parser for both arguments
parser := args.Parser(arg1, arg2)
Read argument values
// Create []string for "d0 --name n1 n2 %name n3 --name n4 -- d1"
params := []string{"d0", "--name", "n1", "n2", "%name", "n3", "--name", "n4", "--", "d1"}
parser := args.Parser(args.With("name"), args.WithPrefic("name", "%"))
parsed := parser.From(*params)
// For convenience args.FromArgv() processed os.Argv[1:] (drops os.Arv[0])
parsedArgv := parser.FromArgv()

// names1 will be []string{"n1", "n2", "n4"}
names1 := parsed.Values("--name")

// names2 will be []string{"n3"}
names2 := parsed.Values("%name")

// default will be []string{"d0", "d1"}
default := parsed.Values("--")

// For convenience args.FromArgv() processes os.Argv[1:] (drops os.Arv[0])
parsed := parser.FromArgv()

Godoc: https://godoc.org/github.com/dberstein/go-args

Documentation

Overview

Example
// Create argument bucket for "--name"
namesBucket := args.With("name")
// Create parser with single bucket (note that default bucket "--" is created automatically)
arguments := args.Parser(namesBucket).FromArgv()
// Print values found in default and "name" buckets
for _, bucket := range []string{args.DefaultBucket.Bucket(), namesBucket.Bucket()} {
	fmt.Printf("Bucket %s: %q\n", bucket, *arguments.Values(bucket))
}
Output:

go run example.go p1 --name n1 n2 -- p2
Bucket --: ["p1", "p2"]
Bucket --name: ["n1", "n2"]

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Args

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

Args is exported arguments type

func Parser

func Parser(bucket ...*Bucket) *Args

Parser is factory of Arguments

func (*Args) Clear

func (a *Args) Clear() *Args

Clear argument values

func (*Args) From

func (a *Args) From(args *[]string) *Args

From is parser of given args slice

func (*Args) FromArgv

func (a *Args) FromArgv() *Args

FromArgv is parser of given args slice

func (*Args) Has

func (a *Args) Has(name string) (has bool)

Has returns presence of arguments for name

func (*Args) Values

func (a *Args) Values(bucketName string) *[]string

Values returns values for argument bucketName

type Bucket

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

Bucket is argument bucket

var (
	// DefaultBucket is default arguments bucket
	DefaultBucket *Bucket
)

func With

func With(name string) *Bucket

With is bucket with default prefix factory

func WithPrefix

func WithPrefix(name, prefix string) *Bucket

WithPrefix is bucket with given prefix

func (*Bucket) Bucket

func (m *Bucket) Bucket() string

Bucket is full name (with prefix) of bucket

type Buckets

type Buckets []*Bucket

Buckets is array of Bucket pointers

Jump to

Keyboard shortcuts

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