flag2

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

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

Go to latest
Published: May 30, 2021 License: MIT Imports: 4 Imported by: 2

README

Flag2

A more traditional flag library for the go programming language

What?

A more traditional flag library for the Go programming language. I also have a long history with Python, so the implimentation code looks similar to Python's argparse class.

Why?

I did not like how the flag library that comes with Go parses command line flags.

Differences

  • You can define full word flags with the -- prefix. You can define single character flags with the - prefix.

  • Example of a full word flag: --help

  • Example of a single character flag: -h

  • Single character strings can be grouped, but only for boolean types: -abcd is essentially -a, -b, -c, -d

    • This only works for boolean type flags
  • -- denotes the end of the command line flag options

    • Everything to the right of -- will not be counted as flags

Getting started

To install: go get github.com/ProfOak/flag2

package main

import (
    "os"
    "fmt"
    "github.com/ProfOak/flag2"
)

func main() {
    f := flag2.NewFlag()

    // short flag, long flag, description, default argument
    f.AddString("n", "name", "this flag wants a name as input", "billy")
    f.AddBool("b", "bool", "this flag will store true", false)

    // a help flag is added during the parse step
    options, args := f.Parse(os.Args)

    // A usage method is provided, with details about each flag

    // unfortunate side effect of interfaces
    if options["help"] == true {
        f.Usage()
    }

    fmt.Println()
    if options["name"] != nil {
        fmt.Println("The name is:", options["name"])
    }

    fmt.Println()
    fmt.Println("===== FINAL RESULTS =====")
    fmt.Println("Options:", options)
    fmt.Println("Args:", args)
}

The result of running this program:

go run main.go -b -n ProfOak Extra args

--- Bools ---
-b, --bool      this flag will store true
-h, --help      Display this message and exit

--- Strings ---
-n, --name      this flag wants a name as input

Name is: ProfOak

===== FINAL RESULTS =====
Options: map[help:true bool:true name:ProfOak]
Args: [Extra args]

Reference ./test/test.go for a more detailed example.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FlagStruct

type FlagStruct struct {
	Bools   map[string]boolFlag
	Strings map[string]stringFlag
}

this will carry the potential flags a program can have now we can use the same receiver for adding

func NewFlag

func NewFlag() FlagStruct

func (*FlagStruct) AddBool

func (f *FlagStruct) AddBool(short string, long string, desc string, val bool) error

func (*FlagStruct) AddString

func (f *FlagStruct) AddString(short string, long string, desc string, val string) error

func (FlagStruct) FlagKeys

func (f FlagStruct) FlagKeys() []string

func (FlagStruct) Parse

func (f FlagStruct) Parse(argv []string) (Options, []string)

func (FlagStruct) Usage

func (f FlagStruct) Usage()

type Options

type Options map[string]interface{}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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