...

Source file src/golang.conradwood.net/go-easyops/utils/tribool.go

Documentation: golang.conradwood.net/go-easyops/utils

     1  package utils
     2  
     3  import (
     4  	"flag"
     5  	"fmt"
     6  	"strings"
     7  )
     8  
     9  var (
    10  	tribool tribool_t
    11  )
    12  
    13  func Tribool(name, help string) *tribool_t {
    14  	t := &tribool_t{name: name, help: help}
    15  	flag.Var(t, name, help)
    16  	return t
    17  }
    18  
    19  type tribool_t struct {
    20  	name  string
    21  	help  string
    22  	isset bool
    23  	value bool
    24  }
    25  
    26  func (t *tribool_t) Set(s string) error {
    27  	x := strings.ToLower(s)
    28  	if x == "true" || x == "on" {
    29  		t.value = true
    30  	} else if x == "false" || x == "off" {
    31  		t.value = false
    32  	} else {
    33  		return fmt.Errorf("value \"%s\" not valid for a boolean value", s)
    34  	}
    35  	t.isset = true
    36  	return nil
    37  }
    38  func (t *tribool_t) String() string {
    39  	if t == nil {
    40  		return "tribool description"
    41  	}
    42  	if !t.isset {
    43  		return "undefined"
    44  	}
    45  	return fmt.Sprintf("%v", t.value)
    46  }
    47  func (t *tribool_t) Value() string {
    48  	return fmt.Sprintf("%v", t.value)
    49  }
    50  func (t *tribool_t) IsBoolFlag() bool {
    51  	return true
    52  }
    53  
    54  func (t *tribool_t) IsSet() bool {
    55  	return t.isset
    56  }
    57  func (t *tribool_t) BoolValue() bool {
    58  	return t.value
    59  
    60  }
    61  

View as plain text