func computeFlagTemplateDataForParam()

in tools/config-gen/flag_template_data_gen.go [42:100]


func computeFlagTemplateDataForParam(p Param) (flagTemplateData, error) {
	var defaultValue string
	var fn string
	switch p.Type {
	case "int":
		if p.DefaultValue == "" {
			defaultValue = "0"
		} else {
			defaultValue = p.DefaultValue
		}
		fn = "IntP"
	case "float64":
		if p.DefaultValue == "" {
			defaultValue = "0.0"
		} else {
			defaultValue = p.DefaultValue
		}
		fn = "Float64P"
	case "bool":
		if p.DefaultValue == "" {
			defaultValue = "false"
		} else {
			defaultValue = p.DefaultValue
		}
		fn = "BoolP"
	case "duration":
		if p.DefaultValue == "" {
			defaultValue = "0s"
		} else {
			defaultValue = p.DefaultValue
		}
		dur, err := time.ParseDuration(defaultValue)
		if err != nil {
			return flagTemplateData{}, err
		}
		defaultValue = fmt.Sprintf("%d * time.Nanosecond", dur.Nanoseconds())
		fn = "DurationP"
	case "octal", "logSeverity", "protocol", "resolvedPath":
		fallthrough
	case "string":
		defaultValue = fmt.Sprintf("%q", p.DefaultValue)
		fn = "StringP"
	case "[]int":
		defaultValue = fmt.Sprintf("[]int{%s}", p.DefaultValue)
		fn = "IntSliceP"
	case "[]string":
		defaultValue = fmt.Sprintf("[]string{%s}", p.DefaultValue)
		fn = "StringSliceP"
	default:
		return flagTemplateData{}, fmt.Errorf("unhandled type: %s", p.Type)
	}
	p.DefaultValue = defaultValue
	// Usage string safely escaped with Go syntax.
	p.Usage = fmt.Sprintf("%q", p.Usage)
	return flagTemplateData{
		Param: p,
		Fn:    fn,
	}, nil
}