-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflagset_api.go
More file actions
89 lines (66 loc) · 3.47 KB
/
Copy pathflagset_api.go
File metadata and controls
89 lines (66 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package tinyflags
import (
"strings"
"github.com/containeroo/tinyflags/internal/engine"
)
// Parse processes the given CLI args and populates all registered flags.
func (f *FlagSet) Parse(args []string) error {
if f.Usage != nil {
f.impl.Usage = f.Usage
}
return f.impl.Parse(args)
}
// BeforeParse installs a hook to mutate arguments before parsing.
func (f *FlagSet) BeforeParse(fn func([]string) ([]string, error)) {
f.impl.BeforeParse(fn)
}
// OnUnknownFlag installs a handler for unknown flags. Return nil to ignore.
func (f *FlagSet) OnUnknownFlag(fn func(string) error) {
f.impl.OnUnknownFlag(fn)
}
// Name returns the flag set's name.
func (f *FlagSet) Name() string { return f.impl.Name() }
// Version sets the --version string.
func (f *FlagSet) Version(s string) { f.impl.Version(s) }
// VersionText sets the --version text.
func (f *FlagSet) VersionText(s string) { f.impl.VersionText(s) }
// EnvPrefix sets a prefix for all environment variables.
func (f *FlagSet) EnvPrefix(s string) { f.impl.EnvPrefix(s) }
// SetEnvKeyFunc sets a function to derive env keys from prefix+flag name.
func (f *FlagSet) SetEnvKeyFunc(fn engine.EnvKeyFunc) { f.impl.SetEnvKeyFunc(fn) }
// EnvKeyForFlag derives the env key for a flag.
func (f *FlagSet) EnvKeyForFlag(name string) string { return f.impl.EnvKeyForFlag(name) }
// NewReplacerEnvKeyFunc builds an EnvKeyFunc that:
// - returns "" when prefix is empty
// - applies the given replacer to the flag name
// - joins prefix + "_" + transformed name
// - upper-cases the result (if upper is true)
func (f *FlagSet) NewReplacerEnvKeyFunc(replacer *strings.Replacer, upper bool) engine.EnvKeyFunc {
return engine.NewReplacerEnvKeyFunc(replacer, upper)
}
// FirstChanged returns the value of the first changed flag in the given order.
// If no flag was changed, it returns defaultValue and false.
func FirstChanged[T any](defaultValue T, flags ...Flag[T]) (T, bool) {
return engine.FirstChanged(defaultValue, flags...)
}
// IgnoreInvalidEnv disables errors for unrecognized environment values.
func (f *FlagSet) IgnoreInvalidEnv(b bool) { f.impl.IgnoreInvalidEnv(b) }
// SetGetEnvFn overrides the function used to look up environment variables.
func (f *FlagSet) SetGetEnvFn(fn func(string) string) { f.impl.SetGetEnvFn(fn) }
// GlobalDelimiter sets the delimiter used for all slice flags.
func (f *FlagSet) GlobalDelimiter(s string) { f.impl.GlobalDelimiter(s) }
// DefaultDelimiter returns the delimiter used for slice flags.
func (f *FlagSet) DefaultDelimiter() string { return f.impl.DefaultDelimiter() }
// RequirePositional sets how many positional arguments must be present.
func (f *FlagSet) RequirePositional(n int) { f.impl.RequirePositional(n) }
// Args returns all leftover positional arguments.
func (f *FlagSet) Args() []string { return f.impl.Args() }
// Arg returns the i-th positional argument and whether it exists.
func (f *FlagSet) Arg(i int) (string, bool) { return f.impl.Arg(i) }
// SetPositionalValidate sets a function to validate positional arguments.
func (f *FlagSet) SetPositionalValidate(fn func(string) error) { f.impl.SetPositionalValidate(fn) }
// SetPositionalFinalize sets a function to finalize positional arguments.
func (f *FlagSet) SetPositionalFinalize(fn func(string) string) { f.impl.SetPositionalFinalize(fn) }
// OverriddenValues returns all flags that were explicitly set (args or env).
// Dynamic flags use the key format "group.id.flag".
func (f *FlagSet) OverriddenValues() map[string]any { return f.impl.OverriddenValues() }