tools/config-gen/templates/config.tpl (55 lines of code) (raw):
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// GENERATED CODE - DO NOT EDIT MANUALLY.
package cfg
import (
"time"
"github.com/spf13/pflag"
"github.com/spf13/viper"
)
{{$bt := .Backticks}}
{{range .TypeTemplateData}}
type {{ .TypeName}} struct {
{{- range $idx, $fld := .Fields}}
{{ $fld.FieldName}} {{ $fld.DataType}} {{$bt}}yaml:"{{$fld.ConfigPath}}"{{$bt}}
{{end}}
}
{{end}}
func BuildFlagSet(flagSet *pflag.FlagSet) error {
{{range .FlagTemplateData}}
flagSet.{{ .Fn}}("{{ .FlagName}}", "{{ .Shorthand}}", {{ .DefaultValue}}, {{ .Usage}})
{{if .IsDeprecated}}
if err := flagSet.MarkDeprecated("{{ .FlagName}}", "{{ .DeprecationWarning}}"); err != nil {
return err
}
{{end}}
{{if .HideFlag}}
if err := flagSet.MarkHidden("{{ .FlagName}}"); err != nil {
return err
}
{{end}}
{{if .HideShorthand}}flagSet.ShorthandLookup("{{ .Shorthand}}").Hidden = true{{end}}
{{end}}
return nil
}
func BindFlags(v *viper.Viper, flagSet *pflag.FlagSet) error {
{{range .FlagTemplateData}}
{{if ne .ConfigPath ""}}
if err := v.BindPFlag("{{ .ConfigPath}}", flagSet.Lookup("{{ .FlagName}}")); err != nil {
return err
}
{{end}}
{{end}}
return nil
}