let the template do the work

This commit is contained in:
Michael Yang 2023-10-17 15:53:46 -07:00
parent 019e4a4558
commit 4dcceeffb7

View file

@ -901,18 +901,17 @@ func ShowModelfile(model *Model) (string, error) {
var mt struct { var mt struct {
*Model *Model
From string From string
Parameters []string Parameters map[string][]any
} }
mt.Parameters = make(map[string][]any)
for k, v := range model.Options { for k, v := range model.Options {
switch v := v.(type) { if s, ok := v.([]any); ok {
case []interface{}: mt.Parameters[k] = s
for _, nv := range v { continue
mt.Parameters = append(mt.Parameters, fmt.Sprintf("%s %v", k, nv))
}
default:
mt.Parameters = append(mt.Parameters, fmt.Sprintf("%s %v", k, v))
} }
mt.Parameters[k] = []any{v}
} }
mt.Model = model mt.Model = model
@ -937,8 +936,10 @@ SYSTEM """{{ .System }}"""
ADAPTER {{ $adapter }} ADAPTER {{ $adapter }}
{{- end }} {{- end }}
{{- range $parameter := .Parameters }} {{- range $k, $v := .Parameters }}
PARAMETER {{ $parameter }} {{- range $parameter := $v }}
PARAMETER {{ $k }} {{ printf "%#v" $parameter }}
{{- end }}
{{- end }}` {{- end }}`
tmpl, err := template.New("").Parse(modelFile) tmpl, err := template.New("").Parse(modelFile)