From 00d12be3f53f0b3029c9a4c80041f3634441387d Mon Sep 17 00:00:00 2001 From: Matthew Rich Date: Mon, 25 Aug 2025 03:53:49 +0000 Subject: [PATCH] add more debug info to schema errors --- internal/schema/schema.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/internal/schema/schema.go b/internal/schema/schema.go index 62cf9e3..3ac7ffb 100644 --- a/internal/schema/schema.go +++ b/internal/schema/schema.go @@ -20,10 +20,10 @@ type Schema struct { schema gojsonschema.JSONLoader } -func New(name string, fs fs.FS) *Schema { +func New(name string, schemaFS fs.FS) *Schema { path := fmt.Sprintf("file://schemas/%s.schema.json", name) - return &Schema{schema: gojsonschema.NewReferenceLoaderFileSystem(path, http.FS(fs))} + return &Schema{schema: gojsonschema.NewReferenceLoaderFileSystem(path, http.FS(schemaFS))} //return &Schema{schema: gojsonschema.NewReferenceLoader(path)} } @@ -36,10 +36,10 @@ func (s *Schema) Validate(source string) error { slog.Info("schema error", "source", source, "schema", s.schema, "result", result, "err", err) return err } - slog.Info("schema.Validate()", "schema", s.schema, "result", result, "err", err) if !result.Valid() { schemaErrors := strings.Builder{} + schemaErrors.WriteString(fmt.Sprintf("source: %s schema: %#v ", source, s.schema)) for _, err := range result.Errors() { schemaErrors.WriteString(err.String() + "\n") } @@ -56,3 +56,11 @@ func (s *Schema) ValidateSchema() error { slog.Info("validate schema definition", "schemaloader", sl, "err", schemaErr) return schemaErr } + +func (s *Schema) Debug(schemaFS fs.FS) { + if files, err := fs.ReadDir(schemaFS, "schemas"); err == nil { + for _, f := range files { + slog.Info("Schema.Debug()", "file", f.Name()) + } + } +}