[v3] how to chain multible Sources?
6543 opened this issue · comments
I did expect something like:
cli.StringFlag{
Sources: EnvVars("APP_LANG").Or(Files("/path/to/foo")),
}
or
cli.StringFlag{
Sources: EnvVars("APP_LANG").Chain(Files("/path/to/foo")),
}
as this is not practicable:
&cli.StringFlag{
Name: "grpc-token",
Usage: "server-agent shared token",
Sources: cli.ValueSourceChain{Chain: append(cli.Files(os.Getenv("WOODPECKER_AGENT_SECRET_FILE")).Chain,cli.EnvVars("WOODPECKER_AGENT_SECRET").Chain...)} ,
},
or did I miss something ?
&cli.StringFlag{
Name: "grpc-token",
Usage: "server-agent shared token",
Sources: cli.ValueSourceChain{Chain: {cli.EnvVars("...."), cli.FileVars("...")},
hmm in this regards could we make this issue a feature request to add an function to .Chain()
Sources ?
if you move it behind an interface you can refactor things more easy ...
e.g. the internal Chain
field don't have to be exported ...
or what take do you have on this matter?
&cli.StringFlag{ Name: "grpc-token", Usage: "server-agent shared token", Sources: cli.ValueSourceChain{Chain: {cli.EnvVars("...."), cli.FileVars("...")},
this does not work as SourceChain gen func to return slices ... witch need to be append to return a slice
else you get a slice of slices :/
&cli.StringFlag{ Name: "grpc-token", Usage: "server-agent shared token", Sources: cli.ValueSourceChain{Chain: []cli.ValueSource{cli.Files("...").Chain[0], cli.EnvVars("...").Chain[0]}},
this works but I would call it an hack!
would be a pull welcome to address this?
@6543 This PR fix should allow you to do
&cli.StringFlag{
Name: "grpc-token",
Usage: "server-agent shared token",
Sources: cli.ValueSourceChain{Chain: []cli.ValueSource{cli.Files("..."), cli.EnvVars("...")}},
I might have time and submit some pull just as draft to get some ideas going :)
thanks :)