diff options
| author | 2021-08-12 21:03:24 +0200 | |
|---|---|---|
| committer | 2021-08-12 21:03:24 +0200 | |
| commit | 98263a7de64269898a2f81207e38943b5c8e8653 (patch) | |
| tree | 743c90f109a6c5d27832d1dcef2388d939f0f77a /vendor/github.com/urfave/cli/v2/flag_duration.go | |
| parent | Text duplication fix (#137) (diff) | |
| download | gotosocial-98263a7de64269898a2f81207e38943b5c8e8653.tar.xz | |
Grand test fixup (#138)
* start fixing up tests
* fix up tests + automate with drone
* fiddle with linting
* messing about with drone.yml
* some more fiddling
* hmmm
* add cache
* add vendor directory
* verbose
* ci updates
* update some little things
* update sig
Diffstat (limited to 'vendor/github.com/urfave/cli/v2/flag_duration.go')
| -rw-r--r-- | vendor/github.com/urfave/cli/v2/flag_duration.go | 105 | 
1 files changed, 105 insertions, 0 deletions
diff --git a/vendor/github.com/urfave/cli/v2/flag_duration.go b/vendor/github.com/urfave/cli/v2/flag_duration.go new file mode 100644 index 000000000..22a2e6720 --- /dev/null +++ b/vendor/github.com/urfave/cli/v2/flag_duration.go @@ -0,0 +1,105 @@ +package cli + +import ( +	"flag" +	"fmt" +	"time" +) + +// DurationFlag is a flag with type time.Duration (see https://golang.org/pkg/time/#ParseDuration) +type DurationFlag struct { +	Name        string +	Aliases     []string +	Usage       string +	EnvVars     []string +	FilePath    string +	Required    bool +	Hidden      bool +	Value       time.Duration +	DefaultText string +	Destination *time.Duration +	HasBeenSet  bool +} + +// IsSet returns whether or not the flag has been set through env or file +func (f *DurationFlag) IsSet() bool { +	return f.HasBeenSet +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f *DurationFlag) String() string { +	return FlagStringer(f) +} + +// Names returns the names of the flag +func (f *DurationFlag) Names() []string { +	return flagNames(f.Name, f.Aliases) +} + +// IsRequired returns whether or not the flag is required +func (f *DurationFlag) IsRequired() bool { +	return f.Required +} + +// TakesValue returns true of the flag takes a value, otherwise false +func (f *DurationFlag) TakesValue() bool { +	return true +} + +// GetUsage returns the usage string for the flag +func (f *DurationFlag) GetUsage() string { +	return f.Usage +} + +// GetValue returns the flags value as string representation and an empty +// string if the flag takes no value at all. +func (f *DurationFlag) GetValue() string { +	return f.Value.String() +} + +// Apply populates the flag given the flag set and environment +func (f *DurationFlag) Apply(set *flag.FlagSet) error { +	if val, ok := flagFromEnvOrFile(f.EnvVars, f.FilePath); ok { +		if val != "" { +			valDuration, err := time.ParseDuration(val) + +			if err != nil { +				return fmt.Errorf("could not parse %q as duration value for flag %s: %s", val, f.Name, err) +			} + +			f.Value = valDuration +			f.HasBeenSet = true +		} +	} + +	for _, name := range f.Names() { +		if f.Destination != nil { +			set.DurationVar(f.Destination, name, f.Value, f.Usage) +			continue +		} +		set.Duration(name, f.Value, f.Usage) +	} +	return nil +} + +// Duration looks up the value of a local DurationFlag, returns +// 0 if not found +func (c *Context) Duration(name string) time.Duration { +	if fs := lookupFlagSet(name, c); fs != nil { +		return lookupDuration(name, fs) +	} +	return 0 +} + +func lookupDuration(name string, set *flag.FlagSet) time.Duration { +	f := set.Lookup(name) +	if f != nil { +		parsed, err := time.ParseDuration(f.Value.String()) +		if err != nil { +			return 0 +		} +		return parsed +	} +	return 0 +}  | 
