in sg/internal/policy/package_spec.go [62:91]
func ResolveRuleDocLink(spec PackageSpec, rule Rule) (string, error) {
if spec.Rule == nil || spec.Rule.DocLink == "" {
// not set
return "", nil
}
tmpl, err := template.New("doc-link").Parse(spec.Rule.DocLink)
if err != nil {
return "", fmt.Errorf("parse %q as template: %w", spec.Rule.DocLink, err)
}
var b bytes.Buffer
tmplPayload := map[string]interface{}{
"Name": rule.Name,
"Kind": rule.Kind,
"SourceFileName": "",
}
if rule.SourceLocation != nil {
f := filepath.Base(rule.SourceLocation.File)
f = strings.TrimSuffix(f, filepath.Ext(f))
tmplPayload["SourceFileName"] = f
}
if err := tmpl.Execute(&b, tmplPayload); err != nil {
return "", fmt.Errorf("execute template: %w", err)
}
return b.String(), nil
}