// Package credentialform refuses an offer that does not say the form of its credential: an own secret, an issuer, or // `form` pair or none (the lead, 2026-10-29). It reads every modules/*/module.json through mesh-sdk's // CredentialFormProblems. package credentialform import ( "encoding/json" "fmt" "os" "path/filepath" "sort" "git.novox.be/novox/mesh-sdk/go/catalogue" ) // Problems is every offer of the manifests under root/modules that says no credential form, one line each. func Problems(root string) ([]string, error) { files, err := filepath.Glob(filepath.Join(root, "modules", "*", "module.json")) if err != nil { return nil, err } sort.Strings(files) var out []string for _, f := range files { raw, err := os.ReadFile(f) if err != nil { return nil, err } var m catalogue.Manifest if err := json.Unmarshal(raw, &m); err != nil { return nil, fmt.Errorf("%s: %w", f, err) } out = append(out, catalogue.CredentialFormProblems(m)...) } return out, nil }