maddy

Fork https://github.com/foxcpp/maddy

git clone git://git.lin.moe/go/maddy.git

 1package maddycli
 2
 3import (
 4	"flag"
 5
 6	"github.com/urfave/cli/v2"
 7)
 8
 9// extFlag implements cli.Flag via standard flag.Flag.
10type extFlag struct {
11	f *flag.Flag
12}
13
14func (e *extFlag) Apply(fs *flag.FlagSet) error {
15	fs.Var(e.f.Value, e.f.Name, e.f.Usage)
16	return nil
17}
18
19func (e *extFlag) Names() []string {
20	return []string{e.f.Name}
21}
22
23func (e *extFlag) IsSet() bool {
24	return false
25}
26
27func (e *extFlag) String() string {
28	return cli.FlagStringer(e)
29}
30
31func (e *extFlag) IsVisible() bool {
32	return true
33}
34
35func (e *extFlag) TakesValue() bool {
36	return false
37}
38
39func (e *extFlag) GetUsage() string {
40	return e.f.Usage
41}
42
43func (e *extFlag) GetValue() string {
44	return e.f.Value.String()
45}
46
47func (e *extFlag) GetDefaultText() string {
48	return e.f.DefValue
49}
50
51func (e *extFlag) GetEnvVars() []string {
52	return nil
53}
54
55func mapStdlibFlags(app *cli.App) {
56	// Modified AllowExtFlags from cli lib with -test.* exception removed.
57	flag.VisitAll(func(f *flag.Flag) {
58		app.Flags = append(app.Flags, &extFlag{f})
59	})
60}