| 270 | } |
| 271 | |
| 272 | func validateLayoutFile(exts []string, name string) error { |
| 273 | ext := filepath.Ext(name) |
| 274 | if !hasExt(exts, ext) { |
| 275 | return fmt.Errorf("unsupported filename extension '%s'", ext) |
| 276 | } |
| 277 | |
| 278 | nameOnly := strings.TrimSuffix(name, ext) |
| 279 | if !strings.HasSuffix(strings.ToLower(nameOnly), "layout") { |
| 280 | return fmt.Errorf("invalid file name, must be suffixed with 'layout'. e.g. layout%s", ext) |
| 281 | } |
| 282 | |
| 283 | return nil |
| 284 | } |
| 285 | |
| 286 | func placeholderFuncs() template.FuncMap { |
| 287 | return map[string]any{ |